Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Textfelder aktivieren und mehrere Blätter als 1PDF

Textfelder aktivieren und mehrere Blätter als 1PDF
25.06.2018 15:55:12
Meli
Hallo liebe VBA-Profis,
ich möchte meinen Report mehr automatisieren (mit Hilfe VBA). Einiges habe ich geschafft, aber ich habe folgende Probleme wo ich nicht weiss wie ich es lösen kann.
Selbst ohne Makro habe ich das Problem, dass wenn ich einige Blätter markiere und diese als PDF ausdrucken möchte, erscheinen nicht alle vorhandene Textfelder auf dem Blatt. Wenn ich allerdings die fehlende Textfelder vorher anklicke, dann funktioniert es und sie erscheinen auf dem PDF-Ausdruck. Komisch, aber ist leider so :-((
Da es manuell sehr aufwendig ist, brauche ich einen Makro.
Das Makros (Bericht als PDF speichern) soll folgendes machen können:
* alle vorhandene Textfelder aktivieren, damit beim PDF-Druck alle Textfelder auf dem Blatt erscheint
* alle Blätter, die sich zwischen Blatt "Datenblatt" und Blatt "Inputs" befindet, als PDF speichern. (Es sind nämlich immer unterschiedliche Blätternamen)
* dabei ausgeblendete Blätter sollen nicht ausgedruckt werden
* Speicherort möglichst mich auswählen lassen (ist nämlich immer unterschiedlich)
* Dateiname soll so heissen wie die Datei selbst
Weitere Probleme:
- Wie kann ich in den Textfelder über mehrere Blätter gleichzeitig Text ersetzen lassen? Durch markieren aller Blätter und Ersetzen-Funktion geht leider nicht.
Beispiel: "Zeitraum: 2 Jahre" in "Zeitraum: 1 Jahr".
- Wie kann ich das Bild "Risikomatrix" aus Blatt "allg. Info" in allen Blätter in Zelle E1 reinkopieren? Durch Copy und anschließend markieren aller Blätter, in der eingefügt werden soll, funktioniert leider nicht. (analog wie bei Text).
Musterreport hier hochgeladen:
https://www.herber.de/bbs/user/122313.xlsm
Vielen Dank im VORAUS.
Meli

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfelder aktivieren und mehrere Blätter als 1PDF
25.06.2018 19:00:54
Richard
Hey Meli,
hast du über die Umbruchvorschau im Seitenlayout die Seiten für den Druckbereich schon angepasst?
Gruß
Richard
AW: Textfelder aktivieren und mehrere Blätter als 1PDF
26.06.2018 08:29:29
Meli
Hallo,
ja, bei den einzelne Blätter (zwischen Datenblatt und Inputs) ist der Druckbereich auf einer Seite justiert.
Gruß, Meli
AW: Textfelder aktivieren und mehrere Blätter als 1PDF
26.06.2018 15:38:37
fcs
Hallo Meli,
in einigen Blättern musst du den Druckbereich anpassen, damit die Grafiken etc vollständig ins PDF übernommen werden. Kann man natürlich versuchen per Makro anzupassen, aber das ändert sich doch nie?.
Die zu druckenden Blätter kann man in einem Array sammeln. Das hab ich auch schon hinbekommen.
Problem: Kopieren Grafiken. Diese muss man einzeln in die jeweiligen Blätter Kopieren.
Das funktioniert Theoretisch, aber bei den Namen der Grafiken gibt es irgendwie Kummer mit Deutschen Namen wie angezeigt und den US-Namen, die Excel parallel verwaltet. Da muss ich noch tüfteln.
Welche Grafik ist es denn? In welchem Blatt ist die denn, finde jedenfalls nicht das von dir in deiner Frage angegeben Blatt.
Tip: Du hat bei einigen Blatnamen am Ende ein Leerzeichen - ist das Absicht? Ich hasse das, denn beim prüfen von Namen im Code übersieht man das schnell mal und die Makros steuern in eine unerwünschte Richtung.
Gruß
Franz
Anzeige
AW: Textfelder aktivieren und mehrere Blätter als 1PDF
26.06.2018 16:06:49
Meli
Hallo Franz,
danke für deine Infos/Fragen. Hier kommen die Antworten/Bemerkungen:
1) okay, werde zukünftig darauf achten, dass der Druckbereich die Textfelder mit einbezieht. Bei solchen Blätter ist mir dies jedoch später aufgefallen, weil der Text dann abgeschnitten wurde. Grundsätzlich wurde der Textfeld aber angezeigt/ausgedruckt nur nicht vollständig - allerdings erst wenn ich es aktiv vorher markiert habe. Deswegen bräuchte ich irgendeine Makro, um diese Felder zu aktivieren.
2)Wie sieht das Array-Formel aus, um die einzelne Blätter in Summe als ein PDF anzeigen/auszudrucken zu lassen?
3)Das Blatt wo die Graphik war musste ich löschen wegen Begrenzung der Upload-Dateigröße. Allerdings ist die gleiche Graphik auch im Blatt "IT" oben rechts. Das ist die Graphik mit den grün,gelb und roten Kästchen.
Aber wenn es per Makro nicht möglich ist, dann werde ich es händisch machen.
4)Ich nehme gerne dein Tipp an. Nein, es ist keine Absicht Leerzeichen im Blattnamen zu haben :-(. Werde zukünftig darauf auch achten.
Es wäre super, wenn du mir noch v.a. beim Punkt 1 und 2 weiterhelfen könntest. "Nice to have", wenn bei 3 auch eine Lösung hättest.
Vielen DANK im Voraus!!
Meli
Anzeige
AW: Textfelder aktivieren und mehrere Blätter als 1PDF
27.06.2018 04:16:10
fcs
Hallo Meli,
ich hab dir in deiner Datei im Modul "Modul_Make_PDF" 3 Makros eingebaut für
  • Ausgabe PDF-Datei

  • Anpassung der Druckbereiche
    hier kannst du bei jedem Blatt entscheiden, ob der Bereich angepasst werden soll.
    ggf. kann man ja auch eine Ausnahmeliste von Blättern im Makro integrieren deren Druckbereich nie angepasst werden soll.

  • Kopieren der Grafik
    hier ist wichtig, dass der Name der Grafik im Blatt "allg. Info" geändert wird!
    Ich hab das Makro jetzt unter Office 365, Excel 2016 getestet - die Probleme waren unter Excel 2010.
    Das Makro prüft, ob an Zelle E1 schon ein Shape-Objekt (grafik) vorhanden ist, löscht dieses ggf. und fügt die neue Grafik ein. Im Code ist eine Ausnahmeliste enthalten mit Blättern in die die Grafik nicht kopiert werden soll.

  • Inhalt in den Textboxen teilweise ersetzen
    Die Anpassung des Inhalts per Makro ist extrem komliziert, da die Textboxen unterschiedliche Formatierungen enthalten.
    Lösung:
    Verteile den Inhalt jeweils auf 2 Textboxen draus. Eine Textbox für die 1. Zeile in der du den Zeitraum ersetzen willst und eine Textbox für den Rest. Die Textboxen die die 1.Zeile enthalten sollen kannst du jetzt mit einer Zelle verknüpfen, die den gewünschten Text enthält. So wird die Apassung einfach.
    Zu Leerzeichen im Blattnamen.
    Es geht darum am Anfang oder am Ende des Blattnamens keine Leerzeichen zu verwenden.
    Ein Blattname aus mehreren mit Leerzeichen getrennten Wörtern ist kein Problem.
    Da die modifizierte Datei etwas über dem 300kB Limit liegt hab ich sie vor dem Hochladen nochmals ZIP-komprimiert.
    https://www.herber.de/bbs/user/122341.zip
    Gruß
    Franz
    Anzeige
    AW: Textfelder aktivieren und mehrere Blätter als 1PDF
    27.06.2018 09:15:10
    Meli
    Hallo Franz,
    waauuhh! Danke für deine ganze Arbeit!!! Auch die ganzen Erklärungen dazu finde ich super hilfreich, damit ich es verstehe was Makro macht. Vor allem das Makro mit der Grafik kopieren ist top!!
    Das Makro mit der PDF-erstellen ist leider noch nicht ganz optimal für mich.
    Das Makro erstellt leider zwei unterschiedliche Ergebnisse (leider konnte ich das PDF hier nicht hochladen, deswegen nur ein Bild von einer Seite als jpg).
    Wenn ich das Makro gleich am Anfang starte, dann erscheinen die Textfelder nicht auf dem Blatt (siehe Bild). Dieses Problem habe ich leider mit meinem Excel 2010 immer wieder:-(. Allerdings wenn ich das Makro Grafik vorher abspiele, dann funktioniert das Makro "PDFerstellen" richtig. Ich vermute dadurch werden die Blätter mit Textfelder irgendwie aktiviert...?
    Da ich ja nicht immer das Makro "Grafik einfügen" vorher abspielen kann, hast du noch eine Idee, was ich da noch machen kann, damit das Makro von Anfang an auch in Excel 2010 funktioniert?
    Außerdem wollte ich fragen, wie/wo ich das Makro abändern kann, dass ich bei Dateiname-Vergabe flexibler bin? (da ich manchmal doch unterschiedliche PDF-Versionen von einer Datei abspeichern muss). Sorry für die Änderung, aber es würde für mich deswegen auch schon reichen, quasi die Seitenansicht anzeigen lassen und als PDF drucken. Anschließend werde ich normalerweise von Excel sowieso gefragt, wo und mit welcher Namen ich die PDF-Datei abspeichern möchte...
    Danke für den tollen Tipp mit den Textfeld in 2 Teile zu machen und per Formel zu knüpfen. Das ist eine sehr gute Idee, weil ich so zukünftig flexibler sein kann (falls Zeitraum sich wieder ändert).
    Hier das Bild:
    Userbild
    Gruß
    Meli
    Anzeige
    AW: Textfelder aktivieren und mehrere Blätter als 1PDF
    27.06.2018 09:21:08
    Meli
    Sorry, bei der oberen Bemerkung habe ich vergessen das Häckchen zu setzen, dass ich noch eine Rückfrage habe...
    AW: Textfelder aktivieren und mehrere Blätter als 1PDF
    29.06.2018 08:33:29
    fcs
    Hallo Meli,
    ich habe alles mögliche probiert, um die PDF-Erstellung in einem Durchlauf zu schaffen.
    Fehlanzeige.
    Ich hab es jetzt so umgesetzt, das man die Erstellung in 2 Schritten machen muss.
    1. Vorbereitung PDF-Erstellung ohne Anzeige PDF
    2. Erstellung PDF mit PDF-Anzeige.
    Gruß
    Franz
    Option Explicit
    Private strPfadPDF$, bolPDFanzeigen As Boolean
    Sub prcMakePDF_1_vorbereiten()
    PDF-Erstellung vorbereiten
    strPfadPDF = ""
    bolPDFanzeigen = False
    prcMakePDF
    End Sub
    Sub prcMakePDF_2_fertigstellen()
    'PDF fertigstellen
    If strPfadPDF = "" Then
    MsgBox "Bitte erst das Vorbereitungs-Makro starten"
    Else
    bolPDFanzeigen = True
    prcMakePDF
    End If
    End Sub
    Private Sub prcMakePDF()
    Dim objSheet As Object
    Dim intB As Integer
    Dim intS As Integer
    Dim strPfad$, strPDF$
    Dim varItem
    Dim arrSheets()
    Dim objAktiv As Object
    intS = -1 'Zähler für Elemente im Array
    Set objAktiv = ActiveSheet
    Application.Calculate
    For intB = 1 To ActiveWorkbook.Sheets.Count
    Set objSheet = ActiveWorkbook.Sheets(intB)
    'Blattname prüfen
    If objSheet.Name = "Datenblatt" Then
    'nach diesem Blatt werden Blattnamen ins Array übernehmen
    intS = 0 'Startwert für Zähler setzen
    ElseIf objSheet.Name = "Inputs>>" Then
    'Bei diesem Blattnamen Einlesen beenden
    Exit For
    ElseIf intS >= 0 Then
    'Prüfen, ob Blatt sichtbar
    If objSheet.Visible = xlSheetVisible Then
    'Array vergrößern und Blattname übernehmen
    intS = intS + 1
    ReDim Preserve arrSheets(1 To intS)
    arrSheets(intS) = objSheet.Name
    End If
    End If
    Next
    If intS  0 Then
    .FilterIndex = intS
    Exit For
    End If
    Next
    .Title = "Bitte Verzeichnis/Name für PDF-Datei auswählen/eingeben"
    .InitialFileName = strPDF
    If .Show = -1 Then
    strPfadPDF = .SelectedItems(1)
    End If
    End With
    End If
    If strPfadPDF  "" Then
    Application.Calculate
    With ActiveWorkbook
    'im Array gesammelte Blätter gruppieren für PDF-Ausgabe
    .Sheets(arrSheets).Select
    'Blätter als PDF exportieren
    ActiveSheet.ExportAsFixedFormat xlTypePDF, strPfadPDF, _
    Ignoreprintareas:=False, OpenAfterPublish:=bolPDFanzeigen
    End With
    End If
    'Gruppierung wieder aufheben
    objAktiv.Select
    End Sub
    

    Anzeige
    AW: Textfelder aktivieren und mehrere Blätter als 1PDF
    26.06.2018 16:00:55
    Richard
    Hi Meli,
    probier mal das so?
    Dim wks As Worksheet
    Application.DisplayAlerts = False
    For Each wks In ActiveWorkbook.Worksheets
    wks.PageSetup.Orientation = xlLandscape
    Next
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & "ProjektExcel" & ".pdf", Quality:=xlQualityStandard _
    , Includedocproperties:=False, IgnorePrintareas:=False, From:=3, To:=8, openafterpublish:=True
    Application.Dialogs(xlDialogSaveAs).Show
    Application.EnableEvents = False
    'Application.Quit (optional)
    AW: Textfelder aktivieren und mehrere Blätter als 1PDF
    27.06.2018 09:19:51
    Meli
    Danke Richard für deinen Code!
    Es funktioniert, aber wie ich bereits Franz geschrieben habe, auch mit deinem Makro erscheinen die Textfelder nicht auf dem Blatt (siehe Foto, das ich bei Franz hochgeladen habe). Dieses Problem habe ich leider mit meinem Excel 2010 immer wieder:-(.
    Allerdings wenn ich Franz´s Makro "Grafik vorher abspiele" vorher abspiele, dann funktioniert das Makro richtig und alle Textfelder werden angezeigt. Da ich es ja nicht immer dieses Makro vorher abspielen kann, hast du evtl. auch eine Idee, was ich da noch machen kann, damit das Makro auch bei mir in Excel 2010 funktioniert und gleich alle Textfelder "aktiviert" werden und auf dem PDF-Ausdruck angezeigt werden?
    DANKE im Voraus,
    Meli
    Anzeige

    313 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige