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

code hebt sich auf...denk ich mir :-(

code hebt sich auf...denk ich mir :-(
24.12.2019 17:06:56
Niko

Frohe Weihnachten an alle...wünsche Friede, Freude und Gesundheit :-)
habe ein "kleines" Problemchen das mich nicht am Heilig Abend in ruh das Fest Genießen lässt :-)
Wenn ich die beiden Codes in ein Blatt reinschreibe bekomme ich Probleme.
Anbei der gesamte Code im Blatt und das Blatt selbst als Datei.
https://www.herber.de/bbs/user/133954.xlsm
-------------------------------------------------------------------------------------------------------------------
Option Explicit
Sub Excel_Sheet_via_Outlook_Jan()
ActiveWorkbook.ActiveSheet.Unprotect ("1234")
Dim i As Long, strAn As String, GruppenName, KasseMonat As String
Dim MyMessage As Object, MyOutApp As Object, SavePath As String, AWS As String
GruppenName = ThisWorkbook.Sheets("DPV1").Range("A3")
KasseMonat = Month(CDate(ThisWorkbook.Sheets("DPV1").Range("E4"))) & "/" _
& Year(CDate(ThisWorkbook.Sheets("DPV1").Range("E4")))
SavePath = Environ("TEMP")
Worksheets("DPV1").Copy
With ActiveSheet
With .UsedRange
.Copy
.PasteSpecial xlPasteValues
End With
Union(.Range("FA:HA"), .Range("HB:HZ"), .Range("IA:XFD")).Delete
.Range("61:1048576").Delete
End With
ActiveSheet.UsedRange.Copy
ActiveSheet.Cells().PasteSpecial xlPasteValues
Application.DisplayAlerts = False
Application.Workbooks(Application.Workbooks.Count).SaveAs ThisWorkbook.Path & "\" _
& "Dienstplangestaltung " & "_" & GruppenName & "_" & Format(Now, "ddmmyyyy__hhmm") & ".xlsx"
With Application.Workbooks(Workbooks.Count)
AWS = .FullName
.Close
End With
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With Worksheets("DPV1")
For i = 48 To .Cells(.Rows.Count, "E").End(xlUp).Row
If strAn = vbNullString Then
strAn = .Cells(i, "E")
Else
strAn = strAn & ";" & .Cells(i, "E")
End If
Next i
End With
With MyMessage
.To = strAn
.cc = Worksheets("DPV1").Range("E47")
.Subject = "Dienstplangestaltung - Gruppe: " & GruppenName & " - Monat: " _
& KasseMonat & " - " & Date & "-" & Time
.Attachments.Add AWS
'Hier wird eine normale Text Mail erstellt
'.body = "Das ist ein Test" & vbCrLf & "Bitte ignorieren"
'Hier wird die HTML Mail erstellt
.Body = "Hallo Liebe Kollegen*innen," & vbCrLf & vbCrLf & "Im Anhang dieser E-Mail befindet sich die " _
& "Dienstplanung unserer Gruppe " & GruppenName & (KasseMonat) & " in Form einer Excel Datei." & vbCrLf _
& "Die Datei wird automatisch generiert, bitte beim Aufmachen der Datei alle" _
& " Vormeldungen zu akzeptieren/aktivieren oder/und auf Weiter zu Drücken." & vbCrLf _
& vbCrLf & "Zu öffnen mit dem MS Excel Programm oder einem Excel kompatiblen Programm." _
& vbCrLf & vbCrLf & vbCrLf & "Vielen Dank," & vbCrLf & GruppenName & ""
'Hier wird die Mail nochmals angezeigt
.GetInspector ' sorgt für die Signatur
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'.Send
'Hier wird die temporäre Datei wieder gelöscht
Kill AWS
End With
'MyOutApp.Quit
Set MyOutApp = Nothing
Set MyMessage = Nothing
ActiveWorkbook.ActiveSheet.Protect ("1234")
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveWorkbook.ActiveSheet.Unprotect ("1234")
With Range("A10:EZ40").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.PatternTintAndShade = 1
End With
If Not Intersect(Target, Range("A10:EZ40")) Is Nothing Then
With Range(Cells(Target.Row, 1), Cells(Target.Row, 156)).Interior
.Pattern = xlGray25
.PatternThemeColor = xlThemeColorAccent5
.PatternTintAndShade = 0.399945066682943
End With
Target.Activate
End If
ActiveWorkbook.ActiveSheet.Protect ("1234")
End Sub

-------------------------------------------------------------------------------------------------------------
Danke im Voraus und nochmal Frohes Fest :-)

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: code hebt sich auf...denk ich mir :-(
24.12.2019 17:11:25
Niko
sry
Kann sicher nicht korrekt erklären…doch das Problem sollte ich es besser beschreiben :-)
Bei drücken des E-Mail Taste (senden) stoppt es dauernd bei dem Befehl
Union(.Range("FA:HA"), .Range("HB:HZ"), .Range("IA:XFD")).Delete
Habe das Gefühl das es mit den .PatternColorIndex etwas zu tun hat, doch Ahnung wirklich habe ich keine :-(
Thx again :-)
AW: code hebt sich auf...denk ich mir :-(
24.12.2019 17:27:58
Nepumuk
Hallo Nico,
die PasteSpecial-Methode löst das SelectionChange-Event aus und darin wird die Tabelle wieder geschützt.
Versuch es so:
With ActiveSheet
    With .UsedRange
        .Copy
        Application.EnableEvents = False
        .PasteSpecial xlPasteValues
        Application.EnableEvents = True
    End With
    Union(.Range("FA:HA"), .Range("HB:HZ"), .Range("IA:XFD")).Delete
    .Range("61:1048576").Delete
End With

Gruß
Nepumuk
Anzeige
AW: code hebt sich auf...denk ich mir :-(
24.12.2019 21:16:39
Niko
Hallo Nepmuk,
voarb vielen, vielen Dank :-)
wenn man auf dem schlauch steht, braucht man ein stupser ab und zu :-)
Speziel wenn man ein anfänger ist.
Danke und Frohes Fest mit viel Gesundheit, freude und Liebe.
Niko
AW: code hebt sich auf...denk ich mir :-(
25.12.2019 12:23:11
Niko
Hallo nochmal an alle :-)
vorab Frohe Weihnachten, Joyeux noel :-)
Nepmuk hat mir sehr geholfen das Ganze in Einklang zu bringen, funktioniert super...doch da Weihnachten :-) möchte ich es verfeinern bzw. es in ein Modul rüberbringen.
Möchte eigentlich im E-Ma Meine Frage ist doppelt…ist es machbar? ..und wenn wie? :-)
Anbei die Datei und der Code…nochmals vielen Dank vorab und Frohe Weihnachten.
https://www.herber.de/bbs/user/133962.xlsm
Option Explicit
Sub Excel_Sheet_via_Outlook_Jan()
ActiveWorkbook.ActiveSheet.Unprotect ("1234")
Dim i As Long, strAn As String, GruppenName, KasseMonat As String
Dim MyMessage As Object, MyOutApp As Object, SavePath As String, AWS As String
GruppenName = ThisWorkbook.Sheets("DPV1").Range("A3")
KasseMonat = Month(CDate(ThisWorkbook.Sheets("DPV1").Range("E4"))) & "/" _
& Year(CDate(ThisWorkbook.Sheets("DPV1").Range("E4")))
SavePath = Environ("TEMP")
Worksheets("DPV1").Copy
With ActiveSheet
With .UsedRange
.Copy
Application.EnableEvents = False
.PasteSpecial xlPasteValues
Application.EnableEvents = True
End With
Union(.Range("FA:HA"), .Range("HB:HZ"), .Range("IA:XFD")).Delete
.Range("61:1048576").Delete
End With
ActiveSheet.UsedRange.Copy
ActiveSheet.Cells().PasteSpecial xlPasteValues
Application.DisplayAlerts = False
Application.Workbooks(Application.Workbooks.Count).SaveAs ThisWorkbook.Path & "\" _
& "Dienstplangestaltung " & "_" & GruppenName & "_" & Format(Now, "ddmmyyyy__hhmm") & ".xlsx"
With Application.Workbooks(Workbooks.Count)
AWS = .FullName
.Close
End With
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With Worksheets("DPV1")
For i = 48 To .Cells(.Rows.Count, "E").End(xlUp).Row
If strAn = vbNullString Then
strAn = .Cells(i, "E")
Else
strAn = strAn & ";" & .Cells(i, "E")
End If
Next i
End With
With MyMessage
.To = strAn
.cc = Worksheets("DPV1").Range("E47")
.Subject = "Dienstplangestaltung - Gruppe: " & GruppenName & " - Monat: " _
& KasseMonat & " -  " & Date & "-" & Time
.Attachments.Add AWS
'Hier wird eine normale Text Mail erstellt
'.body = "Das ist ein Test" & vbCrLf & "Bitte ignorieren"
'Hier wird die HTML Mail erstellt
.Body = "Hallo Liebe Kollegen*innen," & vbCrLf & vbCrLf & "Im Anhang dieser E-Mail befindet  _
sich die " _
& "Dienstplanung unserer Gruppe " & GruppenName & (KasseMonat) & " in Form einer Excel  _
Datei." & vbCrLf _
& "Die Datei wird automatisch generiert, bitte beim Aufmachen der Datei alle" _
& " Vormeldungen zu akzeptieren/aktivieren oder/und auf Weiter zu Drücken." & vbCrLf _
& vbCrLf & "Zu öffnen mit dem MS Excel Programm oder einem Excel kompatiblen Programm." _
& vbCrLf & vbCrLf & vbCrLf & "Vielen Dank," & vbCrLf & GruppenName & ""
'Hier wird die Mail nochmals angezeigt
.GetInspector     ' sorgt für die Signatur
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'.Send
'Hier wird die temporäre Datei wieder gelöscht
Kill AWS
End With
'MyOutApp.Quit
Set MyOutApp = Nothing
Set MyMessage = Nothing
ActiveWorkbook.ActiveSheet.Protect ("1234")
End Sub

Anzeige
AW: code hebt sich auf...denk ich mir :-(
25.12.2019 12:53:17
Nepumuk
Hallo Niko,
Möchte eigentlich im E-Ma Meine Frage ist doppelt…ist es machbar? ..und wenn wie? :-)
Bahnhof !?
Gruß
Nepumuk
Vom Blatt auf Modul umkopieren/ umcodieren
25.12.2019 13:01:22
Niko
sry nochmal...da ist die halbe frag nur rübergekommen...habe wieder mal falschen Knopf gedrückt :-(
Möchte eigentlich eine E-Mail von jeden Aktiven Blatt senden ohne das jedes Mal in jedem neuen Blatt den Code auf das Blatt umschreibe.
Statt das das aufgerufene Blatt hingeschrieben werden muss, soll es auf das Aktive Blatt jedes Mal zugreifen, so könnte ich es in ein Modul einfügen und immer bei neuen Blatt vom Button aufrufen… Meine Frage ist doppelt…ist es machbar? ..und wenn wie? :-)
Weiss auch net wie ich es anders formulieren kann...sry :-(
Thx again :-)
Niko
Anzeige
AW: Vom Blatt auf Modul umkopieren/ umcodieren
25.12.2019 14:26:41
Nepumuk
Hallo Niko,
teste mal:
Option Explicit

Public Sub Excel_Sheet_via_Outlook_Jan()
    
    Dim i As Long
    Dim strAn As String, strCC As String, GruppenName As String, KasseMonat As String
    Dim MyMessage As Object, MyOutApp As Object, AWS As String
    
    With ActiveSheet
        
        For i = 48 To .Cells(.Rows.Count, 5).End(xlUp).Row
            If strAn = vbNullString Then
                strAn = .Cells(i, 5).Value
            Else
                strAn = strAn & ";" & .Cells(i, 5).Value
            End If
        Next i
        
        strCC = .Range("E47").Value
        
        GruppenName = .Range("A3").Value
        
        KasseMonat = Month(.Range("E4").Value) & "/" _
            & Year(.Range("E4").Value)
        
        .Copy
        
    End With
    
    With ActiveSheet
        .Unprotect "1234"
        With .UsedRange
            .Copy
            Application.EnableEvents = False
            .PasteSpecial xlPasteValues
            Application.EnableEvents = True
        End With
        Union(.Columns("FA:HA"), .Columns("HB:HZ"), .Columns("IA:XFD")).Delete
        .Rows("61:1048576").Delete
        .Protect "1234"
    End With
    
    Application.DisplayAlerts = False
    With ActiveWorkbook
        AWS = ThisWorkbook.Path & "\" & "Dienstplangestaltung _" & _
            GruppenName & "_" & Format$(Now, "ddmmyyyy__hhmm") & ".xlsx"
        .SaveAs AWS
        .Close
    End With
    Application.DisplayAlerts = True
    
    Set MyOutApp = CreateObject("Outlook.Application")
    Set MyMessage = MyOutApp.CreateItem(0)
    
    With MyMessage
        .To = strAn
        .cc = strCC
        .Subject = "Dienstplangestaltung - Gruppe: " & GruppenName & " - Monat: " _
            & KasseMonat & " - " & Date & "-" & Time
        .Attachments.Add AWS
        'Hier wird eine normale Text Mail erstellt
        '.body = "Das ist ein Test" & vblf & "Bitte ignorieren"
        'Hier wird die HTML Mail erstellt
        .Body = "Hallo Liebe Kollegen*innen," & vbLf & vbLf & "Im Anhang dieser E-Mail befindet sich die " _
            & "Dienstplanung unserer Gruppe " & GruppenName & (KasseMonat) & " in Form einer Excel Datei." & vbLf _
            & "Die Datei wird automatisch generiert, bitte beim Aufmachen der Datei alle" _
            & " Vormeldungen zu akzeptieren/aktivieren oder/und auf Weiter zu Drücken." & vbLf _
            & vbLf & "Zu öffnen mit dem MS Excel Programm oder einem Excel kompatiblen Programm." _
            & vbLf & vbLf & vbLf & "Vielen Dank," & vbLf & GruppenName & ""
        'Hier wird die Mail nochmals angezeigt
        .GetInspector ' sorgt für die Signatur
        .Display
        'Hier wird die Mail gleich in den Postausgang gelegt
        '.Send
    End With
    
    'Hier wird die temporäre Datei wieder gelöscht
    Kill AWS
    
    'MyOutApp.Quit
    Set MyOutApp = Nothing
    Set MyMessage = Nothing
    
End Sub

Ich war so frei dein Event-Makro etwas zu korrigieren:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    Unprotect "1234"
    
    With Range("A10:EZ40").Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .PatternTintAndShade = 1
    End With
    
    If Not Intersect(Target, Range("A10:EZ40")) Is Nothing Then
        
        With Range(Cells(Target.Row, 1), Cells(Target.Row, 156)).Interior
            .Pattern = xlGray25
            .PatternThemeColor = xlThemeColorAccent5
            .PatternTintAndShade = 0.399945066682943
        End With
        
        Application.EnableEvents = False
        Target.Activate
        Application.EnableEvents = True
        
    End If
    
    Protect "1234"
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Vom Blatt auf Modul umkopieren/ umcodieren
25.12.2019 15:10:01
Niko
Hi Nepumuk, du bist kein Mensch...........du bist ein Engel!!! :-))
Danke und nochmals Danke, es funktioniert SUPER...wow.
Wünsche dir noch alles gute das du dir wünscht, zu bekommen :-)
anbei die Datei für alle :-)
https://www.herber.de/bbs/user/133964.xlsm
Thx :-)
Niko

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige