导入Excelmacros并使用VBS运行它

我想创build一个vbs脚本,将打开一个.xlsx文档,导入一个macros并运行macros。 对于我的使用,.xlsx文档的名称将有所不同 – 所以我可能需要一个通配符的文件名。 这是我迄今为止:

Set xl = CreateObject("Excel.application") xl.Application.Workbooks.Open "\\path\Missed_Scans\Report\Report.xlsx" xl.Application.Visible = True x1.VBProject.VBComponents.Import "\\path\Missed_Scans\Missed_Scans.bas" x1.Save xl.Application.run "'Report.xlsx'!Missed_Scans" Set xl = Nothing 

上面的脚本将打开“report.xlsx”,但似乎没有正确导入或运行macros。 只要macros被导入并运行,report.xlsx就不需要被打开(可见或不可见)。

编辑

这是macros:

 Attribute VB_Name = "Module1" Sub Missed_Scans() Attribute Missed_Scans.VB_ProcData.VB_Invoke_Func = " \n14" ' ' Missed_Scans Macro ' ' Sheets("Incomplete_ASINs").Select ActiveSheet.Range("$A$1:$J$52951").AutoFilter Field:=1, Criteria1:="SDF8" Columns("B:D").Select Selection.Copy Workbooks.Add ActiveSheet.Paste Rows("1:1").Select Application.CutCopyMode = False Selection.AutoFilter ActiveWorkbook.SaveAs Filename:="\\path\Missed_Scans\Report\Missed_Scans.xlsx" _ , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWindow.Close End Sub 

谢谢!

你的代码很可能是由于使用了尚未设置的x1而引起的问题。

你可能打算使用

 Set x1 = xl.Application.Workbooks.Open("\\path\Missed_Scans\Report\Report.xlsx") 

但我会期望,实际上是崩溃而不是不正确的导入macros。


我怀疑你可以避免使用VBAmacros,如果你只是使用VBS中的等效代码:

 Set xl = CreateObject("Excel.application") xl.Application.Visible = True Dim wb1 Set wb1 = xl.Application.Workbooks.Open("\\path\Missed_Scans\Report\Report.xlsx") Dim wb2 Set wb2 = xl.Workbooks.Add wb1.Sheets("Incomplete_ASINs").Range("$A$1:$J$52951").AutoFilter 1, "SDF8" wb1.Sheets("Incomplete_ASINs").Columns("B:D").Copy wb2.Worksheets(1).Paste wb2.Worksheets(1).Rows(1).AutoFilter wb2.SaveAs "\\path\Missed_Scans\Report\Missed_Scans.xlsx", 51, , , , False wb2.Close wb1.close xl.Quit Set xl = Nothing 

注意:我不是VBS的专家,所以我希望代码能够工作。 让我知道如果没有。