Führen Sie Excel-Makros (VBA) aus einer VBScript-Datei aus

Führen Sie Excel-Makros (VBA) aus einer VBScript-Datei aus

Ich habe eine VBS-Datei, die Informationen aus meiner Datenbank zieht und die Daten in eine Excel-Datei (C:\file.csv) exportiert. Sobald dies erledigt ist, führe ich eine Reihe von Makros (VBA) aus, um diese Daten zu formatieren. Diese Makros sind immer gleich, ich kopiere/füge sie normalerweise aus einer Textdatei in die Tabelle ein und führe sie dann manuell aus.

Gibt es eine Möglichkeit, das VBA-Makro in die VBS-Datei einzubinden, sodass die Makros ausgeführt werden, nachdem die Daten in die Tabelle exportiert wurden?Ähnliche Lösungenzeigen, wie manAnrufein vordefiniertes Makro in einer Excel-Datei, wobei ich möchte, dass der Inhalt des Makros in meiner VBS-Datei gespeichert/ausgeführt wird. Dies ist hilfreich, da das VBS eine brandneue Datei erstellt und dann Formatierungsmakros ausführt.

Ich denke, ich muss verwendenSet objWorkbook = objExcel.Workbooks.Open("C:\file.csv")

Antwort1

Sie sind auf dem richtigen Weg. Zunächst müssen Sie eine neue Variable für die Excel.Application mit Late Binding einrichten. Unter diesem Objekt verbergen sich alle normalen Excel-VBA-Goodies. Unten sehen Sie ein Beispiel für ein VBS-Skript, das eine neue Arbeitsmappe öffnet, ein neues Blatt hinzufügt, es „TEST“ nennt und Inhalt in die Zelle A1dieses neuen Blatts einfügt. Wenn es fertig ist, gibt VBS „Fertig“ aus.

Sub createWB()

  'Set the excel application variable
  set xlApp = CreateObject("Excel.Application")

  'Make it visible, or hide it in the background
  xlApp.Application.Visible = true

  'Open a new workbook, for instance
  set xlWB = xlApp.Workbooks.Add()
  xlWB.Activate

  'Add a sheet, name it test, bring it front and center
  set xlSheet = xlWB.Worksheets.Add()
  xlSheet.Name = "TEST"
  xlSheet.Activate

  'Put something in cell A1
  xlSheet.Cells(1,1).value = "TEST CELL CONTENT"

End Sub

'Call the subroutine above
call createWB

WScript.Echo "Finished."
WScript.Quit

Möglicherweise müssen Sie ein wenig an Ihrem vorhandenen VBA-Code herumbasteln, um VBS zum Laufen zu bringen, aber Sie werden feststellen, dass das Schreiben Ihrer Makros in VBS genauso funktional ist wie das Schreiben in VBA.

Antwort2

Vor einiger Zeit habe ich dies versucht füreinige andere SU-Antworten. Die einzige Möglichkeit, die ich gefunden habe, ist die Verwendung von PowerShell anstelle von VBScript. PowerShell kann jeden VBA-Befehl ausführen. Nur die Syntaxdürfenabweichen.

Ihr VBA-Beispiel als PowerShell-Skript

$excel = New-Object -ComObject excel.application 
$workbook = $excel.Workbooks.Open("C:\file.csv")
$excel.visible = $true

Antwort3

Ich würde die Makros in eine Excel-Vorlage einfügen. Anschließend würde ich in der Vorlage ein Autonew-Makro erstellen, um die CSV-Datei zu importieren und die Formatierungsmakros auszuführen.

Dann würde ich das VBS dazu bringen, die CSV-Datei zu erstellen und zu speichern und eine Excel-Datei basierend auf der Vorlage zu öffnen.

verwandte Informationen