84 Aufrufe
Gefragt in Tabellenkalkulation von peters Mitglied (150 Punkte)

Hallo zusammen,

ich habe folgendes Problem:
Im nachfolgenden Makro rufe ich eine neue E-mail auf inkl. Anhang.
Das Kuriose dabei ist, dass dies bei mir funktioniert, auf einigen Rechnern in der Firma ebenfalls - nur auf 1-2 eben nicht!

Dort kommt dann die Fehlermeldung:
Laufzeitfehler 2147417851 (80010105) Methode "To" für Objekt '_MailItem' ist fehlgeschlagen

Meine eigene Recherche hat nichts bzw. englische Foreneinträge (da bräuchte ich Tage, bis ich das kapiere, was dort geschrieben ist).

Als aktivierte Verweise im VBA-Project habe ich folgendes aktiviert:

- Visual Basic for Applications
- Microsoft Excel 14.0 Object Library
- OLE Automation
- Microsoft Office 14.0 Object Library

Damit läuft es. Auf dem Rechner, auf dem es nicht läuft, ist das Gleiche aktiviert, lediglich ist dort anstatt Version 14 die Version 15.

   If ThisWorkbook.Path = "" Then

        MsgBox "Erst die Datei speichern, dann kann das" & Chr(10) & Chr(10) & "Angebot per E-Mail versendet werden!", 16

    ElseIf Worksheets("Eingabe").Cells(4, 15) = "" Or Worksheets("Eingabe").Cells(4, 15) = "Nummer?" Then

        MsgBox "Es wurde noch keine Angebots-Nr. vergeben!" & Chr(10) & Chr(10) & "Bitte nachholen ...!?", 16

    Else
   
   

' SET Outlook APPLICATION OBJECT.
    Dim objOutlook As Object
    Dim objEmail As Object
    Dim myAttachments As Object

'Datei für PDF definieren
    Dim DateiNameAngebot As String
    DateiNameAngebot = ActiveWorkbook.Path & "\" & Left(ActiveWorkbook.name, InStrRev(ActiveWorkbook.name, ".") - 1) & " - ANGEBOT.pdf"

'Angebotsblatt in PDF exportieren
Worksheets("Angebot").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        DateiNameAngebot, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False

'Variabeln setzen (füllen)
    Set objOutlook = CreateObject("Outlook.Application")
    Set objEmail = objOutlook.CreateItem(0)
    Set myAttachments = objEmail.Attachments
   
 

    ' CREATE EMAIL OBJECT.

    With objEmail
        .To = Worksheets("Eingabe").Cells(9, 21)
        .Subject = "Angebot " & Worksheets("Angebot").Cells(4, 13)
        .Body = Worksheets("Angebot").Cells(9, 2) & Chr(10) & Chr(10) & Worksheets("Angebot").Cells(1, 20) & Chr(10) & Chr(10)
        .GetInspector
        .Display
        .Attachments.Add DateiNameAngebot
    End With

    ' CLEAR.
    Set objEmail = Nothing:    Set objOutlook = Nothing:   Set myAttachments = Nothing:

    End If
   
   

End Sub

Hat jemand eine Idee, wo mein Fehler liegt oder besser, wie ich das gelöst bekommen?

Grüße

Peter

10 Antworten

0 Punkte
Beantwortet von
Hallo Peter

Aktualisiere auf den betroffenen Rachner die Objectbiblotheken!

Auf allen Rechnern gehört die selbe Version!

Gruß Nighty
0 Punkte
Beantwortet von
Hallo Peter

In deinem Fall wohl auf

Microsoft Office 14.0 Object Library

Gruß Nighty
0 Punkte
Beantwortet von

Hallo Peter

Zwecks Einarbeitung!

https://www.vba-tutorial.de/objekte/

Gruß Nighty

0 Punkte
Beantwortet von peters Mitglied (150 Punkte)

Hallo Nighty,

danke für den Tip.  Aber:
Wie aktualisiere ich die Bibliotheken? Und auch: Wie "aktualisiere" ich diese "Rückwärts"?

Grüße

Peter

0 Punkte
Beantwortet von
Hallo Peter

Eine Möglichkeit wäre!

Das Open/Close Ereigniss nutzen!

Open

Verweise auslesen/neu setzen

Close

Verweise zurücksetzen

Code Beispiele gibt es im Netz einiges

Bin leider mittlerweile fast Blind,daher kein Code sondern Weblink's zum einarbeiten!

Gruß Nighty
0 Punkte
Beantwortet von peters Mitglied (150 Punkte)
Hallo Nighty,

ich habe es heute vormittag nochmal getestet. Es stehen 2 Rechner im Büro, beide haben die 15er Libraries.

Bei einem funktioniert der obige Code einwandfrei, bei dem anderen wird der genannte Fehler produziert.
Ich blicke es nicht, woran es sonst liegen sollte.

Grüß

Peter
0 Punkte
Beantwortet von
Hallo Peter

Wenn die Verweis Versionen Identich sind,sollte es eigentlich laufen

Per Ferndiagnose hätte ich dann keine Idee mehr!

oder ,um Störungen auszuschliessen

Auf den betroffenen Rechnern Office deinstallieren

Mit einem Ms Office Cleaner das System säubern(Händich zu aufwendig)

Dann auf die betroffenen Rechnern die selbe Office Version neu aufsetzen

Heutzutage geht das ja recht fix!

Gruß Nighty
0 Punkte
Beantwortet von

Hallo Peter,

bist du denn sicher dass beide Rechner ein deutschsprachiges Office installiert haben? Oder ist vielleicht einer auf Englisch wodurch sich das Listentrennzeichen von Semikolon in Komma verwandelt. Wie viele Empfänger fügst du hinzu? Hast du mal versucht anstelle der To-Eigenschaft die Add-Methode der Recipients-Auflistung zu nutzen?

Mr. K.

...