УРА! Пообедать толком не успел, а тут уже ответ(ы) готовы! Спасибо Влад, очень помогли!!! Всё работает!
Спасибо ~PaRADoX~, но слияние (выгрузку из Excel в Word) по сути можно сделать/настроить самим - это несложно! - В уроках Николая это можно найти. Не вижу смысла в приобретении доп. пакетов за денежку. Хотя каждому, учитывая разные задачи - свое решение. В моем же случае была задача организовать печать для пользователя в самой программе Excel. Которая теперь благополучно решена! - Ещё раз ОГРОМНОЕ СПАСИБО Владу!
Ниже для "коллег по несчастью" привожу полный текст макроса.
Код
Sub PrintInvoices()
Sheets("ИМЯ_ЛИСТА_НА_КОТОРОМ_БЛАНК(КУДА ПОДСТАВЛЯЕМ ЗНАЧЕНИЕ)").Select
'Если не будет данного "аргумента", то нижеприведенный макрос будет работать только в том случае, если до его запуска выбран/сделан активным лист на который подставляются значения.
'В противном случае, подставляться будут верные значения и на нужный лист, НО на печать будет выводиться активный лист, то есть на котором был пользователь до запуска макроса.
Dim rngFrom As Range, Rng As Range
On Error Resume Next
Set rngFrom = Application.InputBox(prompt:="Выделите ячейки с номерам счетов, которые надо распечатать:", Title:="Откуда копируем", Type:=8).Areas(1)
If rngFrom Is Nothing Then Exit Sub
For Each cl In rngFrom.Cells.SpecialCells(xlCellTypeVisible)
[Inv] = cl.Value
'Inv - имя ячейки в которое подставляются значения - чтобы присвоить имя ячейке наводим на нее мышку (делаем её активной) и слева, там где строка формул есть окошко, по умолчанию в нем будет текущий номер ячейки, меняем его на необходимое нам и жмем Enter. Всё ячейка получило собственное имя (в нашем примере Inv), которое можно использовать в макросах или в формулах.
'.SpecialCells(xlCellTypeVisible) - важный атрибут, благодаря которому на печать будут выводиться только видимые/отфильтрованные значения, а не все из выделенного диапазона.
Calculate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Next
End Sub
Добрый день, форумчани и знатоки VBA! Помогите написать макрос - уверен он будет небольшой, но весьма полезный.
Задачка вот в чем: есть два листа в книге, первый с данными, второй - бланк, который и нужно будет вывести на печать после обновления в нем данных через функцию ВПР(в данном случае vlookup2 из plex). - Файл для примера прилагаю.
Что хотелось бы получить: при запуске макроса, появляется диалоговое окно с вопросом какие счета нужно напечатать - номер счета/счетов выбираем на первом листе "DATA", в столбце B ("INVOICE"). Затем макрос подставляя значение на второй лист "Общий_счет_НДС" в ячейку O14, производит Calculation/Пересчет и выводит заполненный бланк на печать, после чего операция повторяется, пока не дойдет до последнего выбранного пользователем номера счета.
Я пытался "написать" макрос сделав симбиоз из найденных данных в интернете и на форуме, но ввиду того, что грамоте по VBA пока не обучен - ничего толкового пока из этого не вышло. Вот попытки/старания:
Код
Dim rngFrom
As Range, Rng As Range
On Error Resume Next
Set rngFrom = Application.InputBox(prompt:="Выделите ячейки с номерам счетов, которые надо распечатать:", Title:="Откуда берем данные (подсказка: лист DATA,Cтолбец2)", Type:=8).Areas(1)
If rngFrom Is Nothing Then Exit Sub
'????? - вот тут не знаю как прописать чтобы макрос работал, как я описал в запросе выше...