ich habe von meinem Vorgänger einen VBA-Code übernommen und verzweifle an diesem.
Folgende Situation:
Der unten stehende Code druckt eine Reihe verschiedener Dokumente in einer festgelegten Reihenfolge aus verschiedenen Arbeitsmappen. Auf diesen Dokumenten sind Grafiken mit Datentabelle. Jetzt wird es etwas kompliziert. In der Datentabelle sind Werte mit 2 Nachkommastellen aufgeführt (Bsp. 1,23). Bis hierhin läuft alles einwandfrei. Nun soll es aber Werte mit 4 Nachkommastellen geben (Bsp. 1,2345). Nun zerschießt der Code meine Formatierung auf die Werte 0.0000. Also aus dem Komma einen Punkt und löscht alle Werte.
Ich habe im Code die Zeilen fett markiert, wo er die Formatierung ändert. Ich hoffe, mir kann hier jemand helfen.
Besten Gruß
Jonas
Option Explicit
Public Sub DruckenInfo()
Dim Seitenzahl As String 'Seitenzahl zur Angabe in der Fußzeile
'Variablen zur Speicherung Dateinamen aus Steuerungstabelle. [Dateiname] = Name der _
aktuelle zu bearbeitenden Datei,
'[DateinameAlt] = Dateiname der letzten bearbeiteten Datei
Dim Dateiname As String, DateinameAlt As String
Dim Blattname As String 'Name des zu druckenden tabellenblattes aus Exceltabelle mit Name = _
[Dateiname]
Dim rng As Range 'Range-Objekt zum Durchlauf der Steuerungstabelle "Seitenzahlen"
Dim wbOpen As Workbook 'Variable für die jeweils für den Druck zu öffnende Excel-Mappe
Dim ws As Worksheet 'Variable für die zu druckende Tabelle in der Mappe [wbOpen]
'Range-Objekt für den Durchlauf der Tabelle "Seitenzahlen" inialisieren und auf Zelle "A2" _
setzen. Dann auf
'das Tabellenblatt wechseln und diese Zelle auswählen
Set rng = ThisWorkbook.Worksheets("Seitenzahlen").Range("A2")
ThisWorkbook.Worksheets("Seitenzahlen").Activate
rng.Select
'Solange in einer Schleife die Tabelle durchlaufen, wie die Zellen in Spalte A nicht leer _
sind
Do While rng ""
Seitenzahl = rng.Offset(, 1) 'Seitenzahl für Druck mit einer Spalte Versatz von der _
ausgeählten Zelle auslesen
Dateiname = rng.Offset(, 2) 'Dateiname hat 2 Spalten Versatz
Blattname = rng.Offset(, 3) 'Blattname hat 3 Spalten Versatz
'Abgleich der Variablen [DateinameAlt] und [Dateiname]. Ist [DateinameAlt] leer, dann _
wird die Schleife zum
'ersten Mal durchlaufen und die Excelmappe [Dateiname] muss für den Druck geöffnet _
werden. Bei späteren
'Schleifendurchlaufen ist [DateinameAlt] nicht mehr leer. Dann wird geprüft, ob sich _
aktueller und letzter
'Dateiname unterscheiden und nur bei Bedarf die nächste Excelmappe geöffnet
If DateinameAlt = "" Then
Debug.Print Now, "Öffne Datei : " & Dateiname
'Set wbOpen = Workbooks.Open(Dateiname, False)
Workbooks.Open Dateiname, False, Local:=True
Set wbOpen = ActiveWorkbook
ElseIf DateinameAlt Dateiname Then
Debug.Print Now, "Schließe Datei : " & wbOpen.Name
wbOpen.Close False
Debug.Print Now, "Öffne Datei : " & Dateiname
'Set wbOpen = Workbooks.Open(Dateiname, False)
Workbooks.Open Dateiname, False, Local:=True
Set wbOpen = ActiveWorkbook
End If
'In der geöffneten Arbeitsmappe für den Druck zum richtigen Tabellenblatt wechseln
Debug.Print Now, "Drucke Tabellenblatt : " & Blattname
Set ws = wbOpen.Sheets(Blattname)
ws.Select
'Wenn Seitenzahl (vgl. Steuerungstabelle "Seitenzahl") > 0 ist, dann die in den
'rechten Abschnitt der Fußzeile schreiben
If Seitenzahl "0" Then ws.PageSetup.RightFooter = "&" & Chr(34) & "Arial, _
Standard" & Chr(34) & "&8&" & "Seite " & Seitenzahl
'Das ausgewählte Tabellenblatt drucken
ActiveSheet.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, _
ActivePrinter:="PDFCreator"
DateinameAlt = Dateiname 'Den Dateinamen für den Abgleich (s.o) zwischenspeichern
Set rng = rng.Offset(1) 'In der Steuerungstabelle zur nächsten Zeile
Loop
Set ws = Nothing
wbOpen.Close False: Set wbOpen = Nothing
Debug.Print "Beendet"
MsgBox "Beendet"
End Sub