2016-12-26 13 views
5

Как программно печатать исходный код в VB6 Addin ..? Нет методов печати или предварительного просмотра, которые я могу найти для VBIDE в обозревателе объектов.Как использовать VBIDE в VB6 Addin для программной печати исходного кода ..?

Я искал высокий уровень & на Google, и есть странная нехватка информации о печати модуля кода VBIDE. Я получаю много хитов для PrettyPrint, но это все. Недостаток настолько велик, что меня заставляет задуматься, есть ли какая-то фундаментальная концепция, которую я полностью потерял.

Я испугался копии книги О'Рейли, упомянутой Хербом в https://stackoverflow.com/a/41034211/2705042, и в ней не упоминается печать исходного кода. Единственный способ, который я вижу, - это экспортировать код в текстовые файлы и распечатать их обычными средствами, не связанными с VBIDE.

Я также проверил руководство Chip Pearson на VBE по адресу http://www.cpearson.com/excel/vbe.aspx, которое почти идентично VBIDE, и даже нет никакой информации о печати кода, кроме идеи, которую я упомянул о сохранении в текстовых файлах, а затем о печати.

** В идеале я хотел бы использовать существующий диалог VB6 File> Print, добавив к нему еще один дополнительный флажок. Я понимаю, что добавление элементов управления в существующий диалог - это еще одна тема, и я не прочь создать собственную версию диалогового окна печати.

+0

VB6 позволяет переключаться между параметрами «красиво», используя «Файл-> Печать». Как правило, лучше всего просто сделать свой код «красивым» в первую очередь для печати. Если вы хотите что-то более сложное, вы можете попробовать эту [VB.Print - утилиту для печати исходного кода] (https://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=9493&lngWId=1) from Planet-Source-Code –

+0

Печать довольно не имеет ничего общего с добавлением, которое я создаю. Основная цель - просто отправить каждую подпрограмму или функцию на принтер в качестве отдельного задания на печать. Это делается для того, чтобы использовать сшиватель, который имеет наш офисный принтер, поэтому каждая процедура выходит уже стабильно. Это прекрасно держит вещи. Я синтезировал временное решение для моей проблемы: я использую VBIDE для прямого доступа к тексту в модулях кода, чтобы скопировать каждую процедуру в строковую переменную и затем перевести ее на принтер. Но мне все равно хотелось бы использовать встроенную функцию печати - если бы я мог ее найти. – spinjector

+0

Прошло некоторое время с тех пор, как я играл с надписью VB6 addin, но я понимаю концепцию. Я считаю, что 'mztools' может уже иметь процедурные печати, но я не помню. Довольно уверен, что нет ничего, что просто захватит все методы и напечатает их как индивидуальные задания. К сожалению, коды VB6 в наши дни скудны, а код плагина VB6 еще реже. Если я столкнулся с чем-то значимым, я могу опубликовать его, но если бы это был я, я бы написал это как отдельный проект (возможно, основываясь на этом приложении исходного кода планеты), чтобы взломать его на выполнение этой конкретной работы. –

ответ

2

Возможно с помощью прокси-сервера CommandBarButton и SendKeys.

Получение дескриптора печати CommandBarControl является достаточно простым, но нажатие на кнопке бросает диалог в пути, поэтому мы должны использовать SendKeys, чтобы установить параметры и отправить форму ....

Вы можете используйте код, похожий на следующий:

Dim printCommand As CommandBarControl 
Set printCommand = Application.VBE.CommandBars.FindControl(ID:=4) 

printCommand.Execute 

'Yep, SendKeys, erghhh 
Application.SendKeys "P" 'Force the whole project to print 
Application.SendKeys "{ENTER}"