从R中启动VBA宏
从R中启动VBA宏
我目前正在尝试从R中启动一个非常简单的VBA宏。为此,我正在按照这里找到的步骤进行操作:Run VBA script from R。不幸的是,当我打开Excel文件后,它会出现损坏并停止运行。以下是我的代码:
R:
library(XLConnect) saveWorkbook(wb, pathfile) # saveWorkbook部分正常工作 shell(shQuote(normalizePath(pathtovbs)), "cscript", flag = "//nologo")
Vbscript:
Option Explicit On Error Resume Next ExcelMacroExample Sub ExcelMacroExample() Dim xlApp Dim xlBook Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(pathfile, 0, True) xlApp.Run "PERSONAL.XLSB!MyMacro" xlApp.Quit Set xlBook = Nothing Set xlApp = Nothing End Sub
VBA PESONAL.XLSB!MyMacro:
Sub MyMacro() Dim ws As Worksheet For Each ws In Sheets ws.Range("C:C").EntireColumn.Delete ws.Range("A:A").EntireColumn.Delete Next ws End Sub
你有任何想法发生了什么?我已经检查了每个文件的路径,它们都是正确的。非常感谢您的帮助。
编辑:显然,问题出在vbscript上。文件打开了,但它找不到我的个人库(PERSONAL.XLSB)中的宏。当我手动打开Excel时,我可以访问这个宏,但当我从其他程序打开Excel时,我不能。有什么想法为什么会这样?
保琳
问题出现的原因是在.vbs文件中,未定义了pathfile变量。在下面的代码中,pathfile变量未定义:
Set xlBook = xlApp.Workbooks.Open(pathfile, 0, True)
而且,在代码中使用了“On Error Resume Next”语句来隐藏所有错误。这会导致错误被忽略,从而无法定位和解决问题。
解决方法是:
1. 在.vbs文件中定义pathfile变量。可以通过在代码中添加以下语句来定义变量:
pathfile = "your_file_path"
2. 删除“On Error Resume Next”语句,以便能够捕获和处理错误。这样可以查看错误消息,并解决由于.Open调用的参数问题导致的错误。
下面是修复问题的示例代码:
pathfile = "your_file_path" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(pathfile, 0, True)
感谢您的回答。pathfile变量在vbscript中是硬编码的。我在帖子中更改了它,以便您无法读取完整路径。我添加了“On Error Resume Next”语句,但现在文件是空的...
哦,是的,我现在明白您的意思了。我得到了“未知执行错误”的错误消息(从法语翻译而来)。