J'ai déjà posté une question étroitement liée la semaine dernière VBScript pour append un code au classur Excel qui a été résolu par un autre programmeur. Mais j'ai rencontré le problème suivant avec cette tâche:
Avec le code suivant, j'essaie de bouger un dossier de files Excel puis de les ouvrir un par un et de changer la macro dans DieseArbeitsmappe
. Cela fonctionne bien pour le premier file, mais le second se termine par ce message d'erreur. Message d'erreur
Set objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
Définir objFSO = CreateObject ("Scripting.FileSystemObject")Set objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
sFolder = "P: \ Administration \ Reports \ operativ \ Tagesbericht \ templates \ START07 \ TestTabsiNeu \"Set objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
Définir objExcel = CreateObject ("Excel.Application")Set objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
objExcel.Visible = TrueSet objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
objExcel.DisplayAlerts = FalseSet objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
Pour chaque objFile dans objFSO.GetFolder (sFolder) .FilesSet objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
Définir objWorkbook = objExcel.Workbooks.Open (sFolder & objFile.Name)Set objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
Set component = objworkbook.VBProject.VBComponents ("DieseArbeitsmappe")Set objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
strCode = _Set objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
"Sub WorkBook_Open () 'just for testing" & vbCr & _Set objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
"Application.Run (" "'CommonMacro.xlsm'! Workbook_Open" ")" & vbCr & _Set objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
"End Sub"Set objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
component.CodeModule.AddFromSsortingng strCodeSet objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
objWorkbook.SaveAs "P: \ Administration \ Reports \ operativ \ Tagesbericht \ templates \ START07 \ TestTabsiNeu \" & objFile.NameSet objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
objExcel.QuitSet objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
Set objWorkbook = NothingSet objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
Set component = NothingSet objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
Définir objFSO = RienSet objFSO = CreateObject("Scripting.FileSystemObject") sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False For Each objFile In objFSO.GetFolder(sFolder).Files Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name) Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe") strCode = _ "Sub WorkBook_Open() 'just for testing" & vbCr & _ " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ "End Sub" component.CodeModule.AddFromSsortingng strCode objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name objExcel.Quit Set objWorkbook = Nothing Set component = Nothing Next Set objFSO = Nothing Set objExcel = Nothing
La ligne 10 est Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe")
Un autre problème auquel je serai bientôt confronté est que parfois le VBComponent
s'appelle ThisWorkbook
. Donc, je vais devoir introduire if-else
fonction du code d'erreur lancé par la ligne 10. Ou y a-t-il une meilleure solution pour cela?
Merci d'avance pour votre aide.
Ce n'est pas une réponse parfaite, car je suis plus confus que je suis certain du problème exact … Cependant, j'espère que cela aidera.
La command objExcel.Quit
va fermer l'application Excel.
Je ne sais pas très bien comment le code (dans la boucle suivante) s'exécute avec succès
Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name)
lorsque l'application objExcel
a été abandonnée. Toutefois, les .Visible
et .DisplayAlerts
ne seront plus définis True / False. Ce dernier pourrait entraîner votre échec dans la ligne 10.
Par conséquent, je suggère de replace
objExcel.Quit
avec
objWorkbook.Close