我目前正在尝试从R启动一个非常简单的VBA宏 . 为此,我遵循此处找到的过程:Run VBA script from R不幸的是,当我打开Excel文件之后,它已损坏并且Excel停止 . 这是我的代码:
r:
library(XLConnect)
saveWorkbook(wb,pathfile)
# The saveWorkbook part is working
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
你知道发生了什么吗?我检查了每个文件的路径,它们很好 . 非常感谢你提前 .
Edit : 显然,问题来自vbscript . 该文件打开但它可以't find the macro located in my personal library (PERSONAL.XLSB). When I open Excel manually, I can access this macro, but when I open Excel from another program, I can' t . 知道为什么吗?
宝莲
3 回答
我找到了解决方案 . 如果你们中的一些人试图从vbscript中调用personnal库,你需要添加:
在启动宏之前 .
您的.vbs中未定义
pathfile
:和你的EVIL
隐藏所有错误 .
Update wrt comment:
("I added On Error Resume Next but now the file is empty") - 你已经是一个邪恶的OERN;你应该删除它 - 然后研究错误信息 - 可能与
.Open
调用的参数有关 .您正在执行
xlApp.Quit
而不保存并首先关闭工作簿 .添加这个:
之前:
并删除
On Error Resume Next
以查看错误 .