首页 文章

从R启动VBA宏

提问于
浏览
5

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

  • 1

    我找到了解决方案 . 如果你们中的一些人试图从vbscript中调用personnal库,你需要添加:

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

    在启动宏之前 .

  • 0

    您的.vbs中未定义 pathfile

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

    和你的EVIL

    On Error Resume Next
    

    隐藏所有错误 .

    Update wrt comment:

    ("I added On Error Resume Next but now the file is empty") - 你已经是一个邪恶的OERN;你应该删除它 - 然后研究错误信息 - 可能与 .Open 调用的参数有关 .

  • 0

    您正在执行 xlApp.Quit 而不保存并首先关闭工作簿 .

    添加这个:

    xlBook.Save
    xlBook.Close SaveChanges:=False
    

    之前:

    xlApp.Quit
    

    并删除 On Error Resume Next 以查看错误 .

相关问题