Как использовать dim в качестве имени файла в формуле workbooks () - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь создать макрос, который будет копировать диапазон с одного открытого листа (Original.xlsx) на другой открытый лист (Destination.xlsx). Сложность в том, что я хочу, чтобы пользователь мог назвать имя файла excel оригинала (без .xlsx в конце) через поле ввода, и у меня возникли проблемы с комбинированием dim с функцией копирования.

Dim wbdest As Workbook
Dim X As Variant
X = InputBox("Workbook from name?")
Set wbdest = Workbooks(X & ".xlsx")

Workbooks("wbdest").Worksheets("Sheet1").Range("A2:K25").copy
Workbooks("destination.xlsx").Worksheets("Sheet1").Range("A2").PasteSpecial Paste:=xlPasteValues

В поле ввода в этом примере будет введено «Оригинал»

Я получаю ошибку времени выполнения 9, нижний индекс вне диапазона на

Workbooks("wbdest").Worksheets("Sheet1").Range("A2:K25").copy

Ответы [ 2 ]

0 голосов
/ 12 октября 2019

Заменить:

Workbooks("wbdest").Worksheets("Sheet1").Range("A2:K25").copy

на:

wbdest.Worksheets("Sheet1").Range("A2:K25").copy

(могут быть другие ошибки в размещенном вами коде)

0 голосов
/ 12 октября 2019

Лучше всего так сделать;

    Sub test()
    Dim wb1 As Workbook 'declare the workbook
    Dim wb2 As Workbook 'declare the workbook
    Dim strFile As String
        strFile = InputBox("Workbook from name?") 'open up input box for user to type in what workbook they want to copy

    Set wb1 = Workbooks(strFile & ".xlsx") 'set the user defined workbook by name
    Set wb2 = Workbooks("Destination.xlsx") 'set the destination workbook by name

    wb2.Worksheets("Sheet1").Range("A2:K25").Value = wb1.Worksheets("Sheet1").Range("A2:K25").Value 'put the value from userdefined workbook into destination

    End Sub

Старайтесь избегать копирования и вставки, если можете:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...