Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II

Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
31.10.2023 13:15:01
Martina
Hallo,
ich habe am 20.10. eine Beitrag zum Versenden eines Anhangs (ursprünglich Excel-xlsm; Anhang als Kopie in xlsx ) per Outlook erstellt. Leider habe ich den Beitrag als gelöst geschlossen und kann nicht mehr auf diesen zugreifen. Deshalb nun als Teil II, sorry. Für mich ist es überhaupt sehr schwierig, mich mit "Beitrag erstellen" und dann auf Antworten zurückzuschreiben zurechtzufinden, dauert immer eine Ewigkeit bis ich antworten kann; weiß nicht ob das an mir liegt oder wies besser geht.

Thema:
die Lösung, die ich dankenswerterweise bekommen habe, funktioniert insgesamt gut. Gerne möchte ich noch einen kleine Verbesserung schaffen, da ich die Datei sehr häufig versenden muss und es jedesmal sehr aufwendig ist, diese in einem ewig langen Pfad zu speichern.

Frage:
kann im unteren Teil bei Sub Kopie speichern eine automatische Speicherung an einem zugewiesenen Pfad durchführen (zB "X:\Allgemein\QM"? Die Massagebox benötige ich nicht, der Dateiname soll der gleiche sein, wie im Anhang (ist jedoch nicht die höchste Priorität, wenn er anders ist, ists auch okay).

Danke!!!


Sub MappeViaOutlookSenden2()
Const AN$ = "max.mustermann@gmx.at"
Const BETREFF$ = "Testdatei"
Const TEXT$ = "Im Anhang die aktuellen Untersuchungsergebnisse."
Const TYP$ = ".xlsx"
Const SEP$ = " "

Dim WbQ As Workbook: Set WbQ = ThisWorkbook
Dim Ol As Object, Eml As Object
Dim Pfad$, Anhang$

Pfad = WbQ.Path & "\"


Anhang = Pfad & Format(Now(), "YYYY-MM-DD_HH-MM_") & " " & Left(WbQ.Name, InStr(1, WbQ.Name, ".") - 1) & SEP & TYP
'WbQ.SaveCopyAs Anhang
WbQ.Save
kopie_speichern Anhang
Set Ol = CreateObject("Outlook.Application")
Set Eml = Ol.CreateItem(0)
With Eml
.To = AN
.Subject = BETREFF & " " & Date
.Attachments.Add Anhang
.Body = ANREDE & vbLf & vbLf & TEXT & vbLf & vbLf & GRUSS
.Display
End With
'Kill Anhang
Set Ol = Nothing
Set Eml = Nothing
End Sub

Sub kopie_speichern(Pfad As String)
Dim objFileDialog As FileDialog
Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)

Application.ScreenUpdating = False
Application.DisplayAlerts = False
With objFileDialog
.FilterIndex = 1 '1 = .xlsx, 10 = .xltm
.InitialFileName = Pfad 'log_pfad & "\BA-Übersicht.xltm"
If .Show Then Call .Execute
End With
Application.DisplayAlerts = True

End Sub

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
31.10.2023 15:43:28
Martina
Okay, danke!
Hier eine Beispieldatei.
https://www.herber.de/bbs/user/163931.xlsm
Anzeige
AW: Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
01.11.2023 04:43:46
Oberschlumpf
Hi Martina,

ich weiß nicht, ob du schon informiert wurdest.
Und ich weiß nicht, ob die nächste Info wichtig für dich ist.

In deiner Bsp-Datei, im Makro "MappeViaOutlookSenden" stehen noch alle echten Mailempfänger drin.
Wenn das nicht so sein soll, solltest du dich mal an Hans wenden (der Betreiber dieses Forums; seine Mailadresse: hans@herber.de (zu finden im Impressum).
Hans könnte dann deine jetzige Bsp-Datei löschen - dann können zumindest nicht noch mehr Interessierte die Datei runterladen.
Wenn das aber nicht wichtig ist, dann musst du natürlich gar nix tun :-)

zu deiner Excel-Frage:

in deinem anderen Makro "MappeViaOutlookSenden2" könnte es da nicht schon reichen, wenn du diese Codezeile...
kopie_speichern Anhang

...änderst in...


kopie_speichern "X:\Allgemein\QM\" & Format(Now(), "YYYY-MM-DD_HH-MM_") & " " & Left(WbQ.Name, InStr(1, WbQ.Name, ".") - 1) & SEP & TYP


Oder hilft meine Idee nicht, weil ich dich nicht verstanden habe?

Ciao
Thorsten
Anzeige
AW: Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
01.11.2023 19:42:52
Martina
Hallo Thorsten,
vielen Dank für die Info!!! Nein, da sollten keinesfalls meine originalen Mailadressen stehen, hab ich wohl übersehen. Ich versuche, die Beispieldatei löschen zu lassen.
Der Code funktioniert leider nicht. Mein Ziel wäre es, dass die Datei xlsm automatisch (ohne Anzeige einer Massagebox, in der ich den Dateinamen eingeben und einen Speicherort auswählen muss) als xlsx in einen vorab festgelegten Ordner speichert ohne diese zu öffnen. Dann soll die E-Mail Nachricht mit dem Anhang als xlsx (zuvor automatisch abgespeichert) geöffnet werden.
Das wäre mein Projekt.
Dennoch danke für deine Mühe und falls dich noch eine Lösung einfällt, freu ich mich.
Lg, Martina
Anzeige
AW: Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
01.11.2023 20:10:33
Oberschlumpf
Hi Martina,

der Code funktioniert nicht?
Ich glaub schon, dass er funktioniert - mit meiner letzten Idee müsste sich zumindest der DateiSpeichernUnter-Dialog zumindest schon mal im Wunschverzeichnis öffnen, oder?

Nun denn, ich hatte nicht verstanden, dass der SpeichernUnter-Dialog ganz wegbleiben soll.

Auch da kann ich helfen...vielleicht :-)

Änder also diesen Code...
kopie_speichern Anhang

...nun um in...


ThisWorkbook.SaveCopyAs "X:\Allgemein\QM\" & Format(Now(), "YYYY-MM-DD_HH-MM_") & " " & Left(WbQ.Name, InStr(1, WbQ.Name, ".") - 1) & SEP & TYP


JETZT müsste aber ohne weiteres Zutun von dir in deinem Wunschverzeichnis eine Kopie deiner Datei gespeichert sein, oder?

Ciao
Thorsten
Anzeige
AW: Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
03.11.2023 06:56:41
Martina
Hallo Thorsten,
danke nochmals für deine Hilfe.
Leider funktioniert der Code nicht, bei .Attachments.Add Anhang kommt die Fehlermeldung.
Ich füge die Datei nochmals an, vielleicht findet sich ja noch eine Lösung.
Den Pfad, unter den die Datei gespeichert werden soll, habe ich im Anhang auf xxxx geändert, wg. Datenschutz.
https://www.herber.de/bbs/user/163997.xlsm
Lg, Martina
AW: Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
03.11.2023 07:20:50
Martina
Unterbei noch ein Beispiel für eine Lösung, an der ich selbst gebastelt habe. Der Haken an der Sache: Empfänger können die Datei nicht öffnen ; wahrscheinlich weil sie an keinem Ort als XLSX abgelegt wurde.


Sub MappeViaOutlookSenden()
Const AN$ = "max.mustermann@beispiel.de"
Const BETREFF$ = "Muster"
Const TEXT$ = "Im Anhang die aktuellen Untersuchungsergebnisse der Muster."
Const TYP$ = ".xlsx"
Const SEP$ = "_"
Dim WbQ As Workbook: Set WbQ = ThisWorkbook
Dim Ol As Object, Eml As Object
Dim Pfad$, Anhang$
Pfad = WbQ.Path & "\"


Anhang = Pfad & Date & " " & Left(WbQ.Name, InStr(1, WbQ.Name, ".") - 1) & SEP & TYP
WbQ.SaveCopyAs Anhang
Set Ol = CreateObject("Outlook.Application")
Set Eml = Ol.CreateItem(0)
With Eml
.To = AN
.Subject = BETREFF & " " & Date
.Attachments.Add Anhang
.Body = ANREDE & vbLf & vbLf & TEXT & vbLf & vbLf & GRUSS
.Display
End With
Kill Anhang
Set Ol = Nothing
Set Eml = Nothing

End Sub





Anzeige
AW: Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
03.11.2023 09:49:18
Oberschlumpf
Hi Martina,

wenn du Code zeigst, nutze bitte den Button "Code pre code" - zu sehen unterhalb vom Button "Beispieldatei hochladen", denn dann würde dein gezeigter Code z Bsp so hier angezeigt werden:



Sub NurBeispiel()

MsgBox "Damit du siehst, wie übersichtlich Code aussehen kann"

End Sub


Nun denn...

Ich hab deine obige Lösung, die du selbst erbastelt hast, ausprobiert (hab als Empfänger-Mailadresse meine eigene eingegeben).

- und ja, ich hab die Mail MIT Anhang problemlos erhalten
- und auch ja, auch ich konnte den Anhang - nicht - öffnen

Deine Vermutung "...an keinem Ort als XLSX abgelegt wurde..." ist aber falsch, da jede Mail mit/ohne Anhang erst mal auf jeden Fall in einer der Outlook-DatenDateien gespeichert wird - so auch die Mail mit Anhang, der sich aber nicht öffnen lässt.

Der Grund ist:
- DU nutzt diese Datei MIT Makros; deswegen als .XLSM-Datei gespeichert...bei dir
- per Code speicherst du eine Kopie dieser Datei aber als .XLSX-Datei
...und hier ist das Problem
- XLSX-Dateien enthalten keine Makros...normalerweise!
- da du aber eine Datei MIT Makros als Datei OHNE Makros speicherst, kommt es hier zu dem Öffnen-Fehler
- denn die XLSX-Datei enthält durch dein Speichern-als-Kopie weiterhin alle Makros
- und deswegen kann diese Datei in Excel nicht geöffnet werden

Lösung (vielleicht)
Bevor ich zur Lösungs-Idee komme, erst mal n paar Fragen:

Müssen die Empfänger wirklich alle Tabellenblätter genau so erthalten, wie diese in der MIT-Makros-Datei gespeichert sind?
Denn DAS würde bedeuten, dass jeder Empfänger auch all die Button sehen würde und anklicken könnte, die eben mit einem Makro verknüpft sind.

Beispiele
Blatt "Start" - Button "Sicherungskopie" - Makro "Sub BackupErstellen()"
Blatt "Start" - Button "E-Mail & Sicherung" - Makro "Sub MappeViaOutlookSenden2()"
Blatt "DOKU" - Button "Aktualisieren & Speichern" - Makro "Sub AktualisierenSpeichern()"

Und vllt noch weitere Button, denen Makros zugewiesen wurden (hab jetzt nicht alle Blätter/Button kontrolliert)

Oder würde es vielleicht auch reichen, wenn die Empfänger nur eine Datei erhalten würden, die eben nur DIE Blätter mit Daten enthalten, um die es dir eigentlich geht?

So fällt mir 1 Lösungsidee ein:

Auf jeden Fall musst du per Code...
...eine ganz neue Exceldatei erstellen!
...jedes Blatt aus der mit-Makros-Datei, welches die Empfänger erhalten sollen, kopieren und in neue Excel Datei einfügen (nur die Daten, ohne Makros!)
...in jedem Blatt muss jeder Button, der mit einem Makro verknüpft ist, gelöscht werden

JETZT könntest du die neue Datei als XLSX-Datei speichern - und diese würde sich auch öffnen lassen, weil sie ja definitiv keine Makros mehr enthält

So, seufz, so viel Text, trotzdem noch nicht alle Fragen beantwortet.
Bis gleich - ich hoffe, du antwortest schnell genug, denn jeder Beitrag wird ja nach ca 1 Woche nach Erstelldatum geschlossen.

Ciao
Thorsten
Anzeige
AW: Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
03.11.2023 10:25:12
Martina
Hallo Thorsten,
wow, du hängst dich ja mächtig rein in mein Thema.
Danke für den Hinweis mit der Formatierung, wusste ich bislang nicht.

Müssen die Empfänger wirklich alle Tabellenblätter genau so erthalten, wie diese in der MIT-Makros-Datei gespeichert sind?
Denn DAS würde bedeuten, dass jeder Empfänger auch all die Button sehen würde und anklicken könnte, die eben mit einem Makro verknüpft sind.

- Nein, die Empfänger müssen keine Buttons verwenden können, sie erhalten das Dokument nur zu lesen und nicht zum Bearbeiten.

Oder würde es vielleicht auch reichen, wenn die Empfänger nur eine Datei erhalten würden, die eben nur DIE Blätter mit Daten enthalten, um die es dir eigentlich geht?
- Empfänger müssten die Datei mit allen Tabellenblättern erhalten.

Und: wenn ich die MakrosDatei (xlsm) händich als xlsx abspeicher, kann ich diese problemlos versenden und diese kann auch ohne weitere Änderungen von den Empfängern geöffnet werden.

Lg


Anzeige
AW: Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
03.11.2023 10:48:19
Oberschlumpf
Hi Martina,

zuerst schreibst du:
"...- Nein, die Empfänger müssen keine Buttons verwenden können..."
Dann schreibst du:
"...- Empfänger müssten die Datei mit allen Tabellenblättern erhalten..."

Wenn Empf keine Button verwenden können sollen, wieso brauchen die dann auch das Blatt "Start", welches ja NUR Button enthält????
Eigtl enthält, bis auf das Blatt "Artikel", jedes Blatt Button - was ist mit all diesen Button?

Vor allem aber interessiert mich, wieso die Empf auch das Blatt "Start" erhalten müssen?

Ciao
Thorsten
AW: Makro: Dateikopie von xlsm zu xlsx + Mail Anhang Teil II
03.11.2023 12:25:15
Martina
Nein, die Buttons werden nicht benötigt, auch die Makros zum Datum einfügen und so nicht.
Aber es müssen alle Tabellenblätter mit den eingefügten Informationen weitergesendet werden; d.h. die gesamte Datei ohne Makros.
Und das Startblatt ist für alle super zum Navigieren (dafür werden ja keinen Makros benötigt); wenn ich die Datei händisch als xlsx abspeichere, dann funktioniert das auch alles so wie ich das haben möchte.
Anzeige
so, puhh, habe fertig - mein hofftl letzter Versuch
04.11.2023 06:29:21
Oberschlumpf
Hi Martina,

hier, probier mal aus
https://www.herber.de/bbs/user/164029.xlsm

Ich mag erst mal gar nicht viel dazu schreiben, nur... :

Beachte unbedingt die Kommentare im Code.

Hilfts denn jetzt?

Ciao
Thorsten
AW: so, puhh, habe fertig - mein hofftl letzter Versuch
06.11.2023 05:48:28
Martina
Guten Morgen Thorsten,
leider nein, bei "With ActiveWorkbook...." im ersten Teil ist leider Schhluss. Habe die Kommentare alle aufmerksam durchgelesen und ggf. geändert (zB korrekter Pfad,...).

Dennoch vielen herzlichen Dank für eine Mühe, du musst ja echt lang dabei gesessen sein.

Ich habe beschlossen, jetzt einen VBA-Kurs zu besuchen :-) ich denke es lohnt sich.

Liebe Grüße und einen schönen Tag,
Martina
Anzeige
versteh ich nich!!!versteh ich nich!!!versteh ich nich!!!
06.11.2023 09:06:13
Oberschlumpf
Hi Martina,

bitte WAS machst du mit meiner Bsp-Datei?????
Hast du eigtl zuerst auch mal die Bsp-Datei getestet - oder - hast du - ohne Test der Bsp-Datei - gleich sofort den neuen Code kopiert und in deine Originaldatei eingefügt????

Teste bitte zuerst meine Bsp-Datei.

Ich hab extra den Gesamt-Code auf drei Teile aufgeteilt, damit alles übersichtlich bleibt.
Und dass es schon IN TEIL EINS zum Fehler in der Zeile "With ActiveWorkbook...." kommt - verstehe ich so gar nicht!
Ist es eigtl genau die "With ActiveWorkbook", bei der es zum Fehler kommt, oder ist es eine der SaveAs-Zeilen, die einen Fehler ausführen???
Wenn Fehler bei "SaveAs...", dann hast du nicht das richtige Verzeichnis, wo genau was gespeichert werden soll, eingetragen! (denn bei mir funktioniert ja alles - ohne Fehler)
Und welcher Fehler genau auftritt, hast du natürlich auch nicht verraten :-/

So, Anleitung - mit Bilder! - nur für dich!

1. Öffne den VBE und setz mit F9 für die Start-Codezeile in TEIL EINS ein Stopp-Signal:

Userbild

das MUSS SO aussehen: 1. Zeile = ROT

2. Klick in Datei, im Blatt "Start" auf den Button namens "E-Mail & Sicherung"

Userbild

3. Es öffnet sich von allein der VBE, und wird so angezeigt:

Userbild

Die vorher "rote Zeile" wird nun in gelb dargestellt

4. Ab jetzt drückst du die Taste F8 (Einzelschrittmodus) so lange, bis diese Zeile gelb markiert ist:

Userbild

5. Bevor...du noch mal auf F8 drückst, lässt du bitte die Variablen lstrNewPathFile UND lstrThisPathFile überwachen:

Userbild

a) zuerst Maus-Rechtsklick auf lstrNewPathFile und mit Maus-Linksklick "Überwachung hinzufügen..." anklicken - es öffnet sich ein kleines Fenster = einfach auf OK klicken
b) alles in a) stehende für lstrThisPathFile wiederholen

6. auch in deinem VBE muss es nun so aussehen:

Userbild

Siehst auch du unten im VBE die Überwachungsausdrücke, deren Inhalt noch immer "" ist?

7. Jetzt drück nur ZWEI MAL erneut auf F8; es muss auch bei dir jetzt so, bzw so ähnlich aussehen:

Userbild

a) das Hauptverzeichnis, in dem die XLSM-Datei gespeichert ist, heißt bei mir "D:\Herber\Martina" - zu sehen in Variable lstrThisPathFile
Bei dir wird sehr wahrscheinlich etwas anderes stehen - das ist auch ok so

b) wichtig ist aber, dass in deinem Hauptverzeichnis ZWEI Unterverzeichnisse existieren müssen! Es muss in deinem Windows-Explorer SO aussehen:

Userbild

Im Verzeichnis, in dem deine XLSM-Datei mit meinem Makro gespeichert ist, muss es also ein Unterverzeichnis namens "Allgemein" geben.
UND im Unterverzeichnis "Allgemein" MUSS es ein weiteres Unterverzeichnis namens "QM" geben.

Ist das bei dir auch so?
Nein? Dann erstell die Verzeichnisse in den Orten wie von mir beschrieben
Ja? Ok, dann lies in 8. weiter :-)

8. Lass nun bitte wieder deinen VBE anzeigen und drück so lange wieder F8, bis es in deinem VBE so aussieht:

Userbild

Bist auch du mit F8 so weit gekommen?

Nein? kommt es wirklich schon in der Zeile With ActiveWorkbook zu einem Fehler? Dann verrat mir bitte die Fehlernummer + -Meldung.
Ja? Cool :-) Weiter gehts mit 9.

9. Drück bitte nun EINMAL auf F8, es muss nun so aussehen:

Userbild

a) die gelbe Zeilenfärbung ist natürlich nur um 1 Zeile weitergesprungen, weil du nur 1x F8 gedrückt hast
b) viel interessanter aber ist...

Userbild

... im Windows-Explorer, im Unter-Unterverzeichnis ...\Allgemein\QM wurde die Datei namens 06.11.2023 Martina2.xlsx gespeichert!

10. So, wechsel wieder zurück zum VBE, und drück so oft F8, bis es auch bei dir so aussieht:

Userbild

TEIL EINS meines Gesamt-Makros hast nun auch du geschafft❗🙃

OODERRRR😯❓❓❓
Nein = wiederhol 1. bis 10. sooo lange, bis du mein "OODERRRR" mit JA beantworten kannst 😀

Ja = TEIL ZWEI + DREI kannst du ja mal allein mit Drücken von F8 weitermachen.

Ich will von dir eine Antwort für meine Anleitung.
Bis gleich! :-)

Ciao
Thorsten

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige