Вопрос:

Excel, оставляя книгу источника данных открытой после запуска макроса данных копирования / вставки

excel vba excel-vba

328 просмотра

2 ответа

20 Репутация автора

Я очень, очень новичок в VBA. Я пытаюсь автоматически скопировать данные с помощью макроса из 8 динамических «отдельных» рабочих книг, чтобы вставить их в одну основную рабочую книгу, состоящую из 8 вкладок, поскольку эти отдельные книги будут постоянно обновляться различными членами команды.

У меня есть макрос ниже, который работает нормально, но после этого Excel оставляет рабочую книгу источника данных открытой, чтобы не работать с 8 отдельными файлами.

Какой код я могу добавить, чтобы сказать Excel, чтобы автоматически закрывать файл источника данных после запуска микро? Добавление «Рабочих книг (« C: \ Users \ MIRAR \ Desktop \ AD HOC \ DEMO FILE - WIP \ SHARNY.xlsx »). Закрыть» в конце кода, прежде чем End sub не работает и выдает ошибку 9.

Код ниже предназначен для копирования прошлых данных из 1 из 8 рабочих книг на 1 вкладке.

Очень признателен!

Sub CopyingRange()
Workbooks.Open "C:\Users\MIRAR\Desktop\AD HOC\DEMO FILE - WIP\SHARNY.xlsx"

Dim CopyFromBook As Workbook
Dim CopyToWbk As Workbook
Dim ShToCopy As Worksheet

Set CopyFromBook = Workbooks("SHARNY.xlsx")
Set ShToCopy = CopyFromBook.Worksheets("Sheet1")
Set CopyToWbk = Workbooks("Consolidated Tracker File.xlsx")

Workbooks("C:\Users\MIRAR\Desktop\AD HOC\DEMO FILE - WIP\SHARNY.xlsx").Close 

End Sub
Автор: Christelle Источник Размещён: 08.11.2017 11:04

Ответы (2)


2 плюса

2192 Репутация автора

Решение

Краткий ответ:

Workbooks("SHARNY.xlsx").Close

Лучший ответ - работать с переменными, которые прямо указывают на рабочие книги:

Sub CopyingRange()
    Dim CopyFromBook As Workbook
    Dim CopyToWbk As Workbook
    Dim ShToCopy As Worksheet

    Set CopyFromBook = Workbooks.Open("C:\Users\MIRAR\Desktop\AD HOC\DEMO FILE - WIP\SHARNY.xlsx")
    Set ShToCopy = CopyFromBook.Worksheets("Sheet1")
    Set CopyToWbk = Workbooks("Consolidated Tracker File.xlsx")

    CopyFromBook.Close
End Sub
Автор: Excelosaurus Размещён: 08.11.2017 11:09

0 плюса

16554 Репутация автора

Присвойте ее переменной вашей книги и используйте ее для закрытия (или любой другой операции).

Sub CopyingRange()

Dim CopyFromBook As Workbook
Dim CopyToWbk As Workbook
Dim ShToCopy As Worksheet

Set CopyFromBook = Workbooks.Open("C:\Users\MIRAR\Desktop\AD HOC\DEMO FILE - WIP\SHARNY.xlsx")
Set ShToCopy = CopyFromBook.Worksheets("Sheet1")
Set CopyToWbk = Workbooks("Consolidated Tracker File.xlsx")

CopyFromBook.Close

End Sub
Автор: SJR Размещён: 08.11.2017 11:12
32x32