2009-07-17 12 views
1

D'abord, merci à ceux d'entre vous qui m'ont suggéré d'utiliser "ThisWorkbook.Path". Ça a marché comme sur des roulettes.Réinitialisation de "ThisWorkbook.Path"

Cependant, mon code parcourt sept (7) classeurs et lors de l'utilisation de "ThisWorkbook.Path" je ne peux pas réinitialiser le "This.Workbook". Laissez-moi élaborer.

C'est le classeur où réside Macro:

Workbooks("Financial_Aggregator_v3.xls").Activate 

Ceci est le premier classeur dans lequel le code ajoute un onglet et ne sous-totaux. En gros, ThisWorkbook.Path fonctionne ici:

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

Après avoir fait ce que je dois faire avec « mécanique » Je l'extrait de code de code suivant, qui ne tourne jamais à TRUE:

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

Le code de la fonction , qui travaille pour la feuille « mécanique » est:

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

pour votre information, j'ai essayé de briser tous les différents Workbooks en différents sous(), mais cela ne fonctionne pas. J'ai également triplé le nom des classeurs.

Merci d'avance.

+0

Est-ce que ma suggestion répond à votre question? Est-ce que cela a été résolu? – RBarryYoung

Répondre

3

"ThisWorkbook" dans Excel.VBA est un peu comme "Moi", en ce sens qu'il s'applique uniquement au classeur (.XLS) qui contient réellement le code VBA qui exécute le "ThisWorkbook". Ce que vous devez faire est d'utiliser des objets Workbook pour faire abstraction du classeur que vous souhaitez tester ou manipuler.

Essayez quelque chose comme ceci:

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 
Questions connexes