从R中启动VBA宏

5
我目前正在尝试从R中启动一个非常简单的VBA宏。为此,我遵循了这里找到的步骤:从R运行VBA脚本 不幸的是,当我在此之后打开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

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时,无法访问。有任何想法吗?

保琳


你有收到任何错误信息吗? - tospig
不,没有什么。我只是在完成后无法打开它。Excel停止工作,当我最终能够打开文件时,其中什么也没有改变(宏没有起作用)。 - Bambs
3个回答

1

pathfile在您的 .vbs 文件中未定义:

Set xlBook =     xlApp.Workbooks.Open(pathfile, 0, True)

和你的邪恶

On Error Resume Next

隐藏所有的错误。

更新:

(“我添加了 On Error Resume Next 但现在文件是空的”)- 你已经一个邪恶的 OERN;你应该将其删除 - 然后研究错误消息 - 可能与.Open调用的参数有关。


谢谢你的回答。pathfile在vbscript中是硬编码的。我在帖子中更改了它,这样你就不必读取完整路径了。我添加了On Error Resume Next,但现在文件是空的... - Bambs
哦,是的,我现在明白你的意思了。我收到了“未知执行错误”(从法语翻译而来)。 - Bambs

1

我找到了解决方案。如果你正在尝试从vbscript调用个人库,你需要添加:

Dim objWorkbook
Set objWorkbook=xlApp.Workbooks.Open("D:\users\...\PERSONAL.XLSB")

在启动宏之前。


0

您在保存和关闭工作簿之前执行了xlApp.Quit

请加入以下代码:

xlBook.Save
xlBook.Close SaveChanges:=False

之前:

xlApp.Quit

移除 On Error Resume Next 以查看错误。


xlBook.Close SaveChanges:=False 在 VBScript 中会导致错误。 - Ekkehard.Horner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接