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 skript öffnen

Forumthread: Excel mit Makro über Powershell skript öffnen

Excel mit Makro über Powershell skript öffnen
20.01.2020 17:30:47
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

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel mit Makro über Powershell skript öffnen
21.01.2020 09:14:58
Steffen
On Error Goto 0
Warum schaltest Du denn das Error-Handling ab?
Error 91 bedeutet, dass die With-Variable nicht festgelegt ist. Heißtfür mich, dass Dein OutlApp.CreateItem(0) nicht erfolgreich ist. Darf denn aus Powershell heraus eine Outlook-Instanz geöffnet werden (Nutzerrechte etc.)? Läuft das Script mit Admin-Rechten?
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel mit Makro über Powershell skript öffnen


Schritt-für-Schritt-Anleitung

  1. Öffne PowerShell als Administrator: Klicke mit der rechten Maustaste auf das PowerShell-Symbol und wähle "Als Administrator ausführen". Dies ist wichtig, da viele Excel- und Outlook-Funktionen Administratorrechte benötigen.

  2. Erstelle das Skript: Verwende den folgenden PowerShell-Befehl, um die Excel-Datei zu öffnen und das Makro auszuführen. Achte darauf, den Pfad zu deiner Excel-Datei anzupassen.

    $excel = New-Object -ComObject Excel.Application
    $workbook = $excel.Workbooks.Open("C:\Pfad\zu\deiner\datei.xlsx")
    $excel.Visible = $true
    $excel.Application.Run("PdfAndMail")
    $workbook.Close($false)
    $excel.Quit()
  3. Fehlerbehandlung: Achte darauf, dass Excel und Outlook korrekt installiert sind. Wenn du auf Fehler wie "Objektvariable nicht festgelegt (Fehler 91)" stößt, überprüfe die Benutzerrechte und das Error-Handling im VBA-Skript.


Häufige Fehler und Lösungen

  • Fehler 91: Objektvariable nicht festgelegt: Dieser Fehler tritt häufig auf, wenn die Outlook-Instanz nicht erfolgreich erstellt wird. Stelle sicher, dass das Skript mit Administratorrechten ausgeführt wird, und überprüfe die Benutzerrechte für Outlook.

  • Makro nicht gefunden: Wenn das angegebene Makro nicht gefunden wird, überprüfe den Namen des Makros und stelle sicher, dass es sich im richtigen Modul befindet.

  • Fehler beim Öffnen der Datei: Stelle sicher, dass der Pfad zur Excel-Datei korrekt ist und dass du die notwendigen Berechtigungen hast, um die Datei zu öffnen.


Alternative Methoden

Wenn du Probleme mit dem Powershell-Skript hast, kannst du die Excel-Datei auch manuell öffnen und das Makro ausführen. Alternativ kannst du auch ein Batch-Skript verwenden, um Excel zu starten und das Makro auszuführen.

start excel.exe "C:\Pfad\zu\deiner\datei.xlsx"

Du kannst dann das Makro über die Excel-Oberfläche ausführen. Dies ist möglicherweise weniger automatisiert, kann aber helfen, wenn du Schwierigkeiten mit dem Powershell-Skript hast.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du das Datum in PowerShell umwandeln kannst, bevor du es in Excel verwendest:

$heute = Get-Date -Format "yyyy-MM-dd"
$excel.Cells.Item(1, 1) = $heute

Mit diesem Befehl kannst du das Datumsformat in Excel anpassen. Dies kann nützlich sein, wenn du Daten aus PowerShell in Excel einfügen möchtest.


Tipps für Profis

  • Powershell-Skripte als Admin ausführen: Wenn du sicherstellen möchtest, dass dein Skript alle nötigen Berechtigungen hat, führe es immer als Administrator aus.

  • Debugging in VBA: Füge Debug.Print Anweisungen in deinem VBA-Code hinzu, um den Status von Variablen zu überprüfen und Fehler schneller zu identifizieren.

  • Verwende Try-Catch in PowerShell: Dies kann dir helfen, Fehler effektiver zu behandeln und zu protokollieren, wenn etwas schiefgeht.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Powershell-Skript korrekt ausgeführt wird? Stelle sicher, dass du das Skript als Administrator ausführst und dass alle Pfade und Variablen korrekt sind.

2. Was tun, wenn ich keine Outlook-Instanz öffnen kann? Überprüfe die Benutzerrechte und stelle sicher, dass Outlook korrekt installiert ist. Es kann auch hilfreich sein, die Sicherheitsrichtlinien deines Unternehmens zu überprüfen.

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