지난 주 동료 프로그래머가 해결 한 VBScript to add code to Excel workbook과 밀접한 관련 질문을 게시했습니다. 그러나 다음 작업으로 문제가 발생했습니다.VBScript를 사용하여 Excel 파일을 반복하고 매크로를 바꿉니다.
다음 코드를 사용하면 Excel 파일 폴더를 반복하여 하나씩 열고 매크로를 DieseArbeitsmappe
으로 변경하려고합니다. 이 첫 번째 파일을 제대로 작동하지만이 오류 메시지와 함께 두 번째 끝납니다. Error message
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.AddFromString 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
은 곧 직면하게 될 또 다른 문제는 때때로 VBComponent
이 ThisWorkbook
라는 것을 Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe")
입니다 라인 (10)가있다. 그래서 라인 10에 던져진 에러 코드를 기반으로 if-else
을 소개해야합니다. 아니면 더 나은 해결책이 있습니까?
미리 도움을 주셔서 감사합니다.
와
를 교체 제안
라인 (10)에 고장의 원인이 있지만, 당신에게 해당 구성 요소를 반환하는 전용 기능을 작성할 수 있습니다. 오류가 "ThisWorkbook"등을 얻으면 VBComponents ("DieseArbeitsmappe")를 가져 오십시오. –
side note : 'objWorkbook.SaveAs'를 P : \ Administration \ Reports \ operativ \ Tagesbericht \ templates \ START \ 7 \ TestTabsiNeu로 바꿉니다. \ "'with'objWorkbook.SaveAs sFolder' –