添加OLEObjects在宏中工作,如果在cmd中作为vbs脚本执行,则会失败



在excel文件(xlsm(中执行的代码可以完美地进行

Sub insertObject()
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("YourPathDatasheet.xlsx")
objExcel.Application.Visible = True
objWorkbook.ActiveSheet.OLEObjects.Add(Filename:="YourPathPlaceholder.txt", _
Link:=False, DisplayAsIcon:=True, IconFileName:= _
"C:Windowssystem32packager.dll", IconIndex:=0, IconLabel:= _
"C:Placeholder.txt").Select
objWorkbook.SaveAs "yourPathtest.xlsx"
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
WScript.Quit
End Sub

这是我尝试使用vbs脚本执行的代码

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("YourPathDatasheet.xlsx")
objExcel.Application.Visible = True
ActiveSheet.OLEObjects.Add(Filename:="YourPathPlaceholder.txt", _
Link:=False, DisplayAsIcon:=True, IconFileName:= _
"C:Windowssystem32packager.dll", IconIndex:=0, IconLabel:= _
"C:Placeholder.txt").Select
objWorkbook.SaveAs "YourPathtest.xlsx"
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
WScript.Quit

我用真正的路径替换了这些路径。当然,代码在宏中运行得很好,但在使用cmd命令运行vbs脚本时失败了。

当我运行您的代码时,我得到了同样的东西。我尝试了一些不同的调整,效果很好:您只是忘记了OLEobject的add函数的第一个参数,并且不要忘记删除参数名称:

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("YourPathDatasheet.xlsx")
objExcel.Application.Visible = false
Set ob = objWorkbook.ActiveSheet.OLEObjects
Set t = ob.Add (,"YourPathPlaceholder.txt",False, True,    "C:Windowssystem32packager.dll", 0,"C:Placeholder.txt")

最新更新