Повторная инициализация "ThisWorkbook.Path" - PullRequest
1 голос
/ 17 июля 2009

Во-первых, спасибо тем из вас, кто дал мне предложение использовать ThisWorkbook.Path. Это сработало как шарм.

Однако мой код просматривает семь (7) рабочих книг, и при использовании «ThisWorkbook.Path» я не могу повторно инициализировать «This.Workbook». Позвольте мне уточнить.

Это рабочая книга, в которой находится макрос:

Workbooks("Financial_Aggregator_v3.xls").Activate

Это первая рабочая книга, в которой код добавляет вкладку и выполняет промежуточные итоги. В основном, ThisWorkbook.Path работает здесь:

Workbooks("Chapter_7-10_Mechanical.xls").Activate

После выполнения того, что мне нужно сделать с помощью «Механического», у меня есть следующий фрагмент кода, который никогда не оказывается ИСТИННЫМ:

Workbooks("Financial_Aggregator_v3.xls").Activate
If FileThere(ThisWorkbook.Path & Application.PathSeparator & "Chapter_7-90_ECS_1_LLC.xls") Then

Код для функции, которая работает для «Механического» листа:

Function FileThere(FileName As String) As Boolean
    FileThere = (Dir(FileName) > "")
End Function

К вашему сведению, я пытался разбить все рабочие книги на разные подпункты (), но это не сработало. Я также проверил трижды название книг.

Заранее спасибо.

1 Ответ

3 голосов
/ 17 июля 2009

«ThisWorkbook» в Excel.VBA похоже на «Me» в том смысле, что оно применяется только к рабочей книге (.XLS), которая фактически содержит код VBA, выполняющий «ThisWorkbook». Вам нужно использовать объекты Workbook для абстрагирования конкретной книги, которую вы хотите протестировать или манипулировать.

Попробуйте что-то вроде этого:

Public Sub TestWB()
    Dim CurrWB As Workbook

    'To get a workbook into our object variable:'
    Set CurrWB = Workbooks("Chapter_7-10_Mechanical.xls")

    'To Change the .Path:'
    CurrWB.SaveAs NewFileName, AddToMru:=True

End Sub
...