2015-04-09 4 views
-2

Я запускаю .exe, чтобы передать аргумент, используя Office.Interop v15. Он отлично работает на Dev машине, которая окно 7 с офисом 2013. Когда я перейти к виртуальной машине под управлением Windows XP и Office 2010, я получаю сообщение об ошибке во время выполнения программы с указаниемOffice Interop Exception running Interop v15 в Windows XP

System.Runtime.InteropServices.COMException (0x80020005): несоответствие типов. (Исключение из HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))

Это потому, что interop v15 не поддерживает более низкую версию офиса?

Отрывок, где происходит ошибка

doc = app.Documents.Open(fileToPrint) /happens here 
doc.PrintOut(False) 
doc.Close() 
app.Quit() 

Как ни странно это работает, но только есть ошибка времени выполнения.

+0

Почему вы отметите это как ASP .СЕТЬ? – mason

+0

Звучит как 64-битная и 32-разрядная ошибка. – paqogomez

+1

Я очень подозреваю, что v15 не поддерживается или не изменился достаточно, чтобы не работать должным образом в офисных версиях с поддержкой XP. – DLeh

ответ

1

Попробуйте это.

Заменить этот код:

doc = app.Documents.Open(fileToPrint) /happens here 

При этом (в VB.NET)

Dim s_missing As Object = System.Reflection.Missing.Value 
doc = app.Documents.Open (fileToPrint, s_missing, s_missing, s_missing, s_missing,s_missing, s_missing, s_missing, s_missing, s_missing, s_missing, s_missing, s_missing, s_missing, s_missing, s_missing) 

Или с этим (в C#)

static object s_missing = System.Reflection.Missing.Value; 
doc = app.Documents.Open (ref fileToPrint, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing, 
    ref s_missing); 
Смежные вопросы