【发布时间】:2017-12-05 20:50:18
【问题描述】:
我想创建一个 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
谢谢!
【问题讨论】:
-
Save(作为未启用宏的工作簿)是否会导致宏被删除?为什么需要将宏放入工作簿 - 为什么不在 VBS 代码中执行等效操作? -
@YowE3K 我是 VBS 菜鸟。我不需要工作簿中的宏。我想要完成的是对特定列进行排序,然后将几列复制到新文档中(这是通过宏完成的)。我很高兴从 VBS 完成所有这些工作,但缺乏将宏转换为 VBS 的专业知识。我会将宏代码添加到我的初始帖子中。