Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Outlook Datei auswählen, wie ?

Forumthread: Outlook Datei auswählen, wie ?

Outlook Datei auswählen, wie ?
02.02.2025 17:36:46
philipp
Guten Tag zusammen,
ich habe ein Makro von einem Freund erhalten.
Das Funktioniert einwandfrei aber dazu 2. Fragen:
1. Wie kann ich den Ordner auswählen, damit ich da die Datei auswählen möchte
es sollte eine XML Datei sein, müsste also vor der Frage als PDF eingefügt werden.
2. Wie ich den Bezug zu Mailadresse herstellen, diese steht in "O24".

Public Sub Neu_Orginal_Excel_Workbook_via_Outlook_Senden()


Dim MyMessage As Object, MyOutApp As Object
Dim AWS As String

AWS = ThisWorkbook.FullName
'--------- hier NUR als PDF --------------------------------
If MsgBox(prompt:="Wollen Sie die Mappe als PDF senden?", _
Buttons:=vbYesNo Or vbQuestion, Title:="Abfrage") = vbYes Then
AWS = Mid$(AWS, 1, InStrRev(AWS, ".")) & "pdf"

Call ThisWorkbook.ExportAsFixedFormat(Type:=xlTypePDF, _
Filename:=AWS, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False)


Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "" '
.Subject = "Rechnung: "
.Attachments.Add AWS
.Body = "Hier den Text einsetzen..."
.Display
End With
'------ hier NUR als XLS -------------------------------
Else
If MsgBox(prompt:="Wollen Sie die Mappe als XLSM senden?", _
Buttons:=vbYesNo Or vbQuestion, Title:="Abfrage") = vbYes Then
ThisWorkbook.Save 'als excel

Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "" '
.Subject = "Rechnung: "
.Attachments.Add AWS
.Body = "Hier den Text einsetzen..."
.Display
End With
Else
'---- als PDF und XLS -------------------------------
If MsgBox(prompt:="Sollen PDF und XLS zusammen gesendet werden ?", _
Buttons:=vbYesNo Or vbQuestion, Title:="Abfrage") = vbYes Then

AWS = Mid$(AWS, 1, InStrRev(AWS, ".")) & "pdf"

Call ThisWorkbook.ExportAsFixedFormat(Type:=xlTypePDF, _
Filename:=AWS, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False)

'---- jetzt für xls Datei --------
Dim AWSEXECEL
AWSEXECEL = ThisWorkbook.FullName
'---------------------------------
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = ""
.Subject = "Rechnung: "
.Attachments.Add AWS
.Attachments.Add AWSEXECEL
.Body = "Hier den Text einsetzen..."
.Display
End With
End If
End If
End If

Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub



mfg philipp
Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook Datei auswählen, wie ?
02.02.2025 18:38:33
JoWE
Es muss natürlich
Range("O24").Value
heißen
Anzeige
Leider Fehler
02.02.2025 20:07:15
philipp
Hallo Jochen,
leider Fehlermeldung.
Fehler beim kompilieren.
.to = ThisWorkbook.Sheets.Range("O24").value

mfg philipp
AW: Leider Fehler
02.02.2025 20:19:14
JoWE
So geht's ja auch nicht:
ThisWorkbook.Sheets.Range("O24").value

Da fehlt der Name der Tabelle:
ThisWorkbook.Sheets("Tabelle1").Range("O24").value
So, wenn das Sheet (die Tabelle) z.B. "Tabelle1" heißt !!!


Anzeige
klappt nicht
02.02.2025 20:28:41
philipp
Hallo Jochen,
klappt leider nicht.
.to = ThisWorkbook.Sheets("Tabelle1").Range("O24").value

.to = ThisWorkbook.Sheets(Tabelle1).Range("O24").value

klappt auch nicht.
die Tabelle heißt sonst "Lager1" aber ich habe Tabelle1 genommen, da es auch Lager2 gibt etc.
so bin ich in mit Tabelle1 flexibel.

mfg philipp
Anzeige
AW: klappt nicht
02.02.2025 23:11:42
JoWE
Hallo Philipp,
ließ mir keine Ruhe:
Vielleicht so:

Option Explicit


Public Sub Neu_Orginal_Excel_Workbook_via_Outlook_Senden()

Dim MyMessage As Object, MyOutApp As Object
Dim AWS As String
AWS = ThisWorkbook.FullName

'--------- hier NUR als PDF --------------------------------
If MsgBox(prompt:="Wollen Sie die Mappe als PDF senden?", _
Buttons:=vbYesNo Or vbQuestion, Title:="Abfrage") = vbYes Then
AWS = Mid$(AWS, 1, InStrRev(AWS, ".")) & "pdf"
Call ThisWorkbook.ExportAsFixedFormat(Type:=xlTypePDF, _
Filename:=AWS, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False)
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = ThisWorkbook.Sheets("Lager1").Range("O24").Value
.Subject = "Rechnung: "
.Attachments.Add AWS
.Body = "Hier den Text einsetzen..."
.Display
End With

'------ hier NUR als XLSM -------------------------------
Else
If MsgBox(prompt:="Wollen Sie die Mappe als XLSM senden?", _
Buttons:=vbYesNo Or vbQuestion, Title:="Abfrage") = vbYes Then
ThisWorkbook.Save 'als excel
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = ThisWorkbook.Sheets("Lager1").Range("O24").Value '
.Subject = "Rechnung: "
.Attachments.Add AWS
.Body = "Hier den Text einsetzen..."
.Display
End With
Else

'---- als PDF und XLS -------------------------------
If MsgBox(prompt:="Sollen PDF und XLS zusammen gesendet werden ?", _
Buttons:=vbYesNo Or vbQuestion, Title:="Abfrage") = vbYes Then
AWS = Mid$(AWS, 1, InStrRev(AWS, ".")) & "pdf"
Call ThisWorkbook.ExportAsFixedFormat(Type:=xlTypePDF, _
Filename:=AWS, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False)
'---- jetzt für xls Datei --------
Dim AWSEXECEL
AWSEXECEL = ThisWorkbook.FullName
'---------------------------------
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = ThisWorkbook.Sheets("Lager1").Range("O24").Value
.Subject = "Rechnung: "
.Attachments.Add AWSEXECEL
.Attachments.Add AWS
.Body = "Hier den Text einsetzen..."
.Display
End With
End If
End If
End If
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub

Gruß
Jochen
Anzeige
Ja aber ...
03.02.2025 12:36:44
philipp
Guten Morgen Jochen,
danke erst mal für die Änderung.
Mit dem Makro werden ja nur die aktuelle Excel-Tabelle oder als PDF umgewandelte Datei
direkt in Outlook hinterlegt.
Ich brauch allerdings eine XLM (eRechnung) die im aktuellen Verzeichnis der aktuellen gespeicherten
Excel-Datei als xls liegt.
Hier der Name der XLM Rechnung:
Philipp_25 - 1000_AN.xml

mfg philipp

Anzeige
Hallo Jochen So gehts: .to = Tabelle1.Range("O24").value
02.02.2025 20:31:30
philipp
Puh das ist ja ganz schön ...
Was mache ich jetzt noch mit den anderen Makro, wo und wie einbinden ?

mfg philipp
AW: Hallo Jochen So gehts: .to = Tabelle1.Range("O24").value
02.02.2025 20:45:38
JoWE
Philipp,
werde mich morgen noch mal melden. Bitte lade doch Deine Arbeitsmappe hier hoch.
Beschreibe darin, vielleicht in einer eigenen Tabelle namens "Info für Helfer", doch noch mal genau, was Du erreichen möchtest.
Gruß
Jochen

Anzeige
AW: Hallo Jochen So gehts: .to = Tabelle1.Range("O24").value
03.02.2025 12:43:07
JoWE
Hallo Philipp,
hier mein korrigierender Beitrag zu dem von Dir zusammengestückelten Dateiauswahldialog


Option Explicit

Sub DateiAuswahl()
Dim f As Object
Dim Dateiname As String
Set f = Application.FileDialog(msoFileDialogFilePicker)
With f
.Title = "Mein Dialog" 'Fenstertitel
.AllowMultiSelect = False 'Nur eine Datei auswählbar
.ButtonName = "Auswählen" 'Button Beschriftung
.Filters.Clear 'erst alle Filter löschen
.Filters.Add "MS Office-Dateien", "*.xl*,*.do*,*.mdb, *.accdb" 'Ms Office Dateien, u.a. Excel, Word, Access
.FilterIndex = 2 'einen Filter auswählen
.InitialFileName = "G:\Mein Excel\" 'Startverzeichnis musst Du anpassen
.Show
End With
If f.SelectedItems.Count > 0 Then
Dateiname = f.SelectedItems(1)
MsgBox Dateiname 'zeigt in der MsgBox den mit Click ausgewählten Dateinamen
End If
End Sub

Gruß
Jochen
Anzeige
Auswahl nicht möglich, da eine eRechnung (XLM)
03.02.2025 13:44:16
philipp
Guten Morgten,
leider ist eine Auswahl nicht möglich.
Es ist eine eRechnung im Format "XLM", deswegen wird dies

 With f

.Title = "Mein Dialog" 'Fenstertitel
.AllowMultiSelect = False 'Nur eine Datei auswählbar
.ButtonName = "Auswählen" 'Button Beschriftung
.Filters.Clear 'erst alle Filter löschen
.Filters.Add "MS Office-Dateien", "*.xl*,*.do*,*.mdb, *.accdb" 'Ms Office Dateien, u.a. Excel, Word, Access
.Filters.Add "Excel-Dateien", "*.XLM" 'habe ich eingesetzt
.FilterIndex = 2 'einen Filter auswählen
.InitialFileName = "D:\Rechnungen\2025" 'Startverzeichnis musst Du anpassen
.Show
End With


Ablauf sollte sein:
Outolook öffnen (klappt ja) und dann das entsprechende Verzeichnis um die eRechnung im Format "XLM"
in Outlook "reinzuziehen".
Leider fehlen mir die entsprechenden Kenntnisse.

mfg philipp

Anzeige
AW: Auswahl nicht möglich, da eine eRechnung (XLM)
03.02.2025 14:04:10
JoWE
Ich sags jetzt nochmal:
Lade Deine / eine Beispiel-Arbeitsmappe hoch.
Diese Herumraterei ist einfach nicht hilfreich. Erkläre in der Beispielmappe darin möglichst genau etwas Du eigentlich erreichen willst.
Grüße
Jochen
Ich habe Lösung gefunden -)
03.02.2025 15:46:56
philipp
Hallo Jochen,
ich habe für mich eine Lösung gefunden.

Public Sub XLM_versenden()

Dim lvntTaskId As Variant
Dim strPath$
strPath = Application.Parent.Path
If Right$(strPath, 1) > "\" Then strPath = strPath & "\"
lvntTaskId = Shell(strPath & "OUTLOOK.EXE")
Dim MyMessage As Object, MyOutApp As Object
Dim AWS As String
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = Tabelle1.Range("O24").value
.Subject = "Rechnung: "
'.Attachments.Add AWS
.Body = "Hier den Text einsetzen..."
.Display
End With
'--------------------------------------------
Const ordner = "D:\Rechnungen\2025\02 Februar"
'Const Datei = "D:\" 'Test-0123_ph.xml

Dim objShell As Object
Set objShell = CreateObject("Shell.Application")
objShell.explore ordner ' Ordner öffnen
'objShell.Open Datei ' "Excelfremde Datei" öffnen
End Sub


läuft einwandfrei, brauch nur vom Explorer die XLM Datei in Outlook rüber schieben.
Das einzige was ich gern einbauen würde, im Verzeichnis automatisch das aktuelle Jahr und den aktuellen Monat.


mfg philipp




Anzeige
AW: Ich habe Lösung gefunden -)
03.02.2025 16:01:49
JoWE
Hallo Philipp,

nun, wenn's denn passt, OK!
Ich bin raus.

Viel Erfolg weiterhin
Gruß Jochen
Wo bitte schön einsetzen ?
02.02.2025 20:17:24
philipp
Hallo Jochen,
ich wahrscheinlich nicht so perfekt wie Du in der Makroprogrammierung.
Öffentliche Funktion

DateiName() As String
Dim f As Office.FileDialog
Set f = Application.FileDialog(msoFileDialogFilePicker)

f.Anzeigen

If f.SelectedItems.Count > 0 Then ' Prüfen auf 'Abbrechen'-Button
DateiName = f.SelectedItems(1)
End If
Endfunktion

Öffentliche Funktion
DateiName() As String
Dim f As Office.FileDialog
Set f = Application.FileDialog(msoFileDialogFilePicker)
With f
.Title = "Mein Dialog" 'Fenstertitel
.AllowMultiSelect = False 'Nur eine Datei auswählbar
.ButtonName = "Auswählen" 'Button Beschriftung
.Filters.Clear 'erst alle Filter löschen
.Filters.Add "Excel-Dateien", "*.XLM" 'dann eigene anlegen habe ich eingesetzt
.Filters.Add "Excel-Dateien", "*.xl*" 'dann eigene anlegen
.Filters.Add "Word-Dateien", "*.do*"
.Filters.Add "Access-Dateien ", "*.mdb; *.accdb"
.FilterIndex = 2 'einen Filter auswählen
.InitialFileName = "D:\" 'Startverzeichnis
.Show
End With
If f.SelectedItems.Count > 0 Then
DateiName = f.SelectedItems(1)
End If
Endfunktion


ich habe mein bestehendes Makro im 1. Dialog reinkopiert, ich weiß
nicht wie ich dies einbinden soll.
mfg philipp

Anzeige
Hallo Jochen, danke werde mir das genauer ansehen
02.02.2025 19:44:22
philipp
Guten Abend Jochen,
ich werde mir das genauer ansehen, melde mich.

mfg philipp
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18