D
Dikobraz Grey
Всем доброго времени суток.
Столкнулся с проблемой при использовании OLE Word'a 2003.
Пытаюсь запустить из Lotus'a ручную двустороннюю печать файла Word'a:
[codebox]
Sub Click(Source As Button)
On Error Goto er1
Dim wordObject As Variant
Dim pvWordDocument As Variant
Dim Background As Variant
Dim Range As Variant
Dim Copies As Variant
Dim PageType As Variant
Dim PrintToFile As Variant
Dim Collate As Variant
Dim ManualDuplexPrint As Variant
Set wordObject=CreateObject("Word.Application")
If Isobject(wordObject) Then
wordObject.Visible=True
Set pvWordDocument=wordObject.Documents.Open("D:\test2.doc")
End If
Background=True
Range=Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument
Copies=1
PageType=Microsoft.Office.Interop.Word.WdPrintOutPages.wdPrintAllPages
PrintToFile=False
Collate=False
ManualDuplexPrint=True
Call pvWordDocument.PrintOut(Background, Range, Copies,PageType, PrintToFile, Collate, ManualDuplexPrint)
Exit Sub
er1:
Msgbox Error$ & Chr(10) & Getthreadinfo(1) & " (l." & Erl & ")"
Resume WorkDone
WorkDone:
End Sub[/codebox]
В приведенном коде получаю ошибку при запуске "Variant does not contain an object" при инициализации Range.
При попытке передачи параметров Range и PageType просто числами:
[codebox]
Background=True
Copies=1
PrintToFile=False
Collate=False
ManualDuplexPrint=True
Call pvWordDocument.PrintOut(Background, 0, Copies,0, PrintToFile, Collate, ManualDuplexPrint) [/codebox]
код падает при вызове PrintOut с ошибкой "Automation object argument type mismatch". Причем похоже, падает на параметре PageType (второй ноль).
Если же инициализировать Range и PageType по имени константы:
[codebox] Background=True
Range=wdPrintAllDocument
Copies=1
PageType=wdPrintAllPages
PrintToFile=False
Collate=False
ManualDuplexPrint=True
Call pvWordDocument.PrintOut(Background, Range, Copies,PageType, PrintToFile, Collate, ManualDuplexPrint) [/codebox]
код валится опять же на PrintOut, c той же ошибкой "Automation object argument type mismatch"
Может кто подскажет, как правильно передать параметры в функцию PrintOut?
По идее все параметры этой функции по MSDN и прочим источникам имеют тип Object, но Lotus его не знает
Ошибка "Variant does not contain an object" при попытке инициализации констант через Microsoft.Office.Interop.Word вполне логична и ожидаема, но я уже не знаю как правильно достучаться до них. Почему то кажется , что проблема именно в Range и PrintOut.
Заранее спасибо за помощь.
Столкнулся с проблемой при использовании OLE Word'a 2003.
Пытаюсь запустить из Lotus'a ручную двустороннюю печать файла Word'a:
[codebox]
Sub Click(Source As Button)
On Error Goto er1
Dim wordObject As Variant
Dim pvWordDocument As Variant
Dim Background As Variant
Dim Range As Variant
Dim Copies As Variant
Dim PageType As Variant
Dim PrintToFile As Variant
Dim Collate As Variant
Dim ManualDuplexPrint As Variant
Set wordObject=CreateObject("Word.Application")
If Isobject(wordObject) Then
wordObject.Visible=True
Set pvWordDocument=wordObject.Documents.Open("D:\test2.doc")
End If
Background=True
Range=Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument
Copies=1
PageType=Microsoft.Office.Interop.Word.WdPrintOutPages.wdPrintAllPages
PrintToFile=False
Collate=False
ManualDuplexPrint=True
Call pvWordDocument.PrintOut(Background, Range, Copies,PageType, PrintToFile, Collate, ManualDuplexPrint)
Exit Sub
er1:
Msgbox Error$ & Chr(10) & Getthreadinfo(1) & " (l." & Erl & ")"
Resume WorkDone
WorkDone:
End Sub[/codebox]
В приведенном коде получаю ошибку при запуске "Variant does not contain an object" при инициализации Range.
При попытке передачи параметров Range и PageType просто числами:
[codebox]
Background=True
Copies=1
PrintToFile=False
Collate=False
ManualDuplexPrint=True
Call pvWordDocument.PrintOut(Background, 0, Copies,0, PrintToFile, Collate, ManualDuplexPrint) [/codebox]
код падает при вызове PrintOut с ошибкой "Automation object argument type mismatch". Причем похоже, падает на параметре PageType (второй ноль).
Если же инициализировать Range и PageType по имени константы:
[codebox] Background=True
Range=wdPrintAllDocument
Copies=1
PageType=wdPrintAllPages
PrintToFile=False
Collate=False
ManualDuplexPrint=True
Call pvWordDocument.PrintOut(Background, Range, Copies,PageType, PrintToFile, Collate, ManualDuplexPrint) [/codebox]
код валится опять же на PrintOut, c той же ошибкой "Automation object argument type mismatch"
Может кто подскажет, как правильно передать параметры в функцию PrintOut?
По идее все параметры этой функции по MSDN и прочим источникам имеют тип Object, но Lotus его не знает
Ошибка "Variant does not contain an object" при попытке инициализации констант через Microsoft.Office.Interop.Word вполне логична и ожидаема, но я уже не знаю как правильно достучаться до них. Почему то кажется , что проблема именно в Range и PrintOut.
Заранее спасибо за помощь.