2009-07-17 11 views
1

Zuerst, dank denen von Ihnen, die mir den Vorschlag zur Verwendung von "ThisWorkbook.Path" gaben. Es hat wie ein Zauber funktioniert.Erneutes Initialisieren von "ThisWorkbook.Path"

Allerdings läuft mein Code durch sieben (7) Arbeitsmappen und wenn ich "ThisWorkbook.Path" verwende, kann ich das "This.Workbook" nicht neu initialisieren. Lass mich das ausarbeiten.

Dies ist die Arbeitsmappe, wo die Makro Wohnt:

Workbooks("Financial_Aggregator_v3.xls").Activate 

Dies ist die erste Arbeitsmappe, wo der Code ein Register addiert und tut Teilsummen. Grundsätzlich ThisWorkbook.Path arbeitet hier:

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

Nach tun, was ich brauche mit „Mechanical“ getan, was ich habe den folgenden Code-Schnipsel, die nie stellt sich heraus, TRUE:

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

Der Code für die Funktion , die für die „Mechanical“ Blatt funktioniert, ist:

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

FYI, habe ich versucht, all die verschiedenen Arbeitsmappen in verschiedene Sub() zu brechen, aber das hat nicht funktioniert. Ich habe auch den Namen der Arbeitsmappen dreifach überprüft.

Vielen Dank im Voraus.

+0

mein Vorschlag Ihre Frage beantworten Haben? Wurde das gelöst? – RBarryYoung

Antwort

3

"ThisWorkbook" in Excel.VBA ist eine Art wie "Me", in dem es nur für die Arbeitsmappe (.XLS) gilt, die tatsächlich den VBA-Code enthält, der das "ThisWorkbook" ausführt. Sie müssen Arbeitsmappenobjekte verwenden, um die bestimmte Arbeitsmappe zu abstrahieren, die Sie testen oder bearbeiten möchten.

Probieren Sie etwas wie folgt aus:

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