Как ссылаться на рабочую книгу, не открывая ее - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу открыть новую рабочую книгу и запустить внутри какой-то макрос, в конце я вставлю результат в новую рабочую книгу.

Я попробовал другой метод для ссылки на путь к другой рабочей книге, потому что мне нужны данные внутриОднако я не могу сделать это правильно. Ниже моя кодировка:

Sub stepTen()
    Dim wbLinelist As String, wsLinelist As String

    wbLlinelist = "C:\Users\abc\Excel\trial\ppp.xlsx"
    wsLinelist = "Sheet1"

    Dim llStyle As Long
    Dim colllStyle, As String

    With Workbooks(wbLlinelist).Worksheets(wsLinelist)
        llStyle = Application.Match("fire", .Rows(1), 0)
        colllStyle = Split(Cells(1, llStyle).Address, "$")(1)
    End With
End Sub

1 Ответ

0 голосов
/ 07 ноября 2019
  1. Dim colllStyle, As String неверный синтаксис, удалите запятую.

  2. Здесь Cells(1, llStyle).Address не указано, в какой книге и рабочей таблице должен быть объект Cells. Он должен начинаться с точки .Cells(…), если вы хотите использовать оператор With или указать рабочую книгу / рабочий лист.

  3. Если Application.Match("fire", .Rows(1), 0) не соответствует, возвращаетсяошибка. Таким образом, вы должны проверить, соответствует ли оно ошибкам, используя функцию IsError :

    If Not IsError(llStyle) Then
        'split
    Else
        'error message
    End If
    
  4. И, наконец, ваша главная проблема заключается в том, что вы не можете использовать полный путь "C:\Users\abc\Excel\trial\ppp.xlsx" в Workbooks(wbLlinelist). Вы должны открыть рабочую книгу, используя Workbooks.Open метод , прежде чем вы сможете получить к ней доступ.

    Dim MyOpenWb As Workbook
    Set MyOpenWb = Application.Workbooks.Open(FileName:=wbLlinelist) 'you might want to open it read only and set the parameter ReadOnly:=True
    
    With MyOpenWb.Worksheets(wsLinelist)
        'your code
    End With
    
  5. Не забудьте закрыть книгу в конце:

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