Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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

Hyperlink/ Makrolöschung

Hyperlink/ Makrolöschung
25.10.2013 12:36:50
Sebastian
Hallo Excelprofis,
ich hoffe, Ihr könnt mir wieder einmal mehr mit einem Problem helfen?!
Ein Makro führt folgende Prozedur aus:
----------
Problem 1
Modul1:
1. Das Vorlage-Dokument wird automatisch gespeichert (fester Pfad wird vorgegeben; Datei wird unter Indexerhöhung gespeichert)
2. Die gespeicherte Datei wird anschließend als Email versendet.
Nun würde ich gerne nur den Dateipfad (Hyperlink) versenden.
----------
Problem 2
Modul2:
Das Modul2 ist nach Ausführen von Modul1 in der gespeicherten Datei nicht mehr verfügbar.
Wie kann ich das ändern, dass das Modul2 in der gepeicherten Datei noch verfügbar ist?
Sub Email_senden()
Dim Speicher_Name As String
Dim Subject As String
Dim Zähler As Integer
MsgBox ("Das Dokument wird jetzt automatisch versandt!")
Speicher_Name = "C:\Documents and Settings\Sebastian.Burmann\My Documents\Dokumente\" & "Ä _
nderung" & ".xls"
While Dir(Speicher_Name)  ""
Zähler = Zähler + 1
Speicher_Name = "C:\Documents and Settings\Sebastian.Burmann\My Documents\Dokumente\" &  _
"Änderung" & "_" & "S" & Format(Zähler, "0000") & ".xls"
Wend
Sheets("Tabelle1").Copy 'Kopieren in neues Workbook
ActiveWorkbook.ActiveSheet.Range("Y3").Value = "S" & Format(Zähler, "0000")
Subject = "Änderung" & "_" & "S" & Format(Zähler, "0000") & "_" & Date
Application.DisplayAlerts = False
With ActiveWorkbook
.ActiveSheet.Shapes("Grafik 7").Delete 'Entfernt die Grafik 7 (Email-Button)
.ActiveSheet.Shapes("Textfeld 3").Delete 'Entfernt die Textfeld 3 (Emailtext)
'Nachfolgender Code für Excel >2003
'.SaveAs Filename:=Speicher_Name, FileFormat:=xlExcel8, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
.SaveAs Speicher_Name 'Speichern der Kopie mit Tabelle1
.Close
End With
'Ab hier Email-Prozedur
Dim obNachricht As Object
Dim obMail As Object
Dim htmlBody As String
Dim Emailadressen As String
Set obMail = CreateObject("Outlook.Application")
Set obNachricht = obMail.CreateItem(0)
With obNachricht
.GetInspector
.to = "ABC@abc.com"
.CC = "efg@efg.com"
.Subject = Subject
.htmlBody = "Sehr geehrte Damen und Herren," & vbCrLf _
& vbCrLf _
& "anbei erhalten Sie.... " & vbCrLf _
& vbCrLf _
& vbCrLf _
& "" & vbCrLf _
& "" & .htmlBody
.Attachments.Add Speicher_Name
.ReadReceiptRequested = False 'Gelesen-Bestätigung anfordern
.Display 'Email vor dem Senden öffnen
End With
Set obNachricht = Nothing
Set obMail = Nothing
Application.DisplayAlerts = True
MsgBox ("Das Dokument wurde versandt und wird bearbeitet!" & Chr(13) & "Datei wird  _
geschlossen ohne zu speichern!" & Chr(13) & "Vielen Dank!")
ActiveWindow.Close saveChanges:=False
ActiveWorkbook.Close saveChanges:=False
End Sub
Vielen, vielen Dank im Voraus und ein schönes WE...! :-)

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hyperlink/ Makrolöschung
26.10.2013 15:47:31
Sebastian
Kann keiner einem armen Studenten helfen? :-((

AW: Hyperlink/ Makrolöschung
26.10.2013 16:31:23
Tino
Hallo,
den Hyperlink für den Mailbody kannst Du so erstellen.
strHTMLLink = "<p></p><p></p><a href='" & _
                Speicher_Name & "'>" & _
                Right$(Speicher_Name, Len(Speicher_Name) - InStrRev(Speicher_Name, "\")) & _
                "</a><p></p><p></p>"
und dann zBsp. so einbauen.
    With obNachricht
        .GetInspector
        .to = "ABC@abc.com"
        .CC = "efg@efg.com"
        .Subject = Subject
        
        .htmlBody = "Sehr geehrte Damen und Herren,</a><p></a><p>" & _
                 "anbei erhalten Sie die Datei" & _
                 strHTMLLink & _
                .htmlBody
        
        .ReadReceiptRequested = False 'Gelesen-Bestätigung anfordern 
        .Display 'Email vor dem Senden öffnen 
    End With
Deine zweite Frage kann ich ohne Testdatei nicht nachvollziehen.
Gruß Tino

Anzeige
AW: Hyperlink/ Makrolöschung
28.10.2013 08:30:06
Sebastian
Hallo Tino,
vielen Dank für deine super Antwort. Habe ich gerade umgesetzt und funktioniert super.
Ein kleines Problem besteht aber jetzt...
Die generierte Email hat unterschiedeliche Schriftarten (siehe Anhang)
Userbild
Meine 2. Frage zielt auf die Weitergabe der Makros an die gespeicherte Datei ab.
Wenn ich die versendete Email öffne, sind die Makrocodes nicht mehr greifbar. Heißt also, dass das Modul 1 und Modul 2 gelöscht wurde. Woran liegt das?
Eine Beispieldatei lade ich gleich hoch... :-)

Anzeige
AW: Hyperlink/ Makrolöschung
28.10.2013 09:07:24
Tino
Hallo,
Du kannst ja noch Formatierung vornehmen.
zBsp. so.
.htmlBody = "<body>Sehr geehrte Damen und Herren,</a><p></a><p>" & _
            "anbei erhalten Sie die Datei" & _
            strHTMLLink & _
            .htmlBody & "</body>"
Dazu kannst Du auch mal hier nachschauen.
http://de.selfhtml.org/css/eigenschaften/schrift.htm#allgemeines
Zu Deiner zweiten Frage, wegen den Modulen ist ja eigentlich klar.
Du kopierst nur die Tabelle in eine neue Datei, Du müsstest die komplette Datei speichern.
zBsp. SaveCopyAs verwenden, Datei öffnen, alles unnötige löschen speichern und versenden.
Gruß Tino

Anzeige
AW: Hyperlink/ Makrolöschung
28.10.2013 11:02:31
Tino
Hallo,
stelle den Code aus dem Modul2 den Du noch brauchst in die Tabelle die Du kopierst.
Habe mal so angepasst, Speicherpfad im Code müsstest Du noch anpassen.
https://www.herber.de/bbs/user/87843.xls
Gruß Tino

AW: Hyperlink/ Makrolöschung
29.10.2013 08:35:20
Sebastian
Hallo Tino,
vielen, vielen Dank für deine super Arbeit!!!
Funktioniert alles nach meinen Vorstellungen!!! 1000 Dank!!!
Darf ich deine VBA-Kenntnisse noch einmal in Anspruch nehmen?
Wenn ja, dann habe ich nochmals folgende Frage:
Die Datei, die nach dem Emailversand generiert wurde, hat nun den Namen "Änderung_S0001"
Wenn ich dann den letzten Button "Freigabe", der geöffneten Datei "Änderung_S0001", ausführe, soll die Datei den Namen Änderung_S0001_F0001 bekommen. Also auch einen fortlaufender Automatismus. Ich habe jetzt schon ein paar Stunden "rumgefuscht" aber nichts brauchbare hinbekommen...! Vielleicht hast du ja eine Idee oder einen Lösungsansatz für mich?
Es handelt sich um den Code deiner hochgeladenen Datei aus Tabelle 1 ( https://www.herber.de/bbs/user/87843.xls ).
Vielen, vielen Dank schon mal im Voraus...:-)

Anzeige
AW: Hyperlink/ Makrolöschung
29.10.2013 12:12:59
Tino
Hallo,
kannst mal diesen Code testen, den Pfad für die Freigabedatei noch anpassen.
Sub Freigabe()
Dim strPath As String, NewFileName$
Dim varFilename, varZusatz
Dim i As Integer, iMSG As Integer
'Pfad anpassen 
strPath = "G:\1 Forum\tmpMail\"

If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"
varFilename = Split(ThisWorkbook.Name, ".")
varZusatz = Split(varFilename(0), "_")
varZusatz = varZusatz(Lbound(varZusatz)) & "_" & varZusatz(Lbound(varZusatz) + 1)

i = 1
NewFileName = strPath & varZusatz & "_F" & Format(i, "0000") & "." & varFilename(1)
Do While Dir(NewFileName, vbNormal) <> ""
    If iMSG = 0 Then
        iMSG = MsgBox("Datei '" & varZusatz & "_F" & Format(i, "0000") & "." & varFilename(1) & _
               "' schon vorhanden!" & vbCr & "Diese Überschreiben?", vbQuestion + vbYesNo)
    End If
    If iMSG = vbYes Then Exit Do
    i = i + 1
    NewFileName = strPath & varZusatz & "_F" & Format(i, "0000") & "." & varFilename(1)
Loop
Application.DisplayAlerts = False

ThisWorkbook.SaveAs NewFileName, FileFormat:=xlWorkbookNormal, _
            Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
            
Application.DisplayAlerts = True
ActiveWorkbook.Close
End Sub
Gruß Tino

Anzeige
AW: Hyperlink/ Makrolöschung
29.10.2013 12:36:22
Sebastian
Hallo Tino,
vielen Dank für deine perfekte Ausarbeitung! Der Code funktioniert auf Anhieb.
Was mir aber leider hierbei fehlt ist, dass die "F0000" Nr. fortlaufend sein soll, egal wie der Name der Datei vorher ist/war. Wenn z.B. die Datei in dem Freigabeordner "Änderung_S0003_F0005" heißt, dann anschließend die nachfolgende Freigabe-Datei z.B. "Änderung_S0004_F0006" heißt.
Ist das möglich?
Ich weiß garnicht, wie
ich dir danken soll :-)

AW: Hyperlink/ Makrolöschung
29.10.2013 22:07:13
Tino
Hallo,
kannst mal so versuchen.
Die Msgbox brauchen wir dann nicht mehr!
Sub Freigabe()
Dim strPath As String, NewFileName$
Dim varFilename, varZusatz
Dim i As Integer, iMSG As Integer
'Pfad anpassen
strPath = "G:\1 Forum\tmpMail\"
If Right$(strPath, 1)  "\" Then strPath = strPath & "\"
varFilename = Split(ThisWorkbook.Name, ".")
varZusatz = Split(varFilename(0), "_")
varZusatz = varZusatz(LBound(varZusatz)) & "_" & varZusatz(LBound(varZusatz) + 1)
i = 1
NewFileName = strPath & "*" & "_F" & Format(i, "0000") & "." & varFilename(1)
Do While Dir(NewFileName, vbNormal)  ""
i = i + 1
NewFileName = strPath & "*" & "_F" & Format(i, "0000") & "." & varFilename(1)
Loop
NewFileName = strPath & varZusatz & "_F" & Format(i, "0000") & "." & varFilename(1)
Application.DisplayAlerts = False
ThisWorkbook.SaveAs NewFileName, FileFormat:=xlWorkbookNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Application.DisplayAlerts = True
ActiveWorkbook.Close
End Sub
Gruß Tino

Anzeige
AW: Hyperlink/ Makrolöschung
30.10.2013 10:56:16
Sebastian
Hallo Tino,
1000 Dank für den perfekten Code. Du hast mir sehr weitergeholfen :-)
Nochmals vielen, vielen Dank!!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige