Как ссылаться на динамическое имя книги - PullRequest
1 голос
/ 28 марта 2019

Это кажется простой проблемой, но я не могу найти решение, которое работает.По сути, в моем коде прямо сейчас рабочая книга жестко закодирована как ее имя.

Однако я хочу иметь возможность изменять имя в зависимости от того, что пользователь вводит в конкретную ячейку;вместо рабочих книг («OH Detail v13»), это будут рабочие книги («все, что находится в ячейке C2 листа FilePath»)

    Dim openbook As Workbook
    Dim xpath As String, xfile As String, xext As String

       xpath = Sheets("FilePath").Range("C2").Value 'This is where there is the workbook name I want to be dynamic
       xfile = "\" & Sheets("FilePath").Range("C3").Value
       xext = ".xlsx"

    Set openbook = Workbooks.Open(xpath & xfile & xext) 'This works
   `This is where I want the dynamic Workbook name:

    Workbooks("OH Detail v13").Sheets("Invoices").Select
    ActiveSheet.PivotTables("Invoices").PivotSelect "", xlDataAndLabel, True
    Selection.Copy 'Copied into the workbook where the code is
    Workbooks("OH Details_v2").Sheets("Data").Range("A1").PasteSpecial Paste:=xlPasteValues

я попытался добавить:

    Dim wsOG As Workbook
    Set wsOG = Workbooks(xpath)

    wsOG.Sheets("Invoices").Select

И это дает мне ошибку: переменная объекта или переменная блока не установлена ​​

1 Ответ

0 голосов
/ 28 марта 2019

Надеюсь, это поможет:

XPath = Sheets("FilePath").Range("C2").Value 'This is where there is the workbook name I want to be dynamic
xfile = Sheets("FilePath").Range("C3").Value
xext = ".xlsx"

'Open a workbook
Set wsOG = Workbooks.Open(XPath & "\" & xfile & xext, UpdateLinks:=False, ReadOnly:=True) 'Parameters are optional

'Set a workbook which is already open
Set wsOG = Workbooks(xfile & xext)

Обратите внимание, что я удалил "\" из переменной xfile, потому что она не будет работать, если вы хотите установить открытую книгу.

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