1

Я пытаюсь найти способ печати отчета в стиле "мэйнфрейма" с использованием VBA. Я пытаюсь открыть файл в Excel, но очень сложно заставить его правильно отформатировать и распечатать, и мне интересно, есть ли у кого-нибудь существующий код или предложения.

Детали: отчет, который я пытаюсь распечатать, имеет ширину около 133 символов; данные форматируются в столбцы фиксированной ширины; страницы разделены символами подачи формы (код ASCII 12).

То, что я ищу, - это способ отправки этого отчета на принтер в горизонтальном режиме, шириной в одну страницу со всеми 133 символами на каждой странице, с разрывами страниц на каждом канале формы.

Если у кого-то есть какие-либо предложения, кроме использования Excel, я также готов выслушать их.

Спасибо! Ник

2 ответа2

0

Если вам не нужно форматировать отчет, Excel не поможет вам здесь.

Я бы предложил использовать достойный текстовый редактор, такой как Notepad++

Откройте отчет в редакторе, перейдите на страницу настроек и установите альбомную ориентацию. Отрегулируйте поля до наименьшего значения. Вам также нужно будет отрегулировать уровень масштабирования, чтобы подогнать все по размеру. Убедитесь, что вы выключили ** любую * функцию "перенос слов" и выполните предварительный просмотр, чтобы увидеть, как все устроено.

Вы могли бы также к этому в Word в крайнем случае. Настройте страницу, как указано выше, установите шрифт с довольно небольшим фиксированным шагом (например, Lucida Console).

Если вы застряли, пытаясь привести текст в соответствие. Установите утилиту печати в PDF (есть несколько бесплатных, я использую Nitro PDF Creator 2. Установите размер страницы в формате A3 вместо A4, распечатайте в PDF, а затем напечатайте PDF в формате A4, размер должен измениться ОК. Конечно, вам может понадобиться увеличительное стекло!

0

Извините, я, возможно, не дал понять в своем первоначальном вопросе, что я ищу способ сделать это программно.

Лучшее решение, которое я нашел, было использовать следующий код VBA для управления Excel. Мне пришлось добавить символ канала в начале каждой строки, чтобы Excel не убирал пробелы в левом отступе (возможно, есть лучшее решение, но я не смог его выяснить).

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .