导入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的专家,所以我希望代码能够工作。 让我知道如果没有。