Drucken eines Legacy- / Mainframe-Berichts in Excel / VBA

1244
Nick S

Ich versuche, einen Weg zu finden, einen "Mainframe" -Stilbericht mit VBA zu drucken. Ich versuche, die Datei mit Excel zu öffnen, aber es ist sehr problematisch, sie ordnungsgemäß zu formatieren und zu drucken. Ich frage mich, ob jemand Code oder Vorschläge hat.

Details: Der Bericht, den ich zu drucken versuche, ist ungefähr 133 Zeichen breit. Die Daten werden in Spalten mit fester Breite formatiert. Die Seiten sind durch Formular-Feed-Zeichen (ASCII-Code 12) getrennt.

Was ich suche, ist eine Möglichkeit, diesen Bericht an einen Drucker zu senden, im Querformat eine Seite mit allen 133 Zeichen auf jeder Seite und Seitenumbrüchen bei jedem Formfeed.

Wenn jemand andere Vorschläge als die Verwendung von Excel hat, kann ich sie auch hören.

Vielen Dank! Nick

1

2 Antworten auf die Frage

0
Julian Knight

Wenn Sie den Bericht nicht formatieren müssen, hilft Ihnen Excel hier nicht.

Ich würde vorschlagen, einen anständigen Texteditor wie Notepad ++ zu verwenden

Öffnen Sie den Bericht im Editor, gehen Sie zu den Seiteneinstellungen und stellen Sie auf Querformat ein. Passen Sie die Ränder so an, dass sie klein sind. Sie müssen auch die Zoomstufe anpassen, damit alles passt. Stellen Sie sicher, dass Sie die Funktion "Zeilenumbruch" ** deaktiviert haben, und führen Sie eine Druckvorschau aus, um zu sehen, wie alles passt.

Man könnte dies auch in Word zur Not tun. Richten Sie die Seite wie oben beschrieben ein, stellen Sie die Schrift auf einen relativ kleinen und festen Abstand ein (z. B. Lucida Console).

Wenn Sie nicht weiterkommen, versuchen Sie, den Text passend zu machen. Installieren Sie ein Print-to-PDF-Dienstprogramm (es gibt mehrere kostenlose, ich verwende Nitro PDF Creator 2. Stellen Sie die Seitengröße auf A3-Querformat anstelle von A4 ein, drucken Sie in PDF und drucken Sie dann das PDF-Format in A4-Querformat aus. Natürlich benötigen Sie eine Lupe!

0
Nick S

Entschuldigung, ich habe vielleicht in meiner ursprünglichen Frage nicht klargestellt, dass ich nach einer Möglichkeit suche, dies programmgesteuert durchzuführen.

Die beste Lösung, die ich gefunden habe, war die Verwendung des folgenden VBA-Codes zum Fahren von Excel. Ich musste am Anfang jeder Zeile ein Pipe-Zeichen hinzufügen, damit Excel die linken Leerzeichen nicht entfernt (es gibt wahrscheinlich eine bessere Lösung, aber ich konnte es nicht herausfinden).

Dim XL As New Excel.Application Dim WB As New Excel.Workbook Dim WS As New Excel.Worksheet  XL.Workbooks.OpenText myFile, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(133, 9))  Set WB = XL.ActiveWorkbook  Set WS = WB.Worksheets(1)  WS.Columns("A:Z").Select  XL.Selection.Columns.AutoFit XL.Selection.Font.Size = 10 XL.Selection.RowHeight = 12.5  For r = 1 To WS.UsedRange.Rows.Count ' This adds the page breaks at the Form Feed characters If InStr(WS.Cells(r, 1), Chr(12)) Then WS.Cells(r, 1).Select XL.ActiveWindow.SelectedSheets.HPageBreaks.Add XL.ActiveCell End If Next r  With WS.PageSetup .Orientation = xlLandscape .LeftMargin = XL.InchesToPoints(1) .RightMargin = XL.InchesToPoints(0) .TopMargin = XL.InchesToPoints(0.5) .BottomMargin = XL.InchesToPoints(0) .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = False End With  WB.PrintOut  WB.Close False XL.Quit Set XL = Nothing