无需打开Excel即可运行宏

时间:2018-01-02 01:41:03

标签: vba excel-vba vbscript excel

这是我第一次使用VB。我习惯于自动化Excel宏,但由于文件名之间的间距而失败了。如果空间被移除,它工作正常。我读了这个post并使用双引号方法但没有用。

这就是我使用它objExcel.Application.Run "'"C:\Users\account\Desktop\test Folder\vbsExcel.xlsm"'!test.getValue"但是获得

的方式
  

预期结束声明

为错误。我想我用错了方法。

示例路径

objExcel.Application.Run "'C:\Users\account\Desktop\test Folder\vbsExcel.xlsm'!test.getValue"

有效的路径 - 删除文件夹名称中的空格

objExcel.Application.Run "'"C:\Users\account\Desktop\testFolder\vbsExcel.xlsm"'!test.getValue"

试过

objExcel.Application.Run "'C:\Users\account\Desktop\test" + " " + "Folder\vbsExcel.xlsm'!test.getValue"

对于我尝试的内容,它部分有效,因为vbs确实运行了宏。但是,Excel文件正在打开,仅在启用宏时才起作用。 (如果使用示例路径运行,则会发生同样的事情)

我的最终目标是使用示例路径在Excel 中运行宏而不打开excel 文件。 (只是意味着允许文件名中的空格)

完整脚本

Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\Users\account\Desktop\testFolder\vbsExcel.xlsm'!test.getValue"
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing

2 个答案:

答案 0 :(得分:1)

间距没有问题。我设法通过向我的宏添加Application.DisplayAlerts = False来解决我的问题。

运行vbS时,这将关闭警告消息启用宏

这是msdn

  

如果Microsoft Excel在显示某些警报和消息时显示为真   宏正在运行。读/写布尔

答案 1 :(得分:-1)

阅读您引用的页面,尝试以下选项:

.Run """'C:\Users\account\Desktop\testFolder\vbsExcel.xlsm'""" & "!test.getValue"

.Run """C:\Path\Filename""" & "!test.getValue"

.Run """'C:\Path\Filename'!test.getValue"""

他们可能正在谈论“用双引号括起路径”......因为vba使用以下内容:

MsgBox "String" 'Will display: String
MsgBox ""String"" 'Will be in error
MsgBox "" & "String" & "" 'Will display String
MsgBox """String""" 'Will display "String"
MsgBox """"String"""" 'Will be in error
MsgBox """" & "String" & """" 'Will display "String"