Документы word на матричном принтере

Аватара пользователя

uav1606

Advanced Member
Сообщения: 5705
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество



Проблема с печатью из-под MS Word на матричном принтере

Вертикальный текст в таблицах не попадает в границы ячеек

Собственно, при печати из-под MS Word 97 и MS Word 2003 таблицы с вертикальным текстом в ячейках, этот самый текст выползает за пределы ячеек. Печатаю на матричном принтере Epson LX-1050+
С настройками совместимости игрался — этот вариант не предлагать. :-) «Использовать параметры принтера при разметке документов» включал, «Совместимость с Microsoft Word 6.0/95» и т.д. — не помогает…
А так таблицы печатаются нормально — горизонтальный текст и прочее. Проблема только с вертикальным текстом.


Аватара пользователя

Дениска

Advanced Member
Сообщения: 1788
Зарегистрирован: 06.08.2009,15:13
Откуда: Хабаровск
Контактная информация:

Вклад в сообщество

Сообщение

Дениска » 11.02.2010,16:51

Тест печати выводил (виндовый) ?


UFO

Почётный пользователь
Сообщения: 5650
Зарегистрирован: 12.12.2006,17:24

Вклад в сообщество

Сообщение

UFO » 11.02.2010,17:10

uav1606 писал(а):Печатаю на матричном принтере Epson LX-1050+

А драйвер принтера какой установлен?
Как вариант — попробовать использовать драйвер Epson FX-1000 вместо Epson LX-1050+.


Гость

Сообщение

Гость » 11.02.2010,17:11

Переведи дрюкер в графический режим, если возможно, настрой драйвер на предварительную растеризацию перед непосредственно печатью(упадёт скорость). Отключи авто-подстановку встроенных в дрюкер(драйвер) шрифтов.
Цель — заставить дрюкер печатать «фотку» вордовой страницы.
Ошибка будет меньше, но полностью от оной не избавиться, ибо растеризация страницы с «кучей dpi(lpi)» намного миниатюрнее размера иголок у дрюкера. Неизбежны ошибки округления(рябой шрифт). Плюс к тому ворд 6.0 не отличался работой с вертикальным текстом, на экране лепил строки друг-на-друга, а при печати строго соблюдал (минимальный) межстрочный интервал…


Aleksandr SHCH

Advanced Member
Сообщения: 1042
Зарегистрирован: 03.09.2007,11:11
Откуда: Химки

UFO

Почётный пользователь
Сообщения: 5650
Зарегистрирован: 12.12.2006,17:24

Вклад в сообщество

Сообщение

UFO » 11.02.2010,17:39

Fe-Restorator писал(а):ворд 6.0 не отличался работой с вертикальным текстом

Fe-Restorator, а при чём здесь Word 6.0?

uav1606 писал(а):при печати из-под MS Word 97 и MS Word 2003


UFO

Почётный пользователь
Сообщения: 5650
Зарегистрирован: 12.12.2006,17:24

Вклад в сообщество

Сообщение

UFO » 11.02.2010,17:43

uav1606 писал(а):С настройками совместимости игрался — этот вариант не предлагать. :-) «Использовать параметры принтера при разметке документов» включал, «Совместимость с Microsoft Word 6.0/95» и т.д. — не помогает…

Кстати, а пробовал ли после этих настроек сохранить документ как шаблон normal.dot?
Иногда тоже помогает…


Аватара пользователя

uav1606

Advanced Member
Сообщения: 5705
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество



Сообщение

uav1606 » 11.02.2010,17:45

UFO, смена драйвера принтера не помогла.
Fe-Restorator, Вы несёте какую-то чушь. Какой графический режим? Он и так в винде графический по умолчанию всегда. Это чтобы текстовый поставить надо постараться… И причём здесь «ворд 6.0»? Я же писал, что печатал с Word 97 и 2003. Я же написал, что просто пробовал включать «Совместимость с Microsoft Word 6.0/95» — это как раз советуют при таких проблемах. И без неё почти так же…
Aleksandr SHCH, в первую очередь это и смотрел. Настройки эти, как я уже писал, менял. Драйвер у них на сайте лежит из состава Windows XP — там ссылка на сайт Microsoft’а. :-(
Добавлено:
Как normal.dot сохранил — не помогло.


UFO

Почётный пользователь
Сообщения: 5650
Зарегистрирован: 12.12.2006,17:24

Вклад в сообщество

Сообщение

UFO » 11.02.2010,19:00

uav1606, для информации — а какая ОСь на компе?


Аватара пользователя

uav1606

Advanced Member
Сообщения: 5705
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество



Сообщение

uav1606 » 11.02.2010,19:09

Пока пробовал только из XP. Надо ещё из 98-й попробовать…


Как Вы и ожидали после моей предыдущей статьи («Как Visual FoxPro печатает…»), в данной статье будет освещен процесс печати данных из приложений Microsoft Office (примеры в Excel и Access). Повторюсь, что особенностью публикации является рассмотрение вывода на матричный принтер в текстовом режиме. Как уже упоминалось в предыдущей статье, существует масса документов, для которых не требуется высокое качество, достижимое на современных лазерных или струйных принтерах, например, квитанции, абонентские счета, расчетные листки по зарплате и пр.

Для них основными факторами выбора печатающего устройства являются скорость печати и дешевизна расходных материалов, поэтому матричные принтеры не скоро уйдут с рабочих столов в абонентских службах и бухгалтерии предприятий, а также банков. И поэтому не стоит унижать простых пользователей, обвиняя их в консерватизме. Зачастую такой выбор принтера напрямую вытекает из решаемых прикладных задач. В этом случае, рекомендую самим немного поработать и адаптировать существующие офисные приложения.

Данный процесс требует некоторых навыков программирования на Visual Basic for Applications, встроенном в MS Office, но будьте уверены — практический результат оправдает все Ваши усилия.

Как уже было описано в предыдущей статье, основная идея состоит в следующем — программируем вывод в виде текстового файла, а затем с помощью .BAT-файла (который запускается в сессии DOS) копируем текстовый файл на принтер.

Для этого необходимо дополнительно настроить принтер. Зайдите в меню кнопки «Пуск / Настройка / Принтеры» и щелкните правой кнопкой по значку матричного принтера. Зайдите в «Свойства» и откройте закладку «Сведения». Нажмите «Параметры порта» и в появившемся окне отметьте галочкой пункт «Очередь для заданий печати DOS».

Создайте .BAT-файл (например, MATRIX.BAT в каталоге «Мои документы») и впишите в него единственную строку:

COPY %1 TO PRN

Она дает команду операционной системе копировать файл, указанный в параметре на устройство PRN, т.е. на принтер. Вообще-то, имя PRN — синоним имени LPT1, которые оба указывают на один и тот же порт принтера. Если же у Вас матричный принтер подключен к другому порту либо он сетевой, то лучше сразу указать имя порта.

Потом в корневом каталоге на диске С: создайте файл-ярлык MATRIX.PIF, указывающий на MATRIX.BAT, откройте его свойства и на закладке «Программа» включите параметр «Закрывать окно по завершении сеанса работы», а на закладке «Разное» пункт «Фоновый режим / Полная остановка» обязательно выключите.

Сначала рассмотрим адаптацию существующей таблицы Excel. Для этого нам понадобятся панели «Visual Basic» и «Элементы управления». Установите их через меню «Вид / Панели инструментов». Далее найдите на них кнопку «Редактор Visual Basic» — запустится вышеназванный редактор макросов.

Создайте новый модуль и впишите в него следующую строку:

PUBLIC DECLARE FUNCTION WinExec LIB «Kernel32» (BYVAL FName AS STRING, BYVAL WinSize AS LONG) AS LONG

Это описание функции Windows API для запуска программ. Первый параметр — FName — строка с полным именем запускаемого файла, второй — WinSize — числовой, определяет, как будет отображаться окно программы — в свернутом виде, распахнутое на весь экран и пр.

Так как мы собираемся копировать текст на принтер из сессии DOS, то нам понадобится конвертировать строки русских символов из кодовой таблицы Windows-1251 в DOS-866.

Такой функции в файле справки я не нашел, поэтому пришлось описывать свою:

PUBLIC FUNCTION WinToDOS(Line AS STRING) AS STRING

Ее полный исходный текст приводить здесь бессмысленно, загляните на сайт и скачайте рабочий пример со всеми исходниками. Если же горите желанием поскорее попробовать, то используйте английский текст — его перекодировать не нужно. Кроме того, функция перекодировки строк на Visual Basic будет немного замедлять работу программы при выводе больших документов, поэтому если у Вас есть .DLL-библиотека с такой функцией, воспользуйтесь оператором DECLARE, как в предыдущем примере, и подключите ее к Вашему проекту — будет быстрее.

Теперь переключитесь назад в Excel и в своей книге создайте кнопку. Нажмите на панели «Элементы управления» кнопку с простой подписью — «Кнопка». Теперь на самой таблице один раз щелкните левой кнопкой мыши — появится настоящая кнопка. Щелкните по ней уже правой кнопкой мыши и в появившемся меню выберите пункт «Исходный текст». Автоматически активизируется редактор Visual Basic и откроет окно с шаблоном процедуры для ввода исходного текста макроса.

Введите следующие строки: Private Sub CommandButton1_Click()

‘Описание переменных
Dim Line As String, Res As Long

‘Открытие потока вывода в текстовый файл
Open «C:Output.txt» For Output Shared As #1

‘Перенос данных таблицы в переменную
Line = Range(«A1»).Value + Str(Range(«B1»).Value)

‘Запись строки в файл
‘с одновременной перекодировкой
Write #1, WinToDOS(Line)

‘Строка запуска программы
Line = «C:Matrix.PIF C:Output.txt» + Chr(0)
Write #1, Line

‘Закрытие потока
Close #1

‘Запуск .PIF-файла с параметром —
‘имя файла в командной строке
Res = WinExec(Line, 7)

‘Отображение результатов запуска
Range(«B2»).Value = Res
Select Case Res
Case 0
Range(«C2»).Value = «The system is out of memory or resources»
Case 1
Range(«C2»).Value = «The.EXE file is invalid (non-Win32.EXE or error in.EXE image)»
Case 2
Range(«C2»).Value = «The specified file was not found»
Case 3
Range(«C2»).Value = «The specified path was not found»
Case Is> 31
Range(«C2»).Value = «Successfully executed!»
End Select

‘Конец подпрограммы
End Sub

Снова переключитесь в Excel. Как видно из текста программы, в ячейку A1 надо записать какой-нибудь текст, а в B1 — любое число. Эти данные и будут отпечатаны. Далее, на панели «Элементы управления» найдите нажатую кнопку «Режим конструктора» и нажмите ее, чтобы она пришла в нормальное состояние — режим конструктора будет отключен.
А вот теперь смело нажимайте на созданную Вами большую кнопку на таблице и наслаждайтесь чувством превосходства.
Важно! При открытии этой книги в последующем будет появляться грозное предупреждение от Microsoft — будьте осторожны, мол там могут быть вирусы, и если Вы доверяете источнику, откуда к Вам этот файл попал, тогда открывайте. Думаю, что Вы сами себе вирусы не напишете, а я этим делом не занимаюсь, поэтому открывайте смело, но не отключайте макросы, иначе команды работать не будут.
Этот пример в ZIP-архиве, конечно, можно взять на сайте www.victoryday.web.com в разделе Programming. В том же архиве находится и файл примера для Access. Однако новичкам он будет мало полезен, т.к. в отличие от Excel его сложнее будет адаптировать к существующим приложениям — для вывода в текстовый файл информацию нужно брать из множества таблиц и переменных.
Но более опытным программистам это не составит особого труда. А что касается остального кода процедур, то его можно перенести практически без изменений — начиная с 97-ой версии Office, язык VBA одинаков для всех приложений.
Но есть одна деталь — для новичков. В Access подпрограммы на Visual Basic называются не макросами, как в других приложениях Office, а программами, которые хранятся в модулях. А его макросы — это немного из другой оперы, мы их трогать не будем.
Рассмотрим все операции подробнее.
Откройте любую базу данных или создайте новую.
Откройте закладку «Модули» и создайте новый модуль. В нем введите описание нужных нам вспомогательных функций — запуска внешних программ и перекодировки строк, т.е. все как в модуле в Excel.
Далее, откройте закладку «Формы» и создайте новую форму. В ней аналогично, как в Excel, создайте кнопку и щелкните по ней правой кнопкой мыши. Во всплывающем меню выберите пункт «Свойства». В окне свойств откройте закладку «События», выберите событие «Нажатие кнопки», и справа появится кнопочка с многоточием. Нажимайте ее — и откроется окно для редактирования подпрограммы обработки данного события.
Введите туда следующий код:

Private Sub Кнопка0_Click()

‘Описание переменных
Dim Line As String, Res As Long, Info As String, Ok As Integer

‘Открыть поток вывода в текстовый файл
Open «C:Output.txt» For Output Shared As #1

Line = «Hello, world!!! Привет, друзья;-)»

‘Запись строки в файл
‘с одновременной перекодировкой
Write #1, WinToDOS(Line)

‘Строка запуска процесса печати
Line = «c:matrix.pif c:output.txt» + Chr(0)
Write #1, Line

‘Закрытие потока
Close #1

‘Отображение результатов запуска
Res = WinExec(Line, 7)
Select Case Res
Case 0
Info = «The system is out of memory or resources»
Case 1
Info = «The.EXE file is invalid (non-Win32.EXE or error in.EXE image)»
Case 2
Info = «The specified file was not found»
Case 3
Info = «The specified path was not found»
Case Is> 31
Info = «Successfully executed!»
End Select
Ok = MsgBox(Str(Res) + » » + Info, vbOKOnly + vbInformation, «Сообщение системы»)

‘Конец подпрограммы
End Sub

Сохраните форму, закройте и потом нажмите «Открыть» — запуститься Ваша форма, и уже можно нажимать кнопку вызова подпрограммы печати.
Так же, как и было описано в предыдущей статье по Visual FoxPro, в профессиональных приложениях нежелательно использовать жестко прописанные имена файлов вывода. Они даны в этих примерах, чтобы не загромождать основной алгоритм, иначе за деревьями можно и леса не увидеть. Для этих целей лучше использовать временные файлы. Но, к сожалению, в Офисной справке по Visual Basic я не нашел функций, аналогичных как в Visual FoxPro. Но это не беда — можно написать самостоятельно. Используйте для этого фунцию генерации случайных чисел.
Например, выражение STR(INT(RANDOM()* 100000000) вернет строку, состоящую из цифр, которую можно использовать для создания временного файла. Добавьте к нему любое расширение типа .~0TMP и смело создавайте файл.
Но тут есть одна ма-а-ленькая деталь — их нужно когда-нибудь удалять. В программе удалять файл сразу же после отправки на печать не получится.
Windows — это многозадачная система;-), поэтому копирование файла на принтер будет происходить одновременно с продолжением выполнения Вашей программы. Т.е. программа попытается удалить файл, который заблокирован программой копирования — возникнет ошибка. Тут можно пойти двумя путями:
1. В используемом .BAT-файле второй строкой допишите команду удаления:

DEL %1

Эта команда будет удалять файл сразу после вывода его на печать. Но если Вы захотите еще взгянуть на его содержимое, то используйте второй путь.
2. Удалять свои временные файлы программа может при своем завершении. Поэтому желательно их создавать в одном каталоге и с одним и тем же расширением. Там же создайте BAT-файл следующего содержания:

DEL *.~0TMP

Затем при завершении приложения запустите его ранее описанным способом, и все в порядке.
В обеих статьях рассмотрен лишь базовый принцип вывода на матричный принтер. Такие особенности вывода, как применение управляющих кодов, — это уже другая тема. Полностью описание управляющих кодов обычно приведено в руководстве по эксплуатации принтера, по крайней мере так было у всех моделей Epson. В свои студенческие годы я написал специальную DOS-утилиту для печати текстов всеми возможными аппаратными шрифтами. Ее вместе с исходными текстами можно свободно скачать с www.victoryday.web.com из раздела OpenSoft.
Своими статьями по FoxPro и Basic я хочу показать любителям сравнивать языки программирования — каждая среда разработки по-своему удобна. Выбирать то или иное средство нужно в зависимости от поставленной задачи — как удобнее и проще ее решить.
И в этом плане вышеупомянутые средства занимают почетное место наряду с модными Delphi, C++ и Java. А офисное программирование вообще позволяет большую часть работы сделать средствами Office, применяя Visual Basic лишь для специфических целей. Если хотите еще более убедительные аргументы — заглядывайте почаще на сайт или пишите на vic_mak@newmail.net.
Ну, а по поводу применения в макросах Visual Basic оператора DECLARE для описания внешних процедур хочется сделать лирическое отступление.
НЕ ИСПОЛЬЗУЙТЕ ЭТУ ВОЗМОЖНОСТЬ ДЛЯ НАПИСАНИЯ ВИРУСОВ! Лучше напишите что-нибудь полезное для других, скорее всего за это Вам еще и заплатят (не забудьте поделиться за идею;-) и скажут спасибо. А за вирусы не только никто не заплатит, но можете и проблем заиметь. Так что займитесь делом и будьте здоровы.

Виктор Маковчик

Компьютерная газета. Статья была опубликована в номере 23 за 2000 год в рубрике программирование :: разное

  • Remove From My Forums
  • Question

  • hi i m using this this coding to copy and print the word document

    System.IO.File.Copy(Application.StartupPath &
    "PrintT.doc", Application.StartupPath & "PrintT1.doc", True) 
    
    Dim line1 As String 
    
    Dim line2 As String
    
    line1 = "Line1 Replace" 
    
    line2 = "Line2 Replace"
    
    Dim objWordApp As New Word.Application 
    objWordApp.Visible = True
    
    'Open an existing document. 
    
    Dim objDoc As Word.Document = objWordApp.Documents.Open(Application.StartupPath & "PrintT1.doc") 
    
    objDoc = objWordApp.ActiveDocument
    
    'Find and replace some text 
    
    'Replace 'VB' with 'Visual Basic' 
    
    objDoc.Content.Find.Execute(FindText:="Line1",ReplaceWith:=line1, Replace:=Word.WdReplace.wdReplaceAll) 
    
    objDoc.Content.Find.Execute(FindText:="Line2", ReplaceWith:=line2, Replace:=Word.WdReplace.wdReplaceAll)
     
    objDoc.Content.Find.Execute(FindText:="Line3", ReplaceWith:="Line3 Replace", Replace:=Word.WdReplace.wdReplaceAll) 
     
    
    
     
    
    'Save and close the document 
    
     
    
    'objDoc.Save()
    
    objDoc.PrintOut(True, True) 
    
    objDoc.Close()
    
    objDoc = Nothing
    
    objWordApp.Quit()
    
    objWordApp = Nothing
    
    

    now i need to print the Word Document with Printer Default Font(Draft 17.5 CPI) in Dot Matricx Printer

Answers

  • Hi sivakl,

    You can easily to print an external document using Process.Start method in VB.NET like this:

    Public
    Class Form1

       
    Private Sub Button1_Click(ByVal sender
    As System.Object, ByVal e
    As System.EventArgs) Handles Button1.Click

           
    Dim psi As
    New ProcessStartInfo

           
    psi.UseShellExecute = True

           
    psi.Verb = «print»

           
    psi.WindowStyle = ProcessWindowStyle.Hidden

    psi.Arguments = PrintDialog1.PrinterSettings.PrinterName.ToString()

           
    psi.FileName = «C:MyFile.doc»
    ‘ Here specify a document to be printed

           
    Process.Start(psi)

       
    End Sub

    End
    Class

    Best regards,
    Martin Xie


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.

    • Marked as answer by

      Thursday, April 29, 2010 3:58 AM

Помогаю со студенческими работами здесь

В Memo или RichEdit вставить текст из файла doc или docx
Люди помогите плиз, весь нэт обрыл. Нужно в Builder, в Memo или RichEdit вставить текст из файла…

Help!!!Открытие .doc или .docx в MS Word
Вопрос: при открытии .doc или .docx в MS Word 2007 пишет: "Файл бла-бла.doc (или .docx) не…

Открытие файла docx или doc
Подскажите, пожалуйста, как прописать, чтоб при нажатии на кнопку открывался(загружался) файл docx…

Шифрование doc, docx файлов На Delphi или C++
Чем лучше шифровать doc docx файлы? или любых файлов что лучше.
Ищю реализацию на Delpbi или C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

2

Совет 1. Используйте листы книги макросов для
хранения констант

Совет 2. Используйте скрытую форму

Совет 3. Печатайте на матричном принтере

Совет 4. Полезный шаблон для Word

Совет 5. Автоматизируйте вставку закладок

Совет 6. Макросы для работы со списками

Совет 7. Используйте разнообразные типы элементов
управления Office

Совет 8. Использование Word и Excel для подготовки
графических файлов

Совет 9. Запишите макрос переопределения языка

Совет 1. Используйте листы книги макросов для хранения констант

Особенность хранения макросов в Excel
заключается в том, что все они записаны в
модулях, связанных с определенной рабочей
книгой. Даже макросы и функции пользователя,
разработанные для общего применения,
привязаны к книге PERSONAL.XLS, которая всегда
незримо присутствует при вызове приложения.
Для доступа к этой книге достаточно
выполнить команду Окно|Отобразить… и
выбрать в открывшемся списке окно книги
Personal (обычно это имя — единственное в
списке скрытых окон). Поскольку все
современные макросы пишутся на VBA, то листы
рабочей книги макросов, как правило, не
используются.

Вместе с тем листы рабочей книги
представляют собой удобную среду хранения
разнообразной информации с уникальными
возможностями. Так, только здесь
допускается запись символьных строк с
различной кодировкой. Например,
одновременно можно использовать кириллицу,
латинский и балтийский алфавиты, а также
специальные символы. Ни в каких других
файлах, кроме непосредственно «рабочей»
поверхности документов Excel или Word, подобное
невозможно, не говоря уже о текстах
программных модулей. Например,
русскоязычные пользователи в странах
Балтии не могут использовать смесь родного
и государственного языка в базах данных Access,
формах Outlook, заимствованных элементах
управления и программных модулях,
предусматривающих указание единственного
набора символов.

Подобное ограничение можно обойти при
программировании в Excel, если вынести
символьные константы на листы книги. С
помощью этого приема можно, например,
написать многоязыковые функции «сумма
прописью» или «дата прописью», а также
программы — переводчики для несовместимых
алфавитов.

Кроме символьных констант, на листах
книги макросов можно хранить справочники,
организованные в виде списков, и разного
рода внедренные элементы, например держать
коллекцию иконок для последующего
использования в качестве источников для
метода PasteFace в процедурах, создающих
динамические кнопки на панелях управления
Office.

В начало

В начало

Совет 2. Используйте скрытую форму

При работе над проектом VBA часто возникает
желание использовать элементы управления
ActiveX общего назначения, такие как CommonDialog,
таймер, MAPI, FTP и др. Чаще всего такие элементы
не удается внедрить непосредственно в тело
офисного документа, а диалоговые формы
интерфейсом разработки могут быть не
предусмотрены.

В этом случае удачным решением может
стать включение в проект формы, которая
никогда не будет видна пользователю, то
есть постоянно скрытой формы. Чаще всего
подобная форма не будет содержать и
никакого кода поскольку не будут
происходить события, связанные с
вмешательством пользователя .

В редакторе VBE создадим новую форму и «перетащим» на нее необходимые элементы
управления, причем такие, что даже при отображении формы остаются невидимыми.
На рис. 1 показан пример подобной формы, на которой расположены
CommonDialog, Internet Transfer Control, IETimer и пара элементов MAPI.

Теперь у нас в проекте появились
дополнительные объекты, к которым весьма
просто обращаться

Рассмотрим работу со скрытой формой на
примере использования CommonDialog для открытия
и сохранения текстовых файлов. Напишем
пользовательскую функцию, возвращающую имя
файла и полный путь, выбранный
пользователем в окне стандартного диалога,
а также True — в случае успешного завершения
операции и False — если пользователь нажмет
кнопку Cancel.

Function ComDlgFile(ByRef strName As String, _
                              ByRef strPath As String, _
                              strTitle As String, _
                              blnOpen As Boolean) As Boolean
'-- Show Common Dialog and set FileName & FullPath
   
   Load FormHidden
 
   On Error Resume Next
   With FormHidden
      .CommonDialog.CancelError = True
      .CommonDialog.FileName = strName
      .CommonDialog.DialogTitle = strTitle
      .CommonDialog.Filter = _
         "All Files(*.*)|*.*|Text Files(*.txt)|*.txt"
      If blnOpen Then
         .CommonDialog.ShowOpen
      Else
         .CommonDialog.ShowSave
      End If
      If Err = 0 Then
         On Error GoTo 0
         strName = .CommonDialog.FileTitle
         strPath = .CommonDialog.FileName
         ComDlgFile = True
      Else
         ComDlgFile = False
      End If
   End With
   
   Unload FormHidden

End Function

Обратите внимание, что все действия
выполняются с объектом, заключенным в
контейнер FormHidden. Это не что иное, как наша
скрытая форма, которой присвоено
подобающее имя.

Прежде чем обращаться к объектам формы, ее
нужно загрузить. Делается это с помощью
инструкции Load. При работе с «нормальной»
формой в этом месте обычно используется
метод Show. В конце функции предусмотрено
выполнение инструкции Unload, освобождающей
память от формы и ее объектов.

Обращение к функции может быть таким:

Sub DialogSetFile()
'-- Show Common Dialog
   
   Dim strName As String
   Dim strPath As String

   strName = ""
   strPath = ""

   If ComDlgFile(strName, strPath, "Pick Up File", True) Then
      MsgBox "Name:" & Chr(9) & strName & Chr(13) _
                & "Path:" & Chr(9) & strPath, vbExclamation
   Else
      MsgBox "Cancel By User", vbCritical
   End If

End Sub

Использование скрытой формы весьма удобно также и для тиражирования. Элементы
управления не привязаны к документам, поэтому всю конструкцию можно экспортировать
с помощью команд Импорт и Экспорт файла контекстного меню проекта в редакторе
VBE.

В начало

В начало

Совет 3. Печатайте на матричном принтере

Одним из самых распространенных
применений классических приложений Office
является печать документов,
отформатированных в виде бланков. Хорошо
если бланк представляет собой стандартный
документ предприятия и хранится на
компьютере в виде шаблона, — тогда его
можно заполнить и быстро отпечатать
целиком в заданном количестве экземпляров,
используя, например, лазерный принтер.

Однако существует целый ряд достаточно
сложных документов, которые требуется
оформлять на специальных бланках,
отпечатанных в типографии. Это прежде всего
таможенные декларации и международные
транспортные накладные, которые
изготавливаются по специальной технологии
с применением копирующего слоя между
страницами. Такие бланки рассчитаны на
использование печатающих устройств
ударного типа. За счет этого достигается
одновременное тождественное заполнение
всех необходимых копий документа.

Такое удобство при печати имеет и свою
оборотную сторону — трудность
использования обычных форм на основе
документов Word или Excel — из-за отсутствия
режима выборочной печати полей ввода с
сохранением их пространственного
расположения на странице. Поэтому часто
приходится наблюдать, что подобные
документы печатаются при помощи специально
разрабатываемых программ (обычно под DOS) или
на старых добрых пишущих машинках.

Вместе с тем не составляет труда использовать всю мощь приложений Office и
в этом случае. Достаточно только предусмотреть несложную процедуру подготовки
документа к печати. Тогда работа с бланком может выглядеть так, как показано
на рис. 2.

Принцип работы макроса «Подготовка к
печати» заключается в выделении только
необходимых для печати полей, что
эквивалентно сокрытию всех
вспомогательных элементов формы. Самое
простое решение — это сделать копию
станицы и просто удалить все лишнее.
Поскольку «лишними» в данном случае
окажутся рамки, заливка и графические
элементы, то такой макрос можно сделать
универсальным — не зависящим от вида
бланка документа. Вот этот макрос,
разработанный для Microsoft Excel:

 Sub PrePrint()
'-- Копирование формы и удаление элементов оформления

   ActiveSheet.Select
   ActiveSheet.Copy
   ActiveSheet.Unprotect
   Cells.Select

   '-- удаляем заливку
   Selection.Interior.ColorIndex = xlNone

   '-- удаляем рамки
   Selection.Borders(xlDiagonalDown).LineStyle = xlNone
   Selection.Borders(xlDiagonalUp).LineStyle = xlNone
   Selection.Borders(xlEdgeLeft).LineStyle = xlNone
   Selection.Borders(xlEdgeTop).LineStyle = xlNone
   Selection.Borders(xlEdgeBottom).LineStyle = xlNone
   Selection.Borders(xlEdgeRight).LineStyle = xlNone
   Selection.Borders(xlInsideVertical).LineStyle = xlNone
   Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

   '-- удаляем графические элементы (надписи, линии и пр.)
   If ActiveSheet.Shapes.Count > 0 Then
      ActiveSheet.Shapes.SelectAll
      Selection.ShapeRange.Delete
   End If

   ActiveSheet.Range("A1").Select

End Sub

Единственная тонкость, которую следует учитывать, заключается в следующем:
здесь предполагается, что все элементы, не предназначенные для печати, отличаются
от обычного текста. Поэтому текстовые комментарии, заголовки и названия полей
следует оформлять в виде графических элементов — надписей.

В начало

В начало

Совет 4. Полезный шаблон для Word

Очень часто приходится слышать сетования
пользователей на громоздкие коды HTML-документов,
которые генерирует Microsoft Word. Однако это
можно существенно поправить, даже не
прибегая к специальным разработкам. Первое,
что необходимо сделать при использовании
Word в качестве инструмента для подготовки
HTML-документов, это правильно подобрать
шаблон. Идея заключается в том, чтобы
ограничиться только стандартными стилями,
присущими HTML-документу, и не переопределять
их в Word. Тогда результирующий код не будет
содержать многих «лишних» тэгов, а
надлежащее форматирование можно будет
применить потом, с помощью CSS (
Cascading Style Sheets — каскадные
таблицы стилей. — Прим.ред.)

Для изготовления «нормального» шаблона
HTML-документа достаточно иметь чистую HTML-страницу
с минимумом информации, например создать
новую страницу с помощью FrontPage:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>FrontPage</title>
</head>

<body>
</body>
</html>

Если такую страницу открыть в Word, то список доступных стилей пополнится стандартным
набором стилей HTML, так, как это показано на рис. 3.

Теперь остается сохранить страницу в качестве шаблона документа и использовать
ее всегда, когда предполагается формирование документа HTML. Целесообразно даже
сохранить такую страницу в качестве шаблона Normal, чтобы привыкнуть к работе
со стандартными стилями современных документов. Единственная неприятность заключается
в наличии трех стандартных стилей Word: Заголовок 1, 2 и 3. Поскольку эти
стили являются системными, их нельзя удалить из шаблона. Остается только запомнить,
что в HTML-документе для выделения заголовков следует использовать стили H1-H6,
а стили Заголовок 1, Заголовок 2 и др. вообще лучше не применять.

В начало

В начало

Совет 5. Автоматизируйте вставку закладок

Иногда в документах Word требуется задавать
большое количество закладок (bookmarks),
особенно если готовится обширный документ
HTML, в котором закладки будут играть роль
объектов Anchor — элементов для организации
системы перекрестных ссылок.

В подобных случаях использование
стандартной команды Вставка|Закладка…
достаточно утомительно, поскольку требует
придумывания имен, к тому же
удовлетворяющих правилам именования
подобных объектов.

Для упрощения этого процесса лучше
написать специальный макрос, который
полностью задает закладку одним нажатием
командной кнопки или комбинации «быстрых»
клавиш. Для определения закладки
необходимо сделать две вещи: выделить
диапазон и присвоить ему надлежащее имя.
Можно ускорить этот процесс, установив
собственные правила именования, например
использовав в качестве имени выделенный
текст:

 Sub SetBookmark()
'-- Вставка закладки для выделенного текста

   Dim sName As String
   sName = LCase(Trim(Selection.Text))
   If Len(sName) < 1 Then
      MsgBox "Bookmark not valid", vbCritical
      Exit Sub
   End If
   '-- замена недопустимых символов
   sName = ConvertName(sName)

   With ActiveDocument.Bookmarks
      '-- проверка на первую цифру, что недопустимо
      If IsNumeric(Left(sName, 1)) Then sName = "a_" & sName
      .Add Range:=Selection.Range, Name:=sName
      .DefaultSorting = wdSortByName
      .ShowHidden = False
   End With

End Sub

В приведенном макросе над выделенным
текстом производятся некоторые
преобразования. Во-первых, с помощью
функции ConvertName недопустимые в имени пробелы,
знаки препинания, специальные символы
заменяются символом «подчеркивание»:

 Private Function ConvertName(sName As String)
'-- Замена недопустимых символов

   Dim sRes As String
   Dim sChar As String
   Dim i As Integer
   sRes = ""
   For i = 1 To Len(sName)
      sChar = Mid(sName, i, 1)
      Select Case sChar
      Case " ", ".", "-", ",", ";", ":", "'", "!", "?", """"
         sRes = sRes & "_"
      Case Else
         sRes = sRes & sChar
      End Select
   Next
   ConvertName = sRes

End Function

А во-вторых, проверяется, не является ли первый символ цифрой, что также недопустимо
для имени закладки, однако это часто происходит, например при необходимости
вставить закладки для пронумерованных разделов документа. Если подобное имеет
место, то к имени закладки слева добавляются символы «a» (от слова Anchor).
Если придерживаться единых правил формирования имен как функции от контекста,
то также легко можно будет автоматизировать и формирование гиперссылок на основе
оглавления. Можно придумать и другое правило именования, например: имя документа
плюс последовательный номер закладки в коллекции.

В начало

В начало

Совет 6. Макросы для работы со списками

Популярной формой хранения и обработки
информации являются списки на листах Excel.
Они позволяют использовать все операции,
свойственные базе данных, не требуя особых
усилий по проектированию. Напомним, что
список отличается от общей таблицы тем, что
все его строки имеют одинаковую структуру и
формат, а это позволяет рассматривать их
как записи базы данных. К тому же первая
строка выделяется оформлением и содержит
заголовки столбцов (или полей записи). Еще
одна особенность списков заключается в том,
что каждая строка, как правило, содержит
формулы.

При работе с такой структурой важнейшими
операциями, влияющими на
производительность труда пользователя,
осуществляющего ввод данных, являются
команды добавления и удаления строк.
Стандартные команды Excel, выполняющие
подобные действия, достаточно громоздки,
так как требуют либо однозначного
выделения диапазонов, либо его уточнения в
форме диалога. Кроме того, стандартные
команды вставки выполняют добавление строк
выше диапазона выделения, тогда как при
массовом вводе было бы естественнее
заполнять список последовательно сверху
вниз. Что же касается формул, то их
приходится постоянно копировать.

Логичным выходом в данной ситуации
является применение специальных макросов,
выполняющих добавление и удаление строк-записей.
Как показывает опыт разработки
многочисленных приложений со списками,
целесообразно иметь три подобных макроса:
один будет добавлять «чистую» запись ниже
строки, на которой находится курсор ввода (в
произвольной колонке), второй будет удалять
целиком несколько строк, задаваемых
произвольным выделением, третий, подобно
первому, будет добавлять запись, но при этом
копировать содержимое предыдущей записи.
Это оправданно, поскольку часто в потоке
ввода следуют записи, имеющие одинаковые
значения нескольких реквизитов.

Для добавления записей в список прежде
всего необходимо разобраться с наличием
строк-прототипов, содержащих необходимые
формулы и форматирование. Проблема
заключается в выборе места, где должны
храниться такие прототипы. Возможными
вариантами здесь являются строки выше
заголовка списка, строки ниже самой
последней записи или строки на отдельном
листе. Первые две возможности не совсем
удобны, поскольку по правилам список должен
отделяться от прочего контекста по крайней
мере одной пустой строкой, что повлияет на
внешний вид документа. Если же скрыть
строки прототипа, например расположенные
выше списка, то это приведет к копированию и
вставке «скрытой» записи. Если затем
установить для вставленной строки «нормальную»
высоту, то будет отменено свойство
автоматического подбора высоты строки при
заданном в формате переносе длинных
символьных значений, а это иногда бывает
необходимо. Таким образом, самым надежным
местом для хранения прототипов остается
отдельный лист настроек, который во время
работы пользователя можно скрывать целиком.
В этом случае нужно только не забывать об
имеющемся прототипе при изменении
форматирования готового списка.

Сами по себе макросы довольно просты и «программируются»
в основном с помощью «макрорекордера».
Естественно, перед записью макросов
необходимо строкам-прототипам присвоить
имена диапазонов:

 Sub InsertCopy()
'-- Вставка копии текущей строки

   Dim strSelAddr As String      '-- позиция курсора
   Dim objCurRange As Range      '-- текущий объект Range

   ActiveCell.Select
   strSelAddr = Selection.Address(ReferenceStyle:=xlR1C1, _
      RowAbsolute:=False, _
      ColumnAbsolute:=False, _
      RelativeTo:=Cells(2, 1))

   '-- проверка на допустимость операции
   If InStr(1, strSelAddr, "-", vbTextCompare) Then
      MsgBox "This Selection Not Valid", vbCritical
   Else
      Set objCurRange = Selection
      objCurRange.EntireRow.Select
      Selection.Copy
      Selection.Range("A2").Select
      Selection.Insert Shift:=xlDown
      Application.CutCopyMode = False

      '-- рекомендуемая позиция ввода
      Selection.Range("A1").Select
   End If

End Sub
   
   Sub DeleteRows()
   '-- Удаление строк

   Dim strSelAddr As String      '-- позиция курсора
   Dim intAns As Integer          '-- ответ пользователя

   Selection.Select
   strSelAddr = Selection.Address(ReferenceStyle:=xlR1C1, _
      RowAbsolute:=False, _
      ColumnAbsolute:=False, _
      RelativeTo:=Cells(2, 1))

   '-- проверка на допустимость операции
   If InStr(1, strSelAddr, "-", vbTextCompare) Then
      MsgBox "This Selection Not Valid", vbCritical
      Exit Sub
   End If
   intAns = MsgBox("Delete Selection" & Chr(13) _
                        & "Are You Sure", vbQuestion + vbOKCancel)
   If intAns = vbOK Then Selection.EntireRow.Delete

End Sub

   Sub InsertRow()
   '-- Вставка строки Item

   Dim strSelAddr As String      '-- позиция курсора
   Dim objCurRange As Range      '-- текущий объект Range
   Dim strSheetName As String   '-- имя активного листа
   Dim varSection As Variant    '-- номер раздела

   ActiveCell.Select
   strSelAddr = Selection.Address(ReferenceStyle:=xlR1C1, _
      RowAbsolute:=False, _
      ColumnAbsolute:=False, _
      RelativeTo:=Cells(1, 1))

   '-- проверка на допустимость операции
   If InStr(1, strSelAddr, "-", vbTextCompare) Then
      MsgBox "This Selection Not Valid", vbCritical
   Else
      strSheetName = ActiveSheet.Name
      Set objCurRange = Selection

      '-- на всякий случай копируем общий образец строки
      Sheets("Settings").Range("List1Item").Copy

      '-- копируем образец строки для текущего листа
      On Error Resume Next
      Sheets("Settings").Range(strSheetName & "Item").Copy

      objCurRange.EntireRow.Select
      varSection = Selection.Range("A1").Value
      Selection.Range("A2").Select
      Selection.Insert Shift:=xlDown
      Application.CutCopyMode = False

      '-- рекомендуемая позиция ввода
      Selection.Range("A1").Select
   End If

End Sub

Единственное существенное отличие этих
макросов от записей «макрорекордера»
заключается в наличии проверок
допустимости операций. Так, для макросов
InsertCopy и DeleteRows позиция курсора при вызове не
должна находиться на строке заголовков,
тогда как при вставке строк-прототипов ниже
позиции курсора в макросе InsertRow — такое
вполне допустимо. В приведенном примере
предполагается, что строка заголовков —
первая. Если это не так, следует
откорректировать значение параметра RelativeTo.
Проверка позиции курсора производится
достаточно экзотическим способом: по
наличию отрицательного значения
относительного адреса. Но это совсем не
обязательно — можно просто сравнивать
абсолютные номера строк.

Для повышения надежности в макросе DeleteRows предусмотрен диалог для подтверждения
пользователем «разрушающей» операции, а в макросе InsertRow — возможность
отсутствия строки прототипа для данного списка. Эта проблема решается путем
вставки прототипа «по умолчанию». Подобный прием позволяет иметь в книге несколько
листов со списками одинаковой структуры, без необходимости создания для каждого
из них строки-прототипа.

В начало

В начало

Совет 7. Используйте разнообразные типы элементов управления
Office

В справочной документации, посвященной
панелям управления Office, внимание уделяется
только таким элементам управления, как Button
и ComboBox. Вместе с тем офисная коллекция
CommandBarControls поддерживает большое количество
разнообразных элементов управления,
которые задаются с помощью свойства Type.

Одним из таких малоиспользуемых
элементов управления является CommandBarControl с
типом msoControlEdit. Это не что иное, как аналог
обычного текстового поля TextBox, присутствующего
практически во всех формах.

Наряду с этим ControlEdit позволяет
существенно разнообразить интерфейс
прикладной разработки. Предположим, что
разрабатывается приложение,
предусматривающее выбор товара из списка.
Можно создать контекстное меню, «всплывающее»
в позиции курсора, в котором с помощью поля
ControlEdit запрашивается количество товара. В
этом случае офисное меню будет выполнять
функцию удобной формы ввода.

Другой пример, показанный на рис. 4, использует поле
ControlEdit для хранения нераспределенной суммы в задаче учета оплаты по счетам.
Сложность такой задачи заключается в опасности получить оплату сразу по нескольким
счетам, что потребует приостановки алгоритма регистрации оплаты и перемещения
фокуса с формы на основной документ. Вследствие модальности форм Office 97 такая
задача вообще неразрешима. Хотя в Office 2000 эта проблема устранена после введения
свойства Show Modal, допускающего потерю фокуса формой, — решение с плавающей
панелью управления выглядит более изящным.

Создать такую панель можно с помощью кода,
приведенного ниже:

 Private Sub Workbook_Open()
'-- Создание динамической панели Оплата

   Dim cbPayment As CommandBar
   Set cbPayment = Application.CommandBars _
      .Add(Name:="Payment", _
      Position:=msoBarFloating, _
      Temporary:=True)
   With cbPayment
      .Controls.Add Type:=msoControlButton
      .Controls(1).Caption = "Payment"
      .Controls(1).Style = msoButtonIconAndCaption
      .Controls(1).OnAction = "PaymentContinue"
      .Controls(1).FaceId = 1643
      .Controls.Add Type:=msoControlEdit
      .Controls(2).Text = "0.00"
      .Controls(2).Enabled = False
      .Visible = False
   End With

End Sub

Обратите внимание на тип элемента управления msoControlEdit и на его основное
рабочее свойство Text, не описанное в справочной документации.

В начало

В начало

Совет 8. Использование Word и Excel для подготовки графических
файлов

Приложения Office все чаще используются в
качестве инструмента для подготовки Web-страниц.
И если формирование законченных HTML-документов
с помощью только Word или Excel пока еще
вызывает заслуженные нарекания
пользователей, то ничто не мешает применить
эти приложения для изготовления отдельных
элементов, например полноценных
графических файлов.

Так, в Excel, для объектов Chart предусмотрен
метод Export, позволяющий сохранять диаграммы
в виде отдельных графических файлов:

Charts(1).Export _
   OutputFileName:="my_chart.gif", FilterName:="GIF"

В Word, хотя там и нет явного метода для
экспорта графических элементов, данная
возможность также существует. При
выполнении стандартного метода SaveAs при
указании формата HTML все объекты Shape
экспортируются в виде отдельных
графических файлов, причем в Word 97 это
происходит в формате GIF, а в Word 2000 — в JPEG.
Можно воспользоваться этим
обстоятельством, а ненужный HTML-документ
удалить:

 Sub ExportAllShapes()
'-- Экспорт всех рисунков в виде графических файлов
   Dim objShape As Shape
   Dim strActiveDocName As String
   Dim strNewDocName As String

   If ActiveDocument.Shapes.Count <= 0 Then Exit Sub
   strActiveDocName = ActiveDocument.Name
   Documents.Add
   strNewDocName = ActiveDocument.Name

   '-- копируруем все рисунки в новый документ
   For Each objShape In Documents(strActiveDocName).Shapes
      objShape.Select
      Selection.Copy
      Documents(strNewDocName).Activate
      Selection.PasteSpecial Link:=False, _
         DataType:=wdPasteMetafilePicture, _
         Placement:=wdFloatOverText, DisplayAsIcon:=False
   Next

   '-- сохраняем новый документ в формате HTML
   ActiveDocument.SaveAs FileName:=strNewDocName & ".htm", _
      FileFormat:=114, LockComments:=True, _
      Password:="", AddToRecentFiles:=False, _
      WritePassword:="", _
      ReadOnlyRecommended:=False, _
      EmbedTrueTypeFonts:=False, _
      SaveNativePictureFormat:=False, _
      SaveFormsData:=False, SaveAsAOCELetter:=False
   ActiveWindow.Close
   Documents(strActiveDocName).Activate

   '-- удаляем ненужный файл
   Kill strNewDocName & ".htm"

End Sub

Microsoft Office обладает
богатой коллекцией картинок Clipart,
хранящихся в
формате WMF. С
помощью этого нехитрого макроса,
записанного «макрорекордером», можно очень
легко осуществлять «пакетное»
преобразование графических форматов для
этих файлов.

Особо следует остановиться на графических объектах WordArt. Эти объекты не
являются объектами типа Shape, и приведенная выше процедура будет их игнорировать.
Для того чтобы использовать эти объекты на Web-страницах, достаточно преобразовать
объекты WordArt в рисунки с помощью команд копирования и специальной вставки.

В начало

В начало

Совет 9. Запишите макрос переопределения языка

При подготовке в Word больших
статей на русском языке, содержащих термины
с использованием латинского алфавита,
неоднократно возникают ситуации, когда
документ «теряет» выбор языка,
установленного по умолчанию. При этом
фоновая программа проверки правописания
начинает подчеркивать правильно
написанные русские слова. Чтобы быстро
восстановить утраченное свойство, запишите
следующий макрос и вызывайте его с помощью
комбинации «быстрых» клавиш:

Sub SetRussian()
      Dim objAll As Range
      Set objAll = Selection.Range
      objAll.WholeStory
      objAll.LanguageID = wdRussian
End Sub

КомпьютерПресс 1’2001

Матричные принтеры безнадежно отстали от технологического прогресса, но их еще часто можно увидеть в отечественных компаниях. Причем, использование их «в связке» с современными ПК нередко означает некоторые проблемы.

Одной из таковых является печать на матричном принтере украинских текстов. Дело в том, что печать, выполняемая в графическом режиме из офисных приложений Windows, отнимает слишком много времени. Оперативная же печать подразумевает использование текстового режима вывода. И так как большинство документов сегодня готовится в Microsoft Word, то перед их печатью необходимо произвести процедуру конвертации в текстовый DOS-формат. Вот тут-то с украинскими текстами и начинаются проблемы.

Преобразование документа в DOS-текст можно произвести несколькими способами. Самый привычный — использовать внутренние средства конвертации Word, воспользовавшись меню Файл/Сохранить как… ([F12]) и выбрав в выпадающем списке Тип файла появившегося окна, значение Текст MS-DOS с форматированием.

Можно воспользоваться и буфером обмена, скопировав текст и вставив его, например, во встроенный текстовый редактор файл-менеджера FAR. Однако в обоих случаях преобразование не пройдет гладко — в первую очередь трудности вызовет преобразование украинской буквы «i», которая будет заменена на знак «_». Встречаются проблемы и с буквами «i» и «е», а также со знаками, которых вообще нет в кодовых страницах DOS, — длинным тире, парными кавычками, обратными двойными кавычками и т. д.

В значительной мере преодолеть описанные проблемы поможет специально подготовленный макрос для Word. Чтобы установить его и сделать доступным для всех документов Word, импортируйте его текст в шаблон NORMAL.DOT — удобно сделать это, запустив Редактор Visual Basic ([Alt]+[F11]) и вставив текст макроса в один из модулей шаблона.

Чтобы запустить установленный макрос, откройте окно Сервис/Макрос/Макросы… ([Alt]+[F8]) и, выбрав в списке макросов значение Dos-Print, нажмите на кнопку Выполнить. Макрос начнет производить экспорт документа в текстовый файл «в обход» стандартных процедур Word, при этом будет использована собственная таблица перекодировки, учитывающая неоднозначность кодирования украинских букв в DOS-тексте. Кроме того, выводимый текст форматируется для вывода моноширинным шрифтом, то есть каждый абзац Word-документа «нарезается» строками стандартной длины.

Сформированный таким образом текстовый файл будет сохранен в той же папке и под тем же именем, что и оригинал — только с расширением ТХТ. Макрос также предложит сразу же отправить текст на печать, при этом предполагается, что матричный принтер подключен к стандартному порту, включен и готов к печати.

Если же исходный файл представлен в формате PDF, можно воспользоваться одним из онлайн-конвертеров. Чтобы конвертировать PDF в Word онлайн, потребуется лишь зайти на специальный сайт и загрузить исходный PDF-файл. Через несколько секунд на выходе мы получим обработанный Word-файл, который впоследствии сможем распечатать приведенным выше способом.

Понравилась статья? Поделить с друзьями:
  • Документы word на линукс
  • Дополнения на word 2003
  • Документы word на андроиде для планшетов
  • Документы word на андроиде для планшета
  • Документы word на айпад