[英]VBScript to change Excel macro for all files in a folder
我当前的问题与VBScript遍历Excel文件并更改宏和VBScript以将代码添加到Excel工作簿的问题密切相关。 因此,我要解决的问题是遍历文件夹中的所有Excel文件并更改宏,在某些文件中该宏称为DieseArbeitsmappe
,在某些ThisWorkbook
。 以下代码打开并保存每个Excel,但不更改VBComponent。 问题一定是返回组件的函数,因为我上次发布代码时是在工作。
这是我的实际代码:
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
On Error Resume Next
For Each objFile In objFSO.GetFolder(sFolder).Files
Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name)
Set component = extractedComponent(objWorkbook)
strCode = _
"Sub WorkBook_Open()" & 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
objWorkbook.Close
Set component = Nothing
Set objWorkbook = Nothing
Next
objExcel.Quit
Set objFSO = Nothing
Function extractedComponent(objWorkbook)
Err.Clear
Set comp = objWorkbook.VBProject.VBComponents("DieseArbeitsmappe")
If Err.Number = 0 Then
extractedComponent = comp
Exit Function
Else
Err.Clear
Set altComp = objWorkbook.VBProject.VBComponents("ThisWorkbook")
If Err.Number = 0 Then
extractedComponent = altComp
Exit Function
End If
End If
End Function
Set extractedComponent = comp
Set extractedComponent = altComp
要从函数返回对象,您应该Set
返回值,以便函数调用可以理解它正在返回对象,并且可以正确地将其分配给component
变量。
我还建议打开错误,以便更好地了解可能出现的故障。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.