从R启动VBA宏

时间:2016-02-03 11:07:00

标签: r vba excel-vba vbscript excel

我目前正在尝试从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

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时,我不能。知道为什么吗?

波林

3 个答案:

答案 0 :(得分:1)

您的.vbs中未定义

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")

启动宏之前。