繁体   English   中英

VBScript更改文件夹中所有文件的Excel宏

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM