我想创建一个 vbs 脚本,它将打开一个 .xlsx 文档,导入一个宏并运行该宏。对于我的使用,.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”,但它似乎没有正确导入或运行宏。只要导入并运行宏,就没有必要打开 report.xlsx(以可见或其他方式)。
编辑
这是宏:
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")
但我原以为它会真正崩溃,而不仅仅是没有正确导入宏。
我怀疑如果您只使用 VBS 中的等效代码,则可以避免使用 VBA 宏:
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 专家,所以我希望代码有效。如果没有,请告诉我。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句