2012-03-28 26 views
5

He desarrollado una aplicación WinForm con VB.Net (VS2010) que tiene instalado Office 2010 Professional, y es Windows 7 Platform de 64 bits. El programa abre un documento con formato .doc y .rtf e intenta guardarlo en formato htm. Estoy utilizando comandos siguientes:SaveAs2 Para Word 2010 no funciona con PC de cliente que tiene Word 2007

Dim sFilePath como String = "C: \ ABC \ file.doc"

 Dim oApp As New Microsoft.Office.Interop.Word.Application 
     Dim oDoc As New Microsoft.Office.Interop.Word.Document 
     Dim sTempFileName As String = System.IO.Path.GetTempFileName() 
     oDoc = oApp.Documents.Open(sFilePath) 
     oApp.Visible = False 
     oDoc = oApp.ActiveDocument 
     oDoc.SaveAs2(sTempFileName, FileFormat:=WdSaveFormat.wdFormatHTML,CompatibilityMode:=Microsoft.Office.Interop.Word.WdCompatibilityMode.wdWord2007) 
     oDoc.Close() 
     oApp.Quit() 
     oDoc = Nothing 
     oApp = Nothing 

Todo va muy bien con el desarrollo y en ejecución en el PC de desarrollo, pero cuando lo publico para fuera de línea instalación, y desplegarlo en la PC del Cliente que tiene Windows XP con Office 2007, da error en la línea oDoc.SaveAs2 y bloqueos del programa. He buscado en Google lo suficiente pero no he podido encontrar una solución. Alguien por favor me ayude lo antes posible

Respuesta

3

From MSDN

SaveAs2
Este método aparece en IntelliSense en Word 2007 proyectos destinados a .NET Framework 4. Sin embargo, esta propiedad no se puede utilizar en Word 2007 proyectos

Por cierto, si busca en este sitio, encontrará la respuesta a su problema here

Puede verificar la versión de la palabra actual instalada en el u ser PC usando este código:

string v = _myWordApp.Version; 
switch(v) 
{ 
    case "7.0": 
    case "8.0": 
    case "9.0": 
    case "10.0": 
    _myWordDoc.SaveAs2000(ref _documentFile, ref _nothing, ref _nothing, ref _nothing, 
     ref _nothing, ref _nothing, ref _nothing, ref _nothing, 
     ref _nothing, ref _nothing, ref _nothing); 
     break; 
    case "11.0": 
    case "12.0" 
    _myWordDoc.SaveAs(ref _documentFile, ref _nothing, ref _nothing, ref _nothing, 
     ref _nothing, ref _nothing, ref _nothing, ref _nothing, 
     ref _nothing, ref _nothing, ref _nothing, ref _nothing, 
     ref _nothing, ref _nothing, ref _nothing, ref _nothing); 
    case "14.0" 
    _myWordDoc.SaveAs2(ref _documentFile, ref WdSaveFormat.wdFormatHTML, 
       ref _nothing, ref _nothing, ref _nothing, 
     ref _nothing, ref _nothing, ref _nothing, ref _nothing, 
     ref _nothing, ref _nothing, ref _nothing, ref _nothing, 
     ref _nothing, ref _nothing, ref _nothing, 
       ref Microsoft.Office.Interop.Word.WdCompatibilityMode.wdWord2007); 
     break; 
    default: 
     errorText = "Not able to get Word Version" 
     break; 
} 

Disculpe el código C#, pero es fácil de traducir.

+1

Gracias por la aclaración del método 'Guardar' basado en la versión de Office. Estaba obteniendo el 'RPC_E_SERVERFAULT' porque estaba usando el método' SaveAs' incorrecto. – SliverNinja

Cuestiones relacionadas