Office: [VBA] Zwei neue Dateien als Emailanhang erzeugen

Helfe beim Thema [VBA] Zwei neue Dateien als Emailanhang erzeugen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich bastle gerade an meinem Code herum und komme nicht weiter. Das Ziel: In Tabelle1 liegen die Daten des ersten Blattes. Aus diesem... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von denpei, 16. Februar 2023.

  1. denpei Neuer User

    [VBA] Zwei neue Dateien als Emailanhang erzeugen


    Hallo zusammen, ich bastle gerade an meinem Code herum und komme nicht weiter.

    Das Ziel:
    In Tabelle1 liegen die Daten des ersten Blattes. Aus diesem Blatt soll eine neue Datei ohne Formeln, nur mit Werten & Formatierung entstehen, welche dann im weiteren Verlauf an eine Email gehängt werden soll. Das gleiche soll dann auch mit Tabelle4 passieren, sodass am Ende zwei *.xlsx Dateien an der Email hängen.

    Es soll hier nur um das korrekte Erzeugen dieser beiden Dateien an eine Email gehen. Der Rest des Codes, der im Folgenden nicht angefügt ist, funktioniert tadellos.

    Hinweis: Ich kopiere für beide Dateien die Daten zunächst in jeweils versteckte Blätter, um sie daraus dann in die neuen *.xlsx Dateien zu kopieren. Das ist wahrscheinlich Quark, daher bin ich sehr an einem effizienteren Weg interessiert.

    Der Code:
    Dim strDatei As String
    Dim strDatei2 As String
    Dim strPfad As String
    Dim Mail As Object
    Dim outApp As Object


    Set outApp = CreateObject("Outlook.Application")
    Set Mail = outApp.CreateItem(0)
    strPfad = "C:\Users\Public"

    With Tabelle1
    .Unprotect
    .Range("A1:H35").Copy
    .Paste Destination:=Tabelle16.Cells(1)
    With Tabelle16
    .UsedRange.Value = ActiveSheet.UsedRange.Value
    End With
    .Protect
    End With
    Tabelle16.Copy
    ActiveWorkbook.SaveAs strPfad & "\" & "Bestellung"
    strDatei = ActiveWorkbook.FullName

    With Tabelle4
    .Unprotect
    .Range("A1:E14").Copy
    .Paste Destination:=Tabelle17.Cells(1)
    With Tabelle17
    .UsedRange.Value = ActiveSheet.UsedRange.Value​
    End With
    .Protect
    End With
    Tabelle17.Copy
    ActiveWorkbook.SaveAs strPfad2 & "\" & "Transportauftrag"
    strDatei2 = ActiveWorkbook.FullName​
    -----------------------------------------------------------------------------------------
    Platzhalter für dazwischenliegenden Code zur Erzeugung der Email
    -----------------------------------------------------------------------------------------​
    Workbooks("Bestellung.XLSX").Close SaveChanges:=False
    Workbooks("Transportauftrag.XLSX").Close SaveChanges:=False

    Das Ergebnis:
    Die erste Datei (erzeugt aus Tabelle1) ist inhaltlich korrekt. Die zweite Datei (sollte Daten aus Tabelle4 enthalten) enthält Daten aus Tabelle1?!. das Anhängen an die Email klappt wiederum anstandslos.

    Was mache ich falsch?
     
    Zuletzt bearbeitet: 16. Februar 2023
  2. Doming
    Doming Erfahrener User
    Hallo denpei
    ich muss zugeben, in ExcelVBA bewege ich mich nicht so sicher, aber bist Du sicher, dass man With/EndWith-Abschnitte verschachteln kann?
    Ich würde Deinen Code wohl eher so schreiben (keine Ahnung, ob das läuft)
    Code:
    Dim strDatei As String
    Dim strDatei2 As String
    Dim strPfad As String
    Dim Mail As Object
    Dim outApp As Object
    
        Set outApp = CreateObject("Outlook.Application")
        Set Mail = outApp.CreateItem(0)
        strPfad = "C:\Users\Public"
    
        With Thisworkbook.Tabelle1
            .Unprotect
            .Range("A1:H35").Copy
            .Paste Destination:=Tabelle16.Cells(1)
            ThisWorkbook.Tabelle16.UsedRange.Value = ActiveSheet.UsedRange.Value
            .Protect
        End With
        ThisWorkbook.Tabelle16.Copy
        ActiveWorkbook.SaveAs strPfad & "\" & "Bestellung"
        strDatei = ActiveWorkbook.FullName
    
        With ThisWorkbook.Tabelle4
            .Unprotect
            .Range("A1:E14").Copy
            .Paste Destination:=Tabelle17.Cells(1)
            ThisWorkbook.Tabelle17.UsedRange.Value = ActiveSheet.UsedRange.Value
            .Protect
        End With
        ThisWorkbook.Tabelle17.Copy
        ActiveWorkbook.SaveAs strPfad2 & "\" & "Transportauftrag"
        strDatei2 = ActiveWorkbook.FullName
    
        -----------------------------------------------------------------------------------------
        Platzhalter für dazwischenliegenden Code zur Erzeugung der Email
        -----------------------------------------------------------------------------------------
    
        Workbooks("Bestellung.XLSX").Close SaveChanges:=False
        Workbooks("Transportauftrag.XLSX").Close SaveChanges:=False
     
  3. HKindler
    HKindler Erfahrener User
    Hi,

    natürlich kann man With-Blöcke ineinander verschachteln. Das steht sogar in der Online-Hilfe!

    ThisWorkbook.Tabelle1.xxx funktioniert nicht. Den Codename kann man nur in der eigenen Datei (=ThisWorkbook) ansprechen. Daher reicht Tabelle1.xxx. Will man den Codename eines Blattes in einer anderen Datei verwenden, dann muss man eine Schleife über alle Sheets bilden und den Codename für jedes Blatt prüfen.

    Zum ursprünglichen Code: Ich würde direkt das entsprechende Blatt kopieren, Formeln durch Werte ersetzen und dann speichern und schließen. Also ungefähr so:
    Code:
    Tabelle1.Copy
    With ActiveWorkbook
        With Worksheets(1)
            .UsedRange.Value = .UsedRange.Value
        End With
        .SaveAs "Pfad\Dateiname"
        .Close
    End With
     
    HKindler, 17. Februar 2023
    #3
Thema:

[VBA] Zwei neue Dateien als Emailanhang erzeugen

Die Seite wird geladen...
  1. [VBA] Zwei neue Dateien als Emailanhang erzeugen - Similar Threads - VBA Dateien Emailanhang

  2. offene Word-Datei per VBA speichern

    in Microsoft Excel Hilfe
    offene Word-Datei per VBA speichern: Guten Abend zusammen, mit dem nachfolgenden Code öffne ich ein OLE-Objekt (Word-Datei) aus Excel heraus. Sheets("WORD").Select ActiveSheet.Shapes.Range(Array("Object 7")).Select...
  3. VBA Variableninhalt nach import aus zwei verschiedenen Dateien verschieden >Leer< und >""<

    in Microsoft Excel Hilfe
    VBA Variableninhalt nach import aus zwei verschiedenen Dateien verschieden >Leer< und >""<: Halle Excel Freaks, nach dem Import in eine Exelmappe aus einer anderen Mappe greife ich auf eine Zelle zu. In beiden Mappen steht in der Zelle nichts Beim Debuggen ist mir aufgefallen:...
  4. Datum einer Datei per VBA auslesen

    in Microsoft Access Hilfe
    Datum einer Datei per VBA auslesen: Hallo, ich möchte mit Access VBA das Änderungsdatum einer Excel-Datei auslesen. Hat vielleicht einer eine Idee oder so etwas schon mal gemacht? Über jede Hilfe wäre ich sehr dankbar. liebe Grüße...
  5. Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA

    in Microsoft Excel Hilfe
    Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA: Hallo Leute, Hoffentlich könnt ihr mir hier helfen, ich krieg den Syntax einfach nicht hin (wahrscheinlich ist es auch totaler käse den ich programmiert habe). Also im Grunde soll eine Datei...
  6. Aufrufen Datei aus SharePoint per VBA

    in Microsoft Access Hilfe
    Aufrufen Datei aus SharePoint per VBA: Wer kann mir helfen. In meiner Firma gibt es Dateien in diversen Ordner in Form von SharePoints, worauf alle Kolleginnen und Kollegen zugreifen kann. Dort habe ich eine Excel-Vorlage, worin die...
  7. per VBA in Datei springen und wieder in Ausgangs Datei zurück

    in Microsoft Excel Hilfe
    per VBA in Datei springen und wieder in Ausgangs Datei zurück: Hallo zusammen, ich versuche mal mein Problem zu beschreiben. Ich habe zwei Dateien "Zählerstände" und "Abrechnung" Die Datei "Abrechnung" ist leer und wird immer unter dem Aktuellem Jahr neu...
  8. einzelne Spalten in neue Dateien kopieren

    in Microsoft Excel Hilfe
    einzelne Spalten in neue Dateien kopieren: Hallo zusammen, ich brauche ein wenig Hilfestellung: Ich habe eine Tabelle (exemplarisch) Titel A Titel B Spalte A Spalte B...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden