Office: (Office 2007) Problem mit abspeichern als pdf

Helfe beim Thema Problem mit abspeichern als pdf in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo liebe VBA-ler, ich habe folgendes Problem. In meinem Code wird jetzt die Geschriebene Rechnung als "xlsx" abgespeichert, soll aber in Zukunft als... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von werner48, 1. Dezember 2020.

  1. Problem mit abspeichern als pdf


    Hallo liebe VBA-ler,
    ich habe folgendes Problem. In meinem Code wird jetzt die Geschriebene Rechnung als "xlsx" abgespeichert, soll aber in Zukunft als pdf gespeichert werden. Ich hatte zwar die entsprechende Zeile geändert aber nur Fehlermeldungen bekommen. Ganz ehrlich weis ich nicht mehr weiter.
    Im nachfolgenden Code wird zuerst abgefragt in welchen Ordner ich speichern möchte
    -dann wird gespeichert (in Zukunft als pdf)
    -dann wird das Originalformular wieder geöffnet um die Re.Nr. um 1 zu erhöhen
    -anschließend wird das Originalformular gespeichert und geschlossen
    -Im nächsten Schritt wird die Datei OPOS geöffnet und Re.datum, Kundennamen,ReNummer und Betrag eingetragen
    Die geschriebene Rechnung wird geschlossen, geöffnet bleibt die Datei OPOS.
    Fehlermeldungen waren z.B. Datei kann nicht geöffnet werden weil Sie bereits geöffnet ist. Ein anderes mal wird die ReNummer in OPOS um eins erhöht.
    Nun der Code: Ist zwar nicht immer den Regeln entsprechend, aber funktioniert
    Die kompletten Pfade wurden leider nicht übernommen, so dass ich sie gekürzt habe.
    Wär schön wenn jemand eine Lösung hätte!
    Werner

    Private Sub CommandButton6_Click() 'Speichern
    Dim Mldg, Stil, Titel, Antwort
    Mldg = "Im 16%-Ordner ?"
    Stil = 36
    Titel = "Speichern !"
    Antwort = MsgBox(Mldg, Stil, Titel)
    If Antwort = vbYes Then
    Dim strFullName As String
    Dim wbkOriginal As Workbook

    Dim wbkRechnungen As Workbook
    Dim wbkOPOS As Workbook
    Dim wksZiel As Worksheet
    Dim wksQuelle As Worksheet
    Dim lngZeile As Long
    Dim lngLetzteZeile As Long

    Set wbkRechnungen = Workbooks("Rechnungen.xlsm")
    Set wksQuelle = wbkRechnungen.Worksheets("Tabelle1")

    Set wbkOriginal = Workbooks("Rechnungen.xlsm")

    Application.ScreenUpdating = False
    If ThisWorkbook.Name "Rechnungen.xlsm" Then Exit Sub 'Name ggf. Anpassen!!!!!!!!!!!!!!!!!
    strFullName = ThisWorkbook.FullName

    ActiveSheet.Cells(8, 7).Value = ActiveSheet.Cells(8, 7).Value 'Diese Zeile verhindert dass sich beim erneuten Öffnen Datum ändert
    Range("A8").Select
    ' Die nächste Zeile speichert unter Re.Nr. und Kd.-Namen
    ThisWorkbook.SaveAs "C:users...16%" & ActiveSheet.Cells(10, 7).Text & "-" & ActiveSheet.Cells(8, 1).Text & ".xlsm"
    DoEvents

    Set wbkOriginal = Workbooks.Open(Filename:=strFullName) 'Die nächste Zeile erhöht die Re.Nr. um 1

    wbkOriginal.Worksheets("Tabelle1").Cells(10, 7).Value = Val(wbkOriginal.Worksheets("Tabelle1").Cells(10, 7).Value) + 1
    wbkOriginal.Save

    Dim lngLetzteZeileSpalteA As Long
    Dim lngLetzteZeileSpalteB As Long
    Dim lngLetzteZeileSpalteE As Long
    Dim lngLetzteZeileSpalteG As Long

    Dim lngSpalte As Long
    Workbooks.Open "C:Users...OPOS.xlsm"

    Set wbkOPOS = Workbooks("OPOS.xlsm")
    Set wksZiel = wbkOPOS.Worksheets("Tabelle1")

    lngSpalte = 1 'Diese beiden Zeilen weisen die erste freie Zeile an
    lngLetzteZeileSpalteA = wksZiel.Cells(wksZiel.Rows.Count, lngSpalte).End(xlUp).Row
    lngSpalte = 2 'Diese beiden Zeilen weisen die erste freie Zeile an
    lngLetzteZeileSpalteB = wksZiel.Cells(wksZiel.Rows.Count, lngSpalte).End(xlUp).Row
    lngSpalte = 5 'Diese beiden Zeilen weisen die erste freie Zeile an
    lngLetzteZeileSpalteE = wksZiel.Cells(wksZiel.Rows.Count, lngSpalte).End(xlUp).Row
    lngSpalte = 6 'Diese beiden Zeilen weisen die erste freie Zeile an
    lngLetzteZeileSpalteG = wksZiel.Cells(wksZiel.Rows.Count, lngSpalte).End(xlUp).Row

    wksZiel.Cells(lngLetzteZeileSpalteA + 1, 1).Value = wksQuelle.Cells(8, 7).Value
    wksZiel.Cells(lngLetzteZeileSpalteB + 1, 2).Value = wksQuelle.Cells(8, 1).Value
    wksZiel.Cells(lngLetzteZeileSpalteE + 1, 5).Value = wksQuelle.Cells(10, 7).Value
    wksZiel.Cells(lngLetzteZeileSpalteG + 1, 6).Value = wksQuelle.Cells(36, 7).Value

    Workbooks("Rechnungen.xlsm").Close SaveChanges:=True
    ThisWorkbook.Close

    Application.ScreenUpdating = True
    End If

    If Antwort = vbNo Then

    Set wbkRechnungen = Workbooks("Rechnungen.xlsm")
    Set wksQuelle = wbkRechnungen.Worksheets("Tabelle1")

    Set wbkOriginal = Workbooks("Rechnungen.xlsm")

    Application.ScreenUpdating = False
    If ThisWorkbook.Name "Rechnungen.xlsm" Then Exit Sub 'Name ggf. Anpassen!!!!!!!!!!!!!!!!!
    strFullName = ThisWorkbook.FullName

    ActiveSheet.Cells(8, 7).Value = ActiveSheet.Cells(8, 7).Value 'Diese Zeile verhindert dass sich beim erneuten Öffnen Datum ändert
    Range("A8").Select
    ' Die nächste Zeile speichert unter Re.Nr. und Kd.-Namen
    ThisWorkbook.SaveAs "C:users....7%" & ActiveSheet.Cells(10, 7).Text & "-" & ActiveSheet.Cells(8, 1).Text & ".xlsm"
    DoEvents

    Set wbkOriginal = Workbooks.Open(Filename:=strFullName) 'Die nächste Zeile erhöht die Re.Nr. um 1

    wbkOriginal.Worksheets("Tabelle1").Cells(10, 7).Value = Val(wbkOriginal.Worksheets("Tabelle1").Cells(10, 7).Value) + 1
    wbkOriginal.Save

    Workbooks.Open "C:Users...OPOS.xlsm"

    Set wbkOPOS = Workbooks("OPOS.xlsm")
    Set wksZiel = wbkOPOS.Worksheets("Tabelle1")

    lngSpalte = 1 'Diese beiden Zeilen weisen die erste freie Zeile an
    lngLetzteZeileSpalteA = wksZiel.Cells(wksZiel.Rows.Count, lngSpalte).End(xlUp).Row
    lngSpalte = 2 'Diese beiden Zeilen weisen die erste freie Zeile an
    lngLetzteZeileSpalteB = wksZiel.Cells(wksZiel.Rows.Count, lngSpalte).End(xlUp).Row
    lngSpalte = 5 'Diese beiden Zeilen weisen die erste freie Zeile an
    lngLetzteZeileSpalteE = wksZiel.Cells(wksZiel.Rows.Count, lngSpalte).End(xlUp).Row
    lngSpalte = 6 'Diese beiden Zeilen weisen die erste freie Zeile an
    lngLetzteZeileSpalteG = wksZiel.Cells(wksZiel.Rows.Count, lngSpalte).End(xlUp).Row

    wksZiel.Cells(lngLetzteZeileSpalteA + 1, 1).Value = wksQuelle.Cells(8, 7).Value
    wksZiel.Cells(lngLetzteZeileSpalteB + 1, 2).Value = wksQuelle.Cells(8, 1).Value
    wksZiel.Cells(lngLetzteZeileSpalteE + 1, 5).Value = wksQuelle.Cells(10, 7).Value
    wksZiel.Cells(lngLetzteZeileSpalteG + 1, 6).Value = wksQuelle.Cells(36, 7).Value

    Workbooks("Rechnungen.xlsm").Close SaveChanges:=True
    ThisWorkbook.Close

    Application.ScreenUpdating = True
    End If
    End Sub

    :)
     
    werner48, 1. Dezember 2020
    #1
  2. Hallo Werner,
    um ein Blatt einer Arbeitsmappe als PDF zu speichern gibt es grundsätzlich zwei Möglichkeiten:
    • als PDF drucken oder
    • die Office-Exportfunktion
    Die Arbeitsmappe könnte dann in beiden Fällen geöffnet bleiben.
    Hier mal ein Beispiel für die Export-Funktion:
    Code:
     
  3. Danke erstmal für deine Überlegung.
    Das Problem ist nicht die Erstellung der Pdf-Datei sondern dass die Originaldatei nach dem Speichern nicht wieder leer ist und deshalb das workbook.open Ereigniss fehlschlägt.
    So wird zwar die Pdf erstellt, aber quasi das Original Rechnungsformular "Zerstört".
    Damit dass die Rechnungsnummer jeweils um 1 zu hoch ist könnt ich grad noch leben.
    Nochmals Danke, vielleicht hättest du noch einen anderen Ansatz?!
    Gruß Werner
     
    werner48, 3. Dezember 2020
    #3
  4. Problem mit abspeichern als pdf

    Vermutlich habe ich das Problem jetzt verstanden:
    Du öffnest die Datei und startest das Makro
    Während der Laufzeit speicherst du die Datei unter neuem Namen, das Makro läuft weiter.
    Deshalb kannst du das Original nochmals öffnen, um den Zähler zu erhöhen.
    Beim Speichern bzw. Exportieren als PDF funktioniert das nicht, denn das Original bleibt geöffnet und beim erneuten Öffnen läuft das Makro nicht weiter.

    Als Zwischenlösung würde ich vorschlagen, die PDF zunächst zusätzlich zu erstellen, also die Zeile ThisWorkbook.SaveAs "C:...%,,, stehen zu lassen und danach zusätzlich noch den PDF-Export anzuhängen.

    Wie ich das Problem löse fällt mir dann frühestens nach dem Abendessen ein...
     
  5. Dafür gibt es doch den Dateityp Excelvorlage. Damit hast du immer eine leere Vorlage. Und das Problem mit der Rechnungsnummer ist in Wahrheit keines, denn es steht nirgendwo geschrieben, dass eine Rechnungsnummer fortlaufend sein muss. Sie muss nur eindeutig sein. Daher bietet sich z.B. Datum in Kombination mit Uhrzeit als Rechnungsnummer an. Diese sind eindeutig, wenn man davon ausgeht, dass vermutlich niemand innerhalb der gleichen Sekunde 2 Rechnungen erstellen kann.
     
    MisterBurns, 3. Dezember 2020
    #5
  6. Das mit der Vorlage wird mit der hier genutzten Vorgehensweise nicht gelingen. Dazu müsste während der Laufzeit aus der Kopie wieder die Original-Vorlage geöffnet werden um den Zähler zu erhöhen. Das erlaubt Excel aber nicht.

    Hier mal ein Ansatz:
    Statt die Datei unter neuem Namen zu speichern und dann wieder zu öffnen habe ich das betreffende Arbeitsblatt kopiert, daraus die PDF erstellt und dann wieder gelöscht. So kannst du dir das erneute Öffnen der Datei sparen.
    Ebenso werden nicht mehr alle Variablen gebraucht.

    Ganz ausgearbeitet habe ich das Makro nicht. Ich habe mir nur den "Ja"-Fall vorgenommen. Die 7%-Variante habe ich mir nicht angeschaut.

    Code:
     
  7. Also mit Excel 2010 geht das - gerade nochmal verifiziert.

    Gruß Ulrich
     
    knobbi38, 3. Dezember 2020
    #7
  8. Problem mit abspeichern als pdf

    Das ist erstens nicht wahr - warum sollte ich das Original (das ja nicht mehr offen ist, wenn es bereits als Kopie gespeichert wurde) nicht mehr zu öffnen sein?
    Und zweitens ist es - wie ich bereits geschrieben habe - völlig unnötig, wenn man den Punkt mit dem Zähler einfach weglässt. Dieser bringt keinerlei Vorteil, sondern nur Mehraufwand, wie man hier erkennen kann.
     
    MisterBurns, 3. Dezember 2020
    #8
  9. Ja. Geht. Mein Fehler.
    Trotzdem bin ich der Meinung, mein Änderung funktioniert, ohne dass das Makro neu geschrieben werden muss. Die Variante mit der Vorlage bringt m. E. sehr viele Änderungen mit sich und wäre mehr Aufwand.
     
  10. Moin!
    Dass das ein Totschlagargument ist, weist Du wohl selbst.
    Es ist imo allemal sinnvoller, die Ursache abzustellen, als am Symptom herumzudoktern.

    Nur meine Meinung.
    Gruß Ralf
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  11. Guten Morgen euch allen,
    ich kann`s aus Zeitgründen heute nicht austesten, bin aber froh und dankbar dass ihr euch meines Problems wegen soviel Kopfzerbrechen bereitet. Aber es gibt ja noch ein Wochenende*Smilie .
    Ich melde mich dann wieder wie ich´s gelöst habe. Danke schon mal!
    Werner
     
    werner48, 3. Dezember 2020
    #11
  12. Hallo erst mal.
    Wie versprochen hier meine Lösung:
    Ich habs so gelöst dass jetzt sowohl die Excel Datei als auch das pdf gespeichert wird. Ansonsten hatte ich nur Probleme.
    Evtl. bau ich noch einen "Kill" Befehl ein der die Excel Dateien dann löscht.
    Vielen Dank noch mal besonders an Wolfgang!
    Gruß Werner
     
    werner48, 7. Dezember 2020
    #12
Thema:

Problem mit abspeichern als pdf

Die Seite wird geladen...
  1. Problem mit abspeichern als pdf - Similar Threads - Problem abspeichern pdf

  2. Data Transform, Problem with delimiter

    in Microsoft Excel Hilfe
    Data Transform, Problem with delimiter: Hello Community, I encounter one problem with excel. When I export table from csv I have a delimiter semicolon, but it doesn't work. I found solution. If I would go to Power Query Editor - Split...
  3. Problem Datenstruktur Mitglieds-Datenbank

    in Microsoft Access Hilfe
    Problem Datenstruktur Mitglieds-Datenbank: Hallo Leute, Ich habe eine Frage zu einer Vereins-Mitglieder-Datenbank, die ich erstelle. Die Vereinsmitglieder sind in einer Tabelle erfasst, also Nachname, Vorname, usw. Und es gibt einen...
  4. Seltsames Problem beim Sortieren

    in Microsoft Excel Hilfe
    Seltsames Problem beim Sortieren: Hallo! :) Ich wollte in Microsoft Excel folgende Auflistung so sortieren, dass die Werte neben den Jahreszahlen absteigend aufgelistet werden, die Jahre mit den höchsten Zahlen oben stehen:...
  5. Problem mit verschachtelter WENN Formel

    in Microsoft Excel Hilfe
    Problem mit verschachtelter WENN Formel: HiHo Ich habe ein Problem mit einer verschachtelten WENN Formel. Zur Erläuterung: D11 ist ein Hover, bei dem für die Abfrage "Arbeitstag" und "Zeitausgleich" relevant sind. C11 ist ein Datum. Es...
  6. Problem Formel

    in Microsoft Excel Hilfe
    Problem Formel: Hallo zusammen, ich benötige dringend Hilfe bei einer Formel. Scheinbar habe ich ein Brett vorm Kopf. Es wäre super nett wenn mir jemand helfen kann. Die Formel soll über ein Datum laufen. Ich...
  7. Excel TXT-File Import Problem

    in Microsoft Excel Hilfe
    Excel TXT-File Import Problem: Wenn ich ein txt-File in ein Excel importieren möchte, werden mir nur 4 Spalten anstatt 7 Spalten Angezeigt. Unten in dem Beispiel könnt ihr sehen das txt-File hat daten für 7 Spalten jedoch...
  8. Problem mit Entwicklertool PLUS und MINUS

    in Microsoft Excel Hilfe
    Problem mit Entwicklertool PLUS und MINUS: Hallo. Ich schicke mal ein Beispiel mit. Ich möchte, dass das linke Datum mit =HEUTE() angezeigt wird. Sobald ich den Drücker aktiviere, fängt er aber bei 1900 an. Ich habe =HEUTE() nicht...
  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