Office: Schleife einbauen

Helfe beim Thema Schleife einbauen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich benutze eine Exceldatei. In Zelle M1 füge ich ein Datensatz ein, über SV Verweise werden dann aus der Grundlagendatei verschiedene Daten... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Miner, 30. Januar 2021.

  1. Schleife einbauen


    Hallo,

    ich benutze eine Exceldatei. In Zelle M1 füge ich ein Datensatz ein, über SV Verweise werden dann aus der Grundlagendatei verschiedene Daten geholt, die die Tabelle ausgefüllt. In Zelle M2 wird der Dateiname erzeugt. Über ein Makro speichere ich die Tabelle dann als pdf. Dann füge ich den zweiten Datensatz in M1 ein, und alles beginnt von vorn.
    Meine Frage: Es sollte doch möglich sein, dass ich ab Zelle N1 alle Datensätze (Anzahl variabel) untereinander aufliste, ein Makro den ersten Datensatz in M1 zieht (dadurch sich die Tabelle ausfüllt), die Tabelle als pdf speichert, sich dann den zweiten Datensatz in M1 zieht usw.
    Kann wer meine genutztes Makro dementsprechend erweitern? Mit einer Schleife sollte dies funktinieren, das Wort "Schleife" ist aber meine einzige Kenntnis von VBA.

    nur als Kür (das ober ist aber keine Pflicht!):
    Kann dies auch über ein Makro meiner Grundlagendatei erfolgen?
    Wenn, dann stehen die Daten, die ich benötige, ab Zelle B30 untereinander. Es sollen aber nur die Zellen genutzt werden, bei denen in der dazugehörigen A-Spalte ein bestimmter Wert (z.B. 12345) steht.

    Ich denke, ich obere Frage ist einfach zu lösen, bitte mit der unteren Frage nur beschäftigen, wenn ihr Lust und Zeit habt.

    Hier mein genutztes Makro:


    Sub pdf_Speichern()

    Const DateiPfad = "C:Testdatei"
    Dim DateiName As String

    DateiName = DateiPfad & Range("m2") & ".pdf"
    Range("A1:k28").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    DateiName, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False


    End Sub

    :)
     
  2. Hallo,

    teste mal:

    Public Sub pdf_Speichern()

    Const DateiPfad = "C:\Testdatei\"

    Dim DateiName As String
    Dim lngRow As Long

    For lngRow = 1 To Cells(Rows.Count, 14).End(xlUp).Row

    Cells(1, 13).Value = Cells(lngRow, 14).Value

    ActiveSheet.Calculate

    DateiName = DateiPfad & Range("M2").Text & ".pdf"

    Range("A1:K28").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    DateiName, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    Next
    End Sub
     
    Nepumuk, 31. Januar 2021
    #2
  3. Mein Fehler im Jahre 2008:
    In der Kurzarbeit keinen Lehrgang zwecks VBA-Kenntnissen besucht.

    Nepumuk, selbstverständlich läuft es.
    Ist bestimmt deprimierend, so primitive Fragen gestellt zu bekommen!
    Vielen Dank!
     
  4. Schleife einbauen

    Hallo Nepumuk,

    deine Lösung von heute Vormittag kann mir vielleicht auch bei einem Zweiten Problem helfen. Wir nehmen mal an, die Tabelle ist genauso aufgebaut.
    In Zelle M1 ist der Dateiname, generiert aus Zelle N 1 (oder N2 ...).
    Ich möchte die pdf gern per Mail Anhang versenden. In Zelle O1 (oder O2 ...) steht die jeweilige Mailadresse und die Betreffzeile ist gleich der Dateiname.
    Dann sollte dies doch ähnlich funktionieren wie das Speichern?
    Kannst du mir den Code nennen.

    Diese pdf kann man doch nur als Anhang senden und nicht direkt als Mail?

    Wenn ich die Mail als Anhang sende, muß ich ja noch einen "Body"? erstellen, geht dies als extra Tabellenblatt? Und wie verweise ich im Makro auf den Body?

    Danke
    Der Miner
     
  5. Hallo,

    teste mal:

    Public Sub pdf_Speichern()

    Const DateiPfad = "C:\Testdatei\"

    Dim DateiName As String
    Dim lngRow As Long
    Dim objOutlook As Object
    Dim objMail As Object

    Set objOutlook = CreateObject(Class:="Outlook.Application")

    For lngRow = 1 To Cells(Rows.Count, 14).End(xlUp).Row

    Cells(1, 13).Value = Cells(lngRow, 14).Value

    ActiveSheet.Calculate

    DateiName = DateiPfad & Range("M2").Text & ".pdf"

    Range("A1:K28").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    DateiName, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    Set objMail = objOutlook.CreateItem(0)

    With objMail
    .To = Range("O1").Text 'Mailadresse
    .Subject = Range("M2").Text 'Betreff
    .Body = Worksheets("Mailtext").Cells(1, 1).Value 'Anpassen !!!
    Call .Attachments.Add(DateiName) 'Anhang
    Call .Display 'Anzeigen
    ' Call .Send 'direkt senden
    End With

    Set objMail = Nothing

    Next

    Set objOutlook = Nothing

    End Sub
     
    Nepumuk, 1. Februar 2021
    #5
  6. Hallo Nepumuk,

    ich mußte erstmal meiner "normalen" Arbeit nachgehen, daher die späte Antwort.
    Grundsätzlich: Es funktioniert, nun muß ich nur alles meinen Bedürfnissen anpassen. Daher diese Frage. Der Body bezieht sich auf Zelle A1 (Cells(1, 1)).
    Kann er sich auch auf mehrere Zellen beziehen? Wie müßte dann die Zeile lauten? Ich möchte dies mal testen, auch, um zu sehen, was mit den Formatierungen des evtl. Body`s passiert.

    .Body = Worksheets("Body").Cells(1, 1).Value 'Anpassen !!!

    Danke im Voraus!
     
  7. Hallo,

    im Prinzip so:

    Code:
     
    Nepumuk, 3. Februar 2021
    #7
  8. Schleife einbauen

    Danke, d.h. ich kann nicht alle Zellen von z.B. A1 bis K20 mit einmal einfügen, und was dann mit den Formaten passiert wäre? Wäre zu schön gewesen.

    Wenn ich einen schönen Body ("hahaha") in die Mail einfügen möchte, kann ich da über VBA auf eine Worddatei zugreifen. Da kann ich den entsprechenden Body ja erstellen.

    Oder aber ich erstelle ein "Grund-E-Mail", die durch VBA angesteuert wird.

    Gibt es diese Möglichkeiten, kannst du da helfen?
     
  9. Hallo,

    du kannst auch direkt auf das Word-Objekt der Mail zugreifen. Oder eine Mailvorlage benutzen. Hier mal ein Beispiel wie du auf das Word-Objekt zugreifen kannst.

    Option Explicit

    Public Sub pdf_Speichern()

    Const DateiPfad = "C:Testdatei"

    Dim DateiName As String
    Dim lngRow As Long
    Dim objOutlook As Object
    Dim objMail As Object
    Dim objWord As Object

    Set objOutlook = CreateObject(Class:="Outlook.Application")

    For lngRow = 1 To Cells(Rows.Count, 14).End(xlUp).Row

    Cells(1, 13).Value = Cells(lngRow, 14).Value

    ActiveSheet.Calculate

    DateiName = DateiPfad & Range("M2").Text & ".pdf"

    Range("A1:K28").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    DateiName, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    Set objMail = objOutlook.CreateItem(0)

    With objMail
    .BodyFormat = 2
    .To = Range("O1").Text 'Mailadresse
    .Subject = Range("M2").Text 'Betreff
    Call .Attachments.Add(DateiName) 'Anhang
    Call .Display 'Anzeigen

    Set objWord = .GetInspector.WordEditor.Application

    With objWord

    .Selection.Font.Name = "Arial"
    .Selection.Font.Size = 12

    'usw.

    End With

    ' Call .Send 'Mail senden

    End With

    Set objMail = Nothing
    Set objWord = Nothing

    Next

    Set objOutlook = Nothing

    End Sub
     
    Nepumuk, 3. Februar 2021
    #9
  10. "Hier mal ein Beispiel wie du auf das Word-Objekt zugreifen kannst."

    Damit kann ich nichts anfangen. Was ist ein Word-Objekt einer Mail.
    Kannst du mir bitte dies begreiflich machen. Heißt dies, eine Worddatei erstellen und das Makro greift von Excel darauf zu? Muß dazu der Dateipfad angegeben werden?
     
  11. Hallo,

    ein Html-Mail (.BodyFormat = 2) ist nichts anderes als Word-Dokument. Und auf das kannst du, wie ich gezeigt habe, zugreifen.
     
    Nepumuk, 4. Februar 2021
    #11
  12. Hallo Nepumuk,

    das mit dem Bodyformat bekomme ich nicht hin/begreife ich nicht. Also werde die die unschöne Lösung nehmen und eben eine Signatur erstellen, in der die "Grundmail" steckt.
    Aber nun zu meiner Frage: Der Kode vom 01.02 funktiniert ja. Wie muß er heißen, wenn die Mails nicht nur geöffnet werden sollen, sondern gleich versendet werden sollen? Hier müssen bestimmt nur ein paar "Worte" geändert werden.
     
  13. Schleife einbauen

    Hallo,

    was steht da:

    Code:
     
    Nepumuk, 8. Februar 2021
    #13
  14. Danke für deine virtuelle (und leider berechtigte) Backpfeife.
    Werde ich dann gleich ausprobieren!

    Miner
     
  15. Hallo Nepumuk, Hallo alle

    das genutzte Makro funktioniert. Nun wollte ich noch meine Signatur einfügen. Da habe ich im Netz was gefunden und es gelingt mir auch ("neu Miner" im Code).
    Jetzt aber kommt eine Laufzeitfehler (Dokument konnte nicht gespeichert werden). Aber die Mail wurde korrekt versendet und die pdf ordnungsgemäß gespeichert.
    Der Debugger weißt auf folgende drei Zeilen hin:

    Range("A1:h24").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    DateiName, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    Wenn ich die Fehlermeldung weg drück, ist alles o.k.. Wo ist meine Fehler?



    Public Sub Mail_versenden_pdf_speichern()

    Const DateiPfad = "C:Test"

    Dim DateiName As String
    Dim lngRow As Long
    Dim objOutlook As Object
    Dim objMail As Object

    Dim olApp As Object 'neu Miner
    Dim AWS As String 'neu Miner
    Dim olOldbody As String 'neu Miner

    Set objOutlook = CreateObject(Class:="Outlook.Application")

    For lngRow = 1 To Cells(Rows.Count, 14).End(xlUp).Row

    Cells(1, 13).Value = Cells(lngRow, 14).Value

    ActiveSheet.Calculate

    DateiName = DateiPfad & Range("M1").Text & ".pdf"

    Range("A1:h24").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    DateiName, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    Set objMail = objOutlook.CreateItem(0)

    With objMail
    .To = Range("O1").Text 'Mailadresse
    .Subject = Range("M1").Text 'Betreff

    .GetInspector.Display 'neu Miner
    olOldbody = .htmlBody 'neu Miner

    Call .Attachments.Add(DateiName) 'Anhang
    Call .send 'Anzeigen
    ' Call .Send 'direkt senden
    End With

    Set objMail = Nothing

    Next

    Set objOutlook = Nothing

    End Sub
     
Thema:

Schleife einbauen

Die Seite wird geladen...
  1. Schleife einbauen - Similar Threads - Schleife einbauen

  2. Verkettung von Zellen - Schleife

    in Microsoft Excel Hilfe
    Verkettung von Zellen - Schleife: Hallo, folgendes Problem: Ich möchte in einer Tabelle die Texte in Spalte A mit den Texten in Spalte B verketten. Dazu benutze ich folgenden Code: Sub VerkettungAB() Range("E2").Value =...
  3. While-Schleife wird nicht beendet

    in Microsoft Access Hilfe
    While-Schleife wird nicht beendet: Hallo Forum Ein aus einem Unterformular soll in ein Feld im Hauptformular übernommen (fix abgespeichert) werden. Das Feld wurde nachträglich im Hauptformular (+ Tabelle) eingefügt. Nun habe ich...
  4. For Next Schleife

    in Microsoft Excel Hilfe
    For Next Schleife: Hallo zusammen, da bin ich wieder und wie kann es anders sein mit einem Problem. Ich habe eine Tabelle (im Anhang) dort soll die Werte in Zellen a/b/f kopiert werden und in die erste frei Zeile...
  5. VBA Schleife kopieren und einfügen von Spalten

    in Microsoft Excel Hilfe
    VBA Schleife kopieren und einfügen von Spalten: Hallo Zusammen, Ich habe auf einem Tabellenblatt eine variable Anzahl an Spalten mit Daten die auch eine variable Anzahl an Zeilen haben, auch mit Lücken in den Zeilen. Die Spalten mit den Infos...
  6. Eine Schleife mit zwei tebellen vba Access

    in Microsoft Access Hilfe
    Eine Schleife mit zwei tebellen vba Access: Hallo zusammen! Es gibt’s zwei Tabellen und ich wollte aus zweiter Tabelle die Daten nach einem Kriterium (FLTR=0) an erste Tabelle übertragen (kopieren). Geht aber nicht. Hier ist mein Kode,...
  7. Bestimmte Daten zwischen innerhalb eines Datumsbereichs einer Tabelle Anfügen

    in Microsoft Access Hilfe
    Bestimmte Daten zwischen innerhalb eines Datumsbereichs einer Tabelle Anfügen: Hallo, ich habe per Google und Foren SuFu leider nichts passendes finden können, wage aber zu bezweifeln, dass Access da an seine Grenzen kommt, da es eigentlich recht banal ist. Ich habe eine...
  8. Schleife einbauen. Hilfe !

    in Microsoft Excel Hilfe
    Schleife einbauen. Hilfe !: Hallo Leute, ich brauche leider eure Hilfe. Ich komme nicht weiter. Ich habe mir einen Code aus dem Forum einzeln zusammengebaut. Wie kann ich da jetzt eine Schleife einbauen, damit ich 6x etwas...
  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