![]() |
![]() |
![]() |
|
v8: передать параметр в макрос word | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
адинэсниг1
08.07.13
✎
15:36
|
onprint = поле ввода.значение;
ТекстМакроса = "Sub VBAL1() | Application.PrintOut FileName:="""", Range:=wdPrintAllDocument, Item:= _ | wdPrintDocumentContent, Copies:=1, Pages:=???, PageType:=wdPrintAllPages, _ | ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _ | False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _ | PrintZoomPaperHeight:=0 | End Sub"; Word = Новый COMОбъект("Word.Application"); Word.Documents.Open("d:/1.docx"); Word.Application.Visible=0; VB = Word.VBE.ActiveVBProject.VBComponents; Cnt = VB.Count(); VB.Add(1); VB.Item(Cnt+1).CodeModule.InsertLines(1,ТекстМакроса); Word.Application.Run("VBAL1"); автор, иди учись программир Как передать значание поля в параметр Pages? пробывал Pages:="+onprint+", Pages:="""+onprint+""", Pages:="+символ(34)+onprint+символ(34)+". Во всех случаях печатает все страницы, невзирая на занчанеие. ps. пробывал печатать и без макроса, не взлетает. примерно так: msword.printout(,,,,,,,,onprint,) |
|||||||
1
Андрюха
08.07.13
✎
15:38
|
1) Включи запись макроса
2) Напечатай нужные страницы 3) Останови запись 4) Зайди в макрос и посмотри параметры Pages |
|||||||
2
адинэсниг1
08.07.13
✎
15:49
|
(1) я делал это. Если, например печатать 1,6-10 страницы, то в макросе pages="1,6-10".
В 1с Пробывал передавать в макрос и 1,6-10, и "1,6-10". Печатает все страницы не взирая на это. ТекстМакроса = "Sub VBAL1() | Application.PrintOut FileName:="""", Range:=wdPrintAllDocument, Item:= _ | wdPrintDocumentContent, Copies:=1, Pages:="+символ(34)+onprint+символ(34)+", PageType:=wdPrintAllPages, _ | ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _ | False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _ | PrintZoomPaperHeight:=0 | End Sub"; |
|||||||
3
acsent
08.07.13
✎
15:53
|
а на msdn зайти?
|
|||||||
4
Jaap Vduul
08.07.13
✎
15:54
|
Вместо wdPrintAllDocument надо wdPrintRangeOfPages.
Для восьмёрки, кстати, извращение со вставкой кода не нужно. А при вызове методов для необязательных параметров нужно передавать Неопределено. |
|||||||
5
acsent
08.07.13
✎
15:54
|
да и встроенный хелп неплохой
|
|||||||
6
адинэсниг1
08.07.13
✎
15:55
|
(4) thank you!
|
|||||||
7
адинэсниг1
10.07.13
✎
09:08
|
Еще вопрос по этой теме, вот в этом куске:
VB = MsWord.Application.VBE.ActiveVBProject.VBComponents; Cnt = VB.count(); VB.Add(1); VB.Item(Cnt+1).CodeModule.InsertLines(1,ТекстМакроса); MsWord.Application.Run("VBAL1"); Состояние("Отключение от Word"); MsWord.Quit(Ложь); MsWord = Неопределено; Нету стабильности, то печатает все хорошо, то не обнаружен метод count(), то не обнаружен метод item(). От чего это может зависеть? ps. office 2010 |
|||||||
8
адинэсниг1
10.07.13
✎
09:12
|
И еще, можно ли средствами 1с передать параметр wdPrintRangeOfPages в printout? что-бы не мучатся с макросами?
|
|||||||
9
skunk
10.07.13
✎
09:17
|
от ActiveVBProject
|
|||||||
10
адинэсниг1
10.07.13
✎
09:20
|
(9) подробнее, если не сложно
|
|||||||
11
skunk
10.07.13
✎
09:22
|
(8)wdPrintRangeOfPages = 4
|
|||||||
12
skunk
10.07.13
✎
09:24
|
(10)ActiveVBProject соддержит указатель на активный VBProject ... который тупо может просто отсуствовать
|
|||||||
13
адинэсниг1
10.07.13
✎
09:52
|
(11) Пишет:
Ошибка при вызове метода контекста (PrintOut): Типы не совпадают (12) Вот так пытаюсь передать: MsWord.PrintOut(0,неопределено,4,неопределено,неопределено,неопределено,неопределено,1,"1-2",неопределено,False,True); третий параметр пробывал и 1,2,3,4,5,6. |
|||||||
14
skunk
10.07.13
✎
09:57
|
а так?
MsWord.PrintOut(0, , 4, , , , , 1, "1-2", , False, True); |
|||||||
15
адинэсниг1
10.07.13
✎
10:00
|
(14) получилось! спасибо!
|
|||||||
16
skunk
10.07.13
✎
10:03
|
(15)для необязательных параметров в функции и процедуры ничего не передовай ... а "неопределено" - это уже что-то
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |