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

PDF-Erstellung - Farbgebung fehlerhaft (Umstellung Excel21)

PDF-Erstellung - Farbgebung fehlerhaft (Umstellung Excel21)
18.01.2024 16:11:28
Justin Kunze
Ich sammle mit einer UserForm die entsprechenden Excel-Sheets, die in ein PDF zusammengefasst werden sollen.

Nun wurde bei uns von Excel 10 auf Excel 21 umgestellt und prompt geht einiges nicht mehr. Mein jetziges Problem betrifft die PDF-Erstellung über VBA. Hier habe ich in den Excel-Sheets einige Felder mit Farben unterlegt und es kommt je nach Seite und Farbe skurille PDF's raus.
Statt Hellbraun und beige oder Schwarz und grün wird alles grau abgestuft.
Wisst ihr woran das liegt?

Hier mein Code für das Sammeln der Blätter:

Public Sub ArrayFüllen_chkMaschinenkarte()
'Ein Array deklarieren mit i Einträgen (Index maximal von 0 bis 4, minimal 0)
Dim Anzahl&

VariableBlätter = ""

'** Festlegen, welche Tabellenblätter gedruckt werden sollen, nur die mit Haken
If UFDrucken.chkDeckblatt.Value = True Then
With Worksheets(1).PageSetup
.Orientation = xlPortrait 'Hochformat einstellen (=1)
'****** ÄNDERUNGEN
.PrintArea = "$A$1:$H$70"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.RightHeader = ""
.LeftHeader = ""
.CenterHeader = ""
.RightFooter = ""
.LeftFooter = ""
.CenterFooter = ""
End With
VariableBlätter = Worksheets(1).Name & ";" 'Deckblatt einfügen
End If

If UFDrucken.chkTermine.Value = True Then
With Worksheets(2).PageSetup
.Orientation = 1 'Hochformat einstellen
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
VariableBlätter = VariableBlätter & Worksheets(2).Name & ";" ' Termine einfügen
End If

If UFDrucken.chkStandard.Value = True Then
Select Case True
Case Worksheets(3).Columns("D").EntireColumn.Hidden 'Standard eingekürzt ohne Erklärungen
With Worksheets(3).PageSetup
.Orientation = 1 'Hochformat einstellen
'****** ÄNDERUNGEN
.PrintArea = "$A$1:$G$55"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Case Else 'Standard nicht eingekürzt, also mit Erklärungen
With Worksheets(3).PageSetup
.Orientation = 2 'Querformat einstellen
'****** ÄNDERUNGEN
.PrintArea = "$A$1:$G$55"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
End Select
VariableBlätter = VariableBlätter & Worksheets(3).Name & ";" 'Standardbaugruppen einfügen
End If

If UFDrucken.chkOptionen.Value = True Then
Select Case True
Case Worksheets(4).Columns("D").EntireColumn.Hidden 'Optionen eingekürzt ohne Erklärungen
With Worksheets(4).PageSetup
.Orientation = 1 'Hochformat einstellen
'****** ÄNDERUNGEN
.PrintArea = "$A$1:$G$50"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Case Else 'Optionen nicht eingekürzt, also mit Erklärungen
With Worksheets(4).PageSetup
.Orientation = 2 'Querformat einstellen
'****** ÄNDERUNGEN
.PrintArea = "$A$1:$G$50"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
End Select
VariableBlätter = VariableBlätter & Worksheets(4).Name & ";" 'Optionsbaugruppen einfügen
End If

If UFDrucken.chkTypenschild.Value = True Then
With Worksheets(5).PageSetup
.Orientation = 1 'Hochformat einstellen
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
VariableBlätter = VariableBlätter & Worksheets(5).Name & ";" 'Typenschild einfügen
End If

If VariableBlätter = "" Then
Drucksammlung = Split(VariableBlätter, ";") 'Split-Funktion macht aus der String-Variablen 'VariableBlätter' einen 1D-Array
Else
Anzahl = Len(VariableBlätter) 'Bestimmung der Länge des Strings
VariableBlätter = Left(VariableBlätter, Anzahl - 1) 'Löschen des letzten Semikolons

Drucksammlung = Split(VariableBlätter, ";") 'Split-Funktion macht aus der String-Variablen 'VariableBlätter' einen 1D-Array
End If

End Sub

Und hier der Code für den Druckbefehl:

Public Sub Maschinenkarte_PDFundDrucken()
Dim SpeicherName As String
Dim Speicherpfad As String

'PDF erstellen, Speicherort auswählen und abspeichern, PDF öffnen und über den Viewer drucken
On Error GoTo Fehler

'Speichername und SpeicherPfad angeben, wo normalerweise gespeichert wird
SpeicherName = InputBox("Wie soll die Datei heißen?", "Speichername angeben", "MaschinenkarteXY")

If SpeicherName = "" Then
MsgBox "Kein Name zum Speichern angegeben", vbCritical, "Konfigurator wird jetzt geschlossen"
Exit Sub
End If

'Abfrage des Speicherpfades --> Speichern unter
If MsgBox(prompt:="Möchtest du die Maschinenkarte nun speichern?", Buttons:=vbYesNo _
+ vbQuestion, Title:="Speichern?") = vbNo Then Exit Sub
Speicherpfad = Application.GetSaveAsFilename( _
InitialFileName:="W:\" & SpeicherName, _
FileFilter:="PDF-Datei (*.pdf),*.pdf", _
Title:="Speicherpfad auswählen oder eingeben")
'Übertragung des gewünschten Speichernamens, des gewünschten Dateiformates und Titel des Fensters

Application.EnableEvents = False

Sheets(Drucksammlung).Copy
'hier befinden sich nur noch die ausgewählten Checkbox-Elemente in einer temporären Arbeitsmappe

MsgBox "Drucken bitte über den PDF-Viewer starten!", vbOKOnly + vbExclamation, "Druckauftrag einleiten"

With ActiveWorkbook
.ExportAsFixedFormat Type:=xlTypePDF, FileName:=SpeicherName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
.Close SaveChanges:=False 'Temporäre Arbeitsmappe wird geschlossen
End With

Application.EnableEvents = True

Exit Sub

Fehler:
MsgBox "Da ist wohl was schief gelaufen (Prozedur Maschinenkarte_PDFundDrucken)", vbInformation

End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PDF-Erstellung - Farbgebung fehlerhaft (Umstellung Excel21)
18.01.2024 17:53:06
Marc
Als erstes würde ich immer empfehlen bei

On Error

auch den Fehler mit aus zu geben



Fehler:
MsgBox "Da ist wohl was schief gelaufen (Prozedur Maschinenkarte_PDFundDrucken) Fehler: " & Err.Description , vbInformation

End Sub



so erhälst du eine Rückmeldung und kannst den Fehler eingrenzen

Die Frage für mich ist, wie die Farben hinterlegt sind.. direkte Farbwahl oder über bedingte Formatierung ?
Wäre es möglich z.B. ein einzelnes Feld mal mit VBA einer Farbe zu zuordnen, und schauen was dann passiert?
Sehe hier keine Farbwahl in dem Script, und damit hat VBA erstmal nix mit der "falschen" Farbwahl zu tun, da es nix ändern nur übernimmt...

Anzeige
AW: PDF-Erstellung - Farbgebung fehlerhaft (Umstellung Excel21)
19.01.2024 07:48:31
Justin Kunze
Guten Morgen,
danke erst einmal für die schnelle Hilfe und den Tipp.

Ich habe das mit dem Einfärben getestet.
Das hat funktioniert.
Ich habe versucht mal eine Word-Datei hochzuladen, weiß aber nicht, ob das geht (PDF geht ja nicht).
Welche Dateiformate gehen denn überhaupt?

Also scheint es so zu sein, dass bei der PDF-Erstellung die Farben flöten gehen, allerdings auch nicht bei jedem Reiter und nicht vollständig. Das verwirrt mich halt.

Einige Reiter haben alle Farben drin.
Bei einem Reiter ist eine Farbe anders als dargestellt.
Bei einem Reiter ist alles grau (siehe Datei).
Und bei einem Reiter ist alles grau, bis auf den Text!

Wie kann das sein?

Beste Grüße
Justin


Anzeige
AW: PDF-Erstellung - Farbgebung fehlerhaft (Umstellung Excel21)
19.01.2024 08:06:51
Justin Kunze
Außerdem weiß ich nicht genau, wie ich die Zellen über VBA einfärbe, wenn ich verbundene Zellen habe (zeilenweise oder auch über mehrere Zeilen und Spalten), beispielsweise soll auf Blatt 1, Zellen A4-A6, welche verbunden sind, braun werden.

Oder es sollen auf Blatt 2, Zellen B4-C6, die auch wieder verbunden sind, hellgrau werden.

Kann man bei der PDF-Erstellung über VBA, also über meinen Code oben irgendwie einwirken, dass er die Farben, die ich in dem Excel-Sheet zugewiesen habe in die PDF übernimmt? Also praktisch in Farbe oder in SW?

Grüße Justin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige