2016-02-03 4 views
5

Ich versuche derzeit, ein sehr einfaches VBA-Makro von R zu starten. Dazu folge ich dem hier gefundenen Verfahren: Run VBA script from R Leider, wenn ich die Excel-Datei danach öffnen, ist es beschädigt und Excel stoppt. Hier ist mein Code:Starten Sie VBA-Makro von 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 

Sie haben keine Ahnung, was los ist? Ich habe den Pfad jeder Datei überprüft und sie sind gut. Vielen Dank im Voraus.

Edit: Offenbar kommt das Problem aus dem VBScript. Die Datei wird geöffnet, aber das Makro in meiner persönlichen Bibliothek (PERSONAL.XLSB) kann nicht gefunden werden. Wenn ich Excel manuell öffne, kann ich auf dieses Makro zugreifen, aber wenn ich Excel von einem anderen Programm öffne, kann ich nicht. Irgendeine Idee warum?

Pauline

+0

Erhalten Sie Fehlermeldungen? – tospig

+0

Nein, nichts. Ich kann es einfach nicht öffnen, wenn es fertig ist. Excel stoppt, und wenn ich endlich die Datei öffnen kann, hat sich nichts darin geändert (das Makro hat nicht funktioniert). – Pauline

Antwort

0

Ich fand die Lösung.Wenn einige von euch versuchen personnal Bibliothek aus einem vbscript zu nennen, müssen Sie hinzufügen:

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

bevor das Makro starten.

1

pathfile ist in Ihrem vbs definiert:

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

und Ihre EVIL

On Error Resume Next 

alle Fehler versteckt.

Update-WRT Kommentar:

("I On Error Resume Next hinzugefügt, aber jetzt ist die Datei leer") - Sie bereits haben ein EVIL Oern; Sie sollten es entfernen - und dann die Fehlermeldung studieren - wahrscheinlich in Bezug auf die Parameter zum .Open Aufruf.

+0

Vielen Dank für Ihre Antwort. Die Pfaddatei ist im VBScript fest codiert. Ich habe es in der Post geändert, damit Sie nicht den vollständigen Pfad zum Lesen haben. Ich habe On Error Resume Next hinzugefügt, aber jetzt ist die Datei leer ... – Pauline

+0

Oh ja, ich verstehe was du jetzt meinst. Ich bekomme "Unbekannter Ausführungsfehler" (übersetzt aus dem Französischen) – Pauline

0

Sie tun xlApp.Quit ohne Speichern und Schließen der Arbeitsmappe zuerst.

Fügen Sie diese:

xlBook.Save 
xlBook.Close SaveChanges:=False 

Bevor:

xlApp.Quit 

Und entfernen On Error Resume Next Fehler zu sehen.

+0

'xlBook.Close SaveChanges: = False' wird einen Fehler in VBScript verursachen. –

+0

Das ändert nichts .. – Pauline