我目前正在尝试从R启动一个非常简单的VBA宏。为此,我遵循此处的过程:Run VBA script from R 不幸的是,当我打开Excel文件后,它已损坏,Excel停止。 这是我的代码:
library(XLConnect)
saveWorkbook(wb,pathfile)
# The saveWorkbook part is working
shell(shQuote(normalizePath(pathtovbs)), "cscript", flag = "//nologo")
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时,我不能。知道为什么吗?
波林
答案 0 :(得分:1)
pathfile
:
Set xlBook = xlApp.Workbooks.Open(pathfile, 0, True)
和你的EVIL
On Error Resume Next
隐藏所有错误。
更新评论:
(“我添加了On Error Resume Next但现在文件为空”) - 你已经拥有一个EVIL OERN;你应该删除它 - 然后研究错误信息 - 可能与.Open
电话的参数有关。
答案 1 :(得分:0)
您正在执行xlApp.Quit
而不先保存并关闭工作簿。
添加:
xlBook.Save
xlBook.Close SaveChanges:=False
在:
xlApp.Quit
并移除On Error Resume Next
以查看错误。
答案 2 :(得分:0)
我找到了解决方案。如果你们中的一些人试图从vbscript中调用personnal库,则需要添加:
Dim objWorkbook
Set objWorkbook=xlApp.Workbooks.Open("D:\users\...\PERSONAL.XLSB")
启动宏之前。