Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel mit Makro über Powershell öffnen

Forumthread: Excel mit Makro über Powershell öffnen

Excel mit Makro über Powershell öffnen
27.01.2020 14:49:51
Julian
Hallo Zusammen.
ich habe ein Anliegen. Und zwar habe ich ein Powershell Skript welches eine Excel Datei öffnen soll und anschließen das Makro ausführen soll.
Das klappt soweit auch, bis auf, dass ein Fehler erscheint : "Objektvariable nicht festgelegt (Fehler 91)".
Ich weiß nicht wie ich diesen Fehler lösen kann und benötige eure Hilfe.
Anbei der VBA Code:
Sub PdfAndMail()
Dim PdfFileName As String
Dim OutlApp As Object
Dim title, mailTo, mailCc, mailBody As String
title = "Daily Support Report " + Date$
counter = Range("PivotDaten!A1").Value
mailTo = ""
mailCc = ""
mailBcc = "hueskes@itb-pim.de"
mailBody = ""
PdfFileName = "Daily_Support_Report_" + Date$ + ".pdf"
SheetsToMail = Array("Zusammenfassung")
ActiveWorkbook.RefreshAll
Sheets(SheetsToMail).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFileName, Quality:= _
xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
On Error Resume Next
Set OutlApp = GetObject(, "Outlook.Application")
If Err Then
Set OutlApp = CreateObject("Outlook.Application")
IsCreated = True
End If
OutlApp.Visible = True
On Error GoTo 0
With OutlApp.CreateItem(0)
.Subject = title & " Offen: " & counter
.To = mailTo
.CC = mailCc
.Bcc = mailBcc
.Body = mailBody
.Attachments.Add = PdfFileName
On Error Resume Next
.Send
Application.Visible = True
End With
If IsCreated Then OutlApp.Quit
On Error GoTo 0
Set OutlApp = Nothing
Application.OnTime TimeSerial(0, 1, 0), "PdfAndMail"
End Sub

An der Stelle " With OutlApp.CreateItem(0)" kommt der Fehler.
Ich bedanke mich vorab schonmal für die Hilfe.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel mit Makro über Powershell öffnen
27.01.2020 15:43:40
Lutz
Hallo Julian,
erst erstellen und dann ansprechen:
...
Set Mehl= OutlApp.CreateItem(0)
with Mehl
...

AW: Excel mit Makro über Powershell öffnen
27.01.2020 16:23:15
Julian
Jetzt kommt der Fehler beim "Set".
Wie kann ich das beheben?
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel mit Makro über Powershell öffnen


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei über Powershell zu öffnen und ein Makro auszuführen, kannst du folgende Schritte befolgen:

  1. Powershell-Skript erstellen: Erstelle ein Powershell-Skript, das die Excel-Datei öffnet. Verwende dafür den Befehl Start-Process.

    Start-Process "C:\Pfad\zu\deiner\Datei.xlsx"
  2. Excel-Objekt erstellen: In deinem Excel VBA musst du sicherstellen, dass das Excel-Objekt korrekt erstellt wird. Verwende dazu den folgenden VBA-Code:

    Dim xlApp As Object
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
  3. Makro ausführen: Nachdem die Excel-Datei geöffnet wurde, kannst du das Makro mit dem Befehl Run ausführen.

    xlApp.Run "DeinMakroName"
  4. Powershell ausführen: Starte dein Powershell-Skript, um die Excel-Datei zu öffnen und das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler 91: Objektvariable nicht festgelegt: Dies passiert häufig, wenn das Excel-Objekt nicht richtig erstellt oder angesprochen wird. Stelle sicher, dass du das Objekt korrekt initialisierst, wie oben beschrieben.

  • Fehler beim Setzen des Outlook-Objekts: Wenn du beim Set-Befehl einen Fehler erhältst, überprüfe, ob Outlook korrekt installiert ist und ob die Anwendung läuft. Manchmal hilft es, Outlook manuell zu öffnen, bevor du das Skript ausführst.


Alternative Methoden

Eine alternative Methode, um Excel über Powershell zu steuern, ist die Nutzung von Invoke-Expression. Das folgende Beispiel öffnet Excel und führt ein Makro aus:

$excel = New-Object -ComObject Excel.Application
$workbook = $excel.Workbooks.Open("C:\Pfad\zu\deiner\Datei.xlsx")
$excel.Application.Run("DeinMakroName")
$excel.Quit()

Diese Methode kann nützlich sein, wenn du die Kontrolle über die Excel-Instanz benötigst.


Praktische Beispiele

Hier ist ein Beispiel für ein einfaches Powershell-Skript, das eine Excel-Datei öffnet und ein Makro ausführt:

$excel = New-Object -ComObject Excel.Application
$workbook = $excel.Workbooks.Open("C:\Pfad\zu\deiner\Datei.xlsx")
$excel.Application.Run("PdfAndMail")
$excel.Quit()

Stelle sicher, dass der Pfad zur Datei korrekt ist und dass das Makro PdfAndMail in der Excel-Datei vorhanden ist.


Tipps für Profis

  • Debugging: Verwende Debug.Print in deinem VBA-Code, um Fehler schneller zu identifizieren. Dies kann dir helfen, den Status von Variablen zu überprüfen.

  • Objektverwaltung: Achte darauf, dass du deine Objekte (wie Excel und Outlook) nach der Verwendung immer freigibst, um Speicherlecks zu vermeiden. Nutze Set xlApp = Nothing und OutlApp.Quit.

  • Skripte planen: Du kannst Powershell-Skripte auch mit dem Task Scheduler planen, um sie zu bestimmten Zeiten automatisch auszuführen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass Excel über Powershell korrekt geöffnet wird?
Stelle sicher, dass du die richtigen Berechtigungen hast und dass der Pfad zur Excel-Datei korrekt ist.

2. Was mache ich, wenn mein Makro in Excel nicht ausgeführt wird?
Überprüfe, ob das Makro in der Datei vorhanden ist und ob es keine Fehler im VBA-Code gibt, die die Ausführung verhindern.

3. Wie kann ich den Status von Excel während der Ausführung überwachen?
Du kannst xlApp.Visible = True setzen, um die Excel-Anwendung während der Ausführung sichtbar zu machen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige