2017-03-09 97 views
0

我目前的问题与问题VBScript to loop through Excel-files and change macroVBScript to add code to Excel workbook密切相关。所以我想解决的问题是遍历文件夹中的所有Excel文件并更改宏,在一些文件中称为DieseArbeitsmappeThisWorkbook。以下代码打开每个Excel并保存它,但不会更改VBComponent。这个问题必须与返回组件的函数有关,因为我上次发布的代码是张贴的。VBScript更改文件夹中所有文件的Excel宏

这是我的实际代码:

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 

回答

0
Set extractedComponent = comp 
Set extractedComponent = altComp 

从函数返回的对象,你应该Set婷的返回值使得函数调用理解它返回一个对象,&能将其正确分配给您的变量component

我还建议打开错误,以便更好地了解可能失败的内容。

相关问题