Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

scorpio

Excel 2000 para 2007

Recommended Posts

Fala pessoas!

Tudo certo?

 

Tenho uma aplicação em ASP, que gera relatórios/gráficos no Excel. E no servidor, foi migrado o Office 2000 para o Office 2007.(usa daquele jeito Server.CreateObject("Excel.application")) E depois da mudança, esses relatórios não funcionam mais.

Estranho que tenho mais duas aplicações nesse mesmo servidor, que também geram relatórios no Excel, que não pararam de funcionar.

 

Montei um programa, para testar. Criei uma planilha (no mesmo esquema do sistema original, lê uma planilha "template" e salva uma cópia). Instalei o Office 2000, rodei o programa, funcionou. Desinstalei o Office 2000 e coloquei o 2007, funcionou também.

 

<%
	'On Error resume next
	'Criação do Objeto Excel
	Dim objExcelApp
	set objExcelApp = Server.CreateObject("Excel.application")
	If Err.Number <> 0 Then
		response.write ("Ocorreu o seguinte erro ao criar o objeto:<BR>" & Err.Description)
		Response.end
	Else
		Response.write ("Criação do objeto OK!<BR>")
	End If

	
	Dim objExcelWork

	' brir o arquivo do Excel
	Set objExcelWork = objExcelApp.Workbooks.Open("c:\teste excel\teste.xls")
	If Err.Number <> 0 Then
		response.write ("Ocorreu o seguinte erro ao abrir o arquivo:<BR>" & Err.Description)
		Response.end
	Else
		Response.write ("Arquivo aberto com sucesso!<BR>")
	End If
	
	
	
	' definir qual a planilha de trabalho
	Dim objExcelSheet
	set objExcelSheet = objExcelWork.Sheets("Plan1")
	objExcelSheet.Select
	If Err.Number <> 0 Then
		response.write ("Ocorreu o seguinte erro ao selecionar a planilha:<BR>" & Err.Description)
		Response.end
	Else
		Response.write ("Planilha selecionada com sucesso!<BR>")
	End If
	
	
	' xibe o conteúdo da célula na posição 2,3
   ' variavel = xlw.Application.Cells(2, 3).Value
   Dim Valor
   Valor = Date
   Dim MyRange
   set MyRange = objExcelSheet.Range("C3")
   MyRange.Value = now
   set MyRange = objExcelSheet.Range("D3")
   MyRange.Value = "Mariazinha"
   MyRange.Orientation = 80
   set MyRange = objExcelSheet.Range("F3")
   MyRange.Value = "Leticia"
   MyRange.Font.Size = 26
   set MyRange = objExcelSheet.Range("C4")
   MyRange.Value = "Melancia"
   MyRange.Font.Color = RGB(255,125,125)
   set MyRange = objExcelSheet.Range("D4")
   MyRange.Value = "Abacaxi"
   set MyRange = objExcelSheet.Range("F4")
   MyRange.Font.Bold = True
   MyRange.Value = "Pastel"
	If Err.Number <> 0 Then
		response.write ("Ocorreu o seguinte erro ao inserir valor na planilha:<BR>" & Err.Description)
		Response.end
	Else
		Response.write ("Valor inserido com sucesso!<BR>")
	End If

 
	Set MyRange = objExcelSheet.Range("C3:F10")
	MyRange.Interior.ColorIndex = 44
	 If Err.Number <> 0 Then
		response.write ("Ocorreu o seguinte erro ao Mudar a cor da planilha:<BR>" & Err.Description)
		Response.end
	Else
		Response.write ("Cor alterada com sucesso!<BR>")
	End If
 
	Set MyRange = objExcelSheet.Range("C5:D8")
	MyRange.Borders.LineStyle = 1 'solida
	MyRange.Borders.Color = RGB(0,255,255)
	MyRange.Borders.Weight = 4
	  If Err.Number <> 0 Then
		response.write ("Ocorreu o seguinte erro ao colocar bordas na planilha:<BR>" & Err.Description)
		Response.end
	Else
		Response.write ("Borda com sucesso!<BR>")
	End If
	
	Set MyRange = objExcelSheet.Range("A1:B2")
	MyRange.Select
	
	Dim objExcelGrafico
	set objExcelGrafico = objExcelApp.Charts.Add
	
	If Err.Number <> 0 Then
		response.write ("Ocorreu o seguinte erro ao gerar graficos:<BR>" & Err.Description)
		Response.end
	Else
		Response.write ("Grafico gerado com sucesso!<BR>")
	End If
	' Fechar a planilha salvar alterações
	' Para salvar mude False para True

	objExcelWork.Application.DisplayAlerts = False
	objExcelWork.SaveAs "C:\Teste Excel\TesteSaveAs" & Replace(Replace(CStr(Now),"/",""),":","") &".xls"
	If Err.Number <> 0 Then
		response.write ("Ocorreu o seguinte erro ao salvar a planilha:<BR>" & Err.Description)
		Response.end
	Else
		Response.write ("Planilha salva com sucesso!<BR>")
	End If
	' Liberamos a memória

	objExcelApp.Quit

	Set objExcelApp = Nothing
	Set objExcelWork = Nothing
	Set objExcelSheet = Nothing
	Set objExcelGrafico = Nothing
	

%>

 

 

 

Alguém sabe de alguma diferença na programação, que possa ser incompativel?

 

Ah, o erro que me aparece quando mando gerar o relatório é "could not be found". Mas porém todavia entretando, antes de abrir ele gera o arquivo xls.

Os relatórios são gerados pelas DLL do sistema mesmo, e quase todos métodos gravam logs de erro no BD, olhei lá e nada de erro. Pode ser que, como sou um cara sortudo, justo o método que da erro, não grava log. :rolleyes:

 

 

Grande Abraço!

 

Off: Não tem mais CODEBOX ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hnm. valeu.

Essa mensagem sua é boa e ruim ao mesmo tempo! :)

 

Boa porque se é compátivel, não vou ter que mecher nas DLL.

Ruim porque não sei o que pode ser, ja que antes de alterar o Office funcionava.

 

 

Muito obrigado Anderson!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você disse que existem aplicações que nao deram problemas ????

tenta trocar o teste.xls por teste.xlsx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também achei que fosse isso. A extensão.

Mas fiz um teste e com o Office 2007 abriu normalmente XLS.

Achei que pudesse estar salvando como XLSX e tentando abrir como XLS, mas nem chegou a gerar o arquivo.

As outras aplicações funcionam da mesma maneira. Copia -> Abre -> Salva

 

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem... por enquanto não posso fazer nada, mas assim que descobrir o que causa, posto aqui a causa e solução.

 

Até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o estranho é que as outras aplicações , funcionan...

olha por incrivel que pareça, certa vez, eu tive um aplicação, que em um servidor

funcionava normal, a mesma aplicação em outro server, dá pau, simplesmente não fazia,

apenas salvei com outro nome, e foi...

muito estranho...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hey!

 

 

Descobrimos o que pode estar causando o erro.

O sistema que parou, usa umas DLL que usam um tal de OWC(Office Web Components).

Esse tal de OWC foi descontinuado no Office 2007.

 

Os outros relatórios funcionam, porque não usam esse OWC.

 

Agora, a solução que encontramos, é de escrever no ASP mesmo, o código da DLL, e se funcionar corretamento o código (com as devidas alterações, retirando qualquer referencia á OWC) reescreveremos a DLL.

 

Talvez essa não seja a melhor forma. Caso alguém tenha alguma outra idéia.

 

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.