使用cmd运行vbs脚本
有人能告诉我为什么如果从excel内执行,下面的VB脚本工作正常,但如果使用cmd执行它将不起作用:cscript c:\ vb \ test.vbs ?.下面是我试图让它使用cmd工作的代码。我使用的是excel .xls(excel 97-2003)。使用cmd运行vbs脚本
Private Sub CopyData()
Dim x
Dim y
'## Open both workbooks first:
Set x = Workbooks.Open("C:\VB\CopyDataTest.xls")
'Now, copy what you want from x:
Sheets("Sheet1").Range("A:B").Copy
Set y = Workbooks.Open("C:\VB\Destination.xls")
'Now, paste to y worksheet:
y.Sheets("Sheet2").Range("A:B").PasteSpecial
'Close x:
y.Close
End Sub
如果您需要从cmd运行脚本,您需要创建一个excel对象。试试这个:
Private Sub CopyData()
Dim x
Dim y
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\VB\Destination.xls", 0, True)
## Open both workbooks first:
Set x = xlApp.Workbooks.Open("C:\VB\Destination.xls")
Now, copy what you want from x:
xlApp.Sheets("Sheet1").Range("A:B").Copy
Set y = xlApp.Workbooks.Open("C:\VB\Destination.xls")
Now, paste to y worksheet:
y.Sheets("Sheet2").Range("A:B").PasteSpecial
Close x:
y.Close
End Sub
CopyData()
感谢代码做我想做的事情,但唯一的事情是,一旦日期成功复制到目标工作簿,源工作簿(即X)由于某种原因被锁定,如果我尝试打开它。任何想法如何避免源工作簿被锁定?谢谢。 – AzMar
@Mnimonic,上面的代码工作正常,但我需要复制更多列(A,B,C,D,E,F,I)到目标工作表。如果我试图复制3栏或更多即时通讯错误:800A03EC(从我的答案评论复制...) – Schwarzie2478
Mnimonic已经为此提供了一个完美的可用解决方法,但一个解释也可能是有用的。
您已经在VBA中编写了一段代码(Visual Basic for Applications)。
您试图运行它VBS(VB Script)
VB脚本不知道办公室和其他库运行Excel内部代码时已经加载。
您需要了解如何与VBscript中办公室的COM接口进行交互。
更好的解决方案现在将是VB.NET编程和与Excel交互里面.NET:
的代码将仍然看起来很熟悉,但它就是微软想你现在做。
注意:您将始终需要在运行脚本的PC上安装Excel! 如果你想避免这种情况,也许看看像Aspose一样没有安装Office的东西...
@Mnimonic,上面的代码工作正常,但我需要复制更多列(A,B,C,D ,E,F,I)到目的地表单。如果我尝试复制3列或更多,即时获取错误:800A03EC – AzMar
Excel如何运行VBS?它只支持VBA –
好吧 - 也许我错了,但文件名是“test.vbs”,我需要使用cmd执行它?通过输入cscript c:\ vb \ test.vbs。 – AzMar
因为这不是VBS,显然cscript不能执行它。该扩展仅用于Windows显示图标并选择要打开文件的应用程序。程序不使用扩展名来知道文件类型。这是VBA,所以从Excel运行将工作 –