2016-02-03 25 views
5

Attualmente sto provando a lanciare una macro VBA molto semplice da R. Per quello, sto seguendo la procedura trovata qui: Run VBA script from R Sfortunatamente, quando apro il file Excel dopo, è corrotto ed Excel fermate. Ecco il mio codice:Avvia macro VBA da R

:

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 

Hai idea di cosa sta succedendo? Ho controllato il percorso di ogni file e sono buoni. Grazie mille in anticipo.

Modifica: Apparentemente, il problema deriva dal vbscript. Il file si apre ma non trova la macro che si trova nella mia libreria personale (PERSONAL.XLSB). Quando apro Excel manualmente, posso accedere a questa macro, ma quando apro Excel da un altro programma, non posso. Qualche idea del perché?

Pauline

+0

Hai ricevuto messaggi di errore? – tospig

+0

No, niente. Non riesco ad aprirlo quando è finito. Excel si ferma, quando posso finalmente aprire il file, non è cambiato nulla (la macro non ha funzionato). – Pauline

risposta

0

Ho trovato la soluzione.Se alcuni di voi stanno cercando di chiamare libreria personnal da un VBScript, è necessario aggiungere:

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

prima di lanciare la macro.

1

pathfile non è definito nei tuoi .vbs:

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

e la tua EVIL

On Error Resume Next 

nasconde tutti gli errori.

Aggiornamento WRT commento:

("ho aggiunto On Error Resume Next, ma ora il file è vuoto") - È già hai un male OERN; dovresti rimuoverlo e quindi studiare il messaggio di errore, probabilmente relativo ai parametri della chiamata .Open.

+0

Grazie per la risposta. il file di percorso è hardcoded in vbscript. L'ho modificato nel post in modo da non avere il percorso completo da leggere. Ho aggiunto On Error Resume Next ma ora il file è vuoto ... – Pauline

+0

Oh sì, capisco cosa intendi ora. Viene visualizzato "Errore di esecuzione sconosciuto" (tradotto dal francese) – Pauline

0

Si sta eseguendo xlApp.Quit senza salvare e chiudere prima la cartella di lavoro.

Aggiungere questo:

xlBook.Save 
xlBook.Close SaveChanges:=False 

Prima:

xlApp.Quit 

E rimuovere On Error Resume Next per vedere gli errori.

+0

'xlBook.Close SaveChanges: = False' causerà un errore in VBScript. –

+0

Questo non cambia nulla .. – Pauline

Problemi correlati