RELATÓRIO COM WORD 2016

FLAVIOGUILHERME 13/12/2016 14:57:06
#469687
Boa tarde,
tenho um sistema que gera relatório em Word 2010, porém ao instalar em uma maquina que usa o Word 2016 o sistema não funciona.
Me parece que o Word 2016 não esta deixando o sistema acessa-lo, alguém já teve algum problema parecido?

Parte do código:

Dim objDoc As Word.Document
Set objWord = New Word.Application
objWord.Visible = True
Set objDoc = objWord.Documents.Open(App.Path & [Ô]\bi.doc[Ô])
TUNUSAT 13/12/2016 15:52:14
#469696
FLAVIOGUILHERME,

Não sei se te ajuda, eu estou usando o Office 2016 com ASP.Net MVC desta forma:

======================

wd = new WordModels();
wd.AbrirTemplate(PastaModels.CaminhoTemplate());
Dictionary<String, String> PropriedadesDocumento = wd.ImportarDocProperties();

======================

public void AbrirTemplate(String caminho)
{
docWord = wordApp.Documents.Add(caminho);
}

======================

public static String CaminhoTemplate()
{
return PastaModels.diretorioAplicacao() + @ConfigurationManager.AppSettings.Get([Ô]Template[Ô]);
}

======================

public Dictionary<String, String> ImportarDocProperties()
{
foreach (dynamic prop in docWord.CustomDocumentProperties)
{
docProperties.Add(prop.Name().ToString(), prop.Value().ToString());
}
return docProperties;
}

======================

using System;
using Word = Microsoft.Office.Interop.Word;
using System.Collections.Generic;


public WordModels()
{
wordApp = new Word.Application();
wordApp.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;
//wordApp.Visible = true;
docProperties = new Dictionary<String, String>();
}

======================

private void GerarRelatorio()
{
wd = new WordModels();
wd.AbrirTemplate(PastaModels.CaminhoTemplate());
Dictionary<String, String> PropriedadesDocumento = wd.ImportarDocProperties();

foreach (KeyValuePair<String, String> item in PropriedadesDocumento)
{
if (this.dadosAtual.ContainsKey(item.Key))
{
String valor = this.dadosAtual[item.Key];
wd.AtualizarDocProperty(item.Key.ToString(), valor);
}
}
wd.AtualizarDocVariable([Ô]CaminhoImagem[Ô], PastaModels.CaminhoImagens());
wd.AtualizarCampos();
wd.SalvarRelatorio(PastaModels.CaminhoRelatorios() + this.nome);
wd = null;
}

======================

public void AtualizarDocVariable(String name, String value)
{
docWord.Variables[name].Value = value;
}

======================

public void AtualizarCampos()
{
//foreach (Word.Shape shape in this.docWord.Shapes)
// shape.TextFrame.TextRange.Fields.Update();
docWord.Fields.Update();
docWord.Fields.Update();
docWord.Fields.Update();
}

======================

public void SalvarRelatorio(String caminho)
{
docWord.SaveAs(caminho);
docWord.SaveAs2(caminho,Word.WdSaveFormat.wdFormatPDF);
docWord.Close();
wordApp.Quit();
}

======================

[][ô]s,
Tunusat.
LVFIOROT 13/12/2016 16:45:26
#469704
qual a msg de erro?
MARIOANDRADE 13/12/2016 18:40:05
#469710
Você já tentou mudar a extensão do arquivo para [Ô].docx[Ô]?
FLAVIOGUILHERME 15/12/2016 17:09:39
#469766
Da erro nessa linha:
Set objWord = New Word.Application

TUNUSAT, obrigado, mas não funciona dessa maneira.

LVFIOROT, Diz que não foi possível criar o objeto

MARIOANDRADE, Já mudei a Extensão para DOCX e também não funcionou.

No Office 2010 funciona perfeitamente, só no 2016 que não.
MARCELO.TREZE 16/12/2016 08:17:33
#469786
acredito que a referencia esteja causando este problema, em project/references verifique qual [Ô]Microsoft Office 14.0 Object Library[Ô] está selecionado, o 14.0 é para meu caso que possuo o office 2010 instalado em minha máquina,

Para solucionar o problema o ideal seria ou instalar a ultima versão do office na maquina em que o programa será compilado ou jogar apenas a dll do office mais novo no seu pc (não sei por teoria iria funcionar)





MARIOANDRADE 19/12/2016 13:14:40
#469846
Seu Office é 64 bit? Se for pode ser isso pois a Microsof não
oferece mais suporte para controles ActiveX para essa plataforma
(caso esteja usando algum no documento em questão).
JCM0867 20/12/2016 12:04:10
#469863


Colocou no inicio
Dim Word As Object

Depois
Word = CreateObject([Ô]Word.Application[Ô])
Word.Documents.Open([Ô]Documentos.docx[Ô] )
Faça seu login para responder