automacao ole excel
Moderador: Moderadores
-
marcelosantos
- Usuário Nível 2

- Mensagens: 64
- Registrado em: 02 Jul 2013 21:12
- Localização: sao paulo sp
automacao ole excel
Amigos postei um tópico sobre como ler dados de planilha do excel, graças aos amigos do fórum consegui desenvolver um rotina que le a planilha e joga no dbf, testei e esta tudo ok.
Porem o sistema funciona corretamente na minha maquina onde tenho o office completo.
Já nas maquinas dos usuários que usam a versão office starter(por opção do dono da empresa) a rotina não funciona.
Tem como fazer a automação funcionar nessas maquinas mesmo com a versão office starter?
Tem alguma maneira de contornar o problema?
obrigado
Marcelo
Porem o sistema funciona corretamente na minha maquina onde tenho o office completo.
Já nas maquinas dos usuários que usam a versão office starter(por opção do dono da empresa) a rotina não funciona.
Tem como fazer a automação funcionar nessas maquinas mesmo com a versão office starter?
Tem alguma maneira de contornar o problema?
obrigado
Marcelo
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
automacao ole excel
Marcelo, dê mais detalhes sobre o que está ocorrendo e o código que você está usando? É apresentado alguma mensagem de erro?
Outra coisa, o Office Starter por padrão salva os arquivos com a extensão XLSX, mas também pode salvar no formato do Excel 97 - 2003, com a extensão XLS. O arquivo que você está lendo está com qual extensão, XLSX ou XLS?
Abraços,
Outra coisa, o Office Starter por padrão salva os arquivos com a extensão XLSX, mas também pode salvar no formato do Excel 97 - 2003, com a extensão XLS. O arquivo que você está lendo está com qual extensão, XLSX ou XLS?
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
automacao ole excel
Olá!
Esse tipo de acesso, via automação OLE exige que o Excel esteja instalado na máquina onde a aplicação está sendo executada.
O ideal é deixar a aplicação livre dessa amarra. Para superar isto, pode-se abrir os documentos do Office via ADO. Tem um exemplo de acesso a Excel por esse método aqui no fórum, postado pelo Quintas: Importando de planilha Excel - nome da planilha
Esse tipo de acesso, via automação OLE exige que o Excel esteja instalado na máquina onde a aplicação está sendo executada.
O ideal é deixar a aplicação livre dessa amarra. Para superar isto, pode-se abrir os documentos do Office via ADO. Tem um exemplo de acesso a Excel por esse método aqui no fórum, postado pelo Quintas: Importando de planilha Excel - nome da planilha
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
marcelosantos
- Usuário Nível 2

- Mensagens: 64
- Registrado em: 02 Jul 2013 21:12
- Localização: sao paulo sp
automacao ole excel
Saudações, Toledo e demais colegas.
Segue o código, porem funciona perfeitamente em uma maquina com o office full, já em uma maquina com office starter,nao funciona. acho que o starter não possibilita essa automação.
eu peguei a planilha gerada através do contmatic e gerei um dbf que é lido por outro sistema aqui na empresa, o office starter não le e não gera essa planilha. A automação ole acontece dentro do prg em harbour sem a interferência do office starter.
Acho que a citação do nosso colega e interessante, não havia pensado nisso.
Desde já obrigado amigos.
O erro que da é: error ToleAuto/-1 toleauto:newToledo escreveu:Marcelo, dê mais detalhes sobre o que está ocorrendo e o código que você está usando? É apresentado alguma mensagem de erro?
Segue o código, porem funciona perfeitamente em uma maquina com o office full, já em uma maquina com office starter,nao funciona. acho que o starter não possibilita essa automação.
Toledo isso não é problema porque a planilha é gerada do sistema contmatic sem a minha interferência, eu apenas passo as linha para o DBF.Toledo escreveu:Outra coisa, o Office Starter por padrão salva os arquivos com a extensão XLSX, mas também pode salvar no formato do Excel 97 - 2003, com a extensão XLS. O arquivo que você está lendo está com qual extensão, XLSX ou XLS?
eu peguei a planilha gerada através do contmatic e gerei um dbf que é lido por outro sistema aqui na empresa, o office starter não le e não gera essa planilha. A automação ole acontece dentro do prg em harbour sem a interferência do office starter.
Acho que a citação do nosso colega e interessante, não havia pensado nisso.
Desde já obrigado amigos.
alxsts escreveu:Olá!
Esse tipo de acesso, via automação OLE exige que o Excel esteja instalado na máquina onde a aplicação está sendo executada.
O ideal é deixar a aplicação livre dessa amarra. Para superar isto, pode-se abrir os documentos do Office via ADO. Tem um exemplo de acesso a Excel por esse método aqui no fórum, postado pelo Quintas: Importando de planilha Excel - nome da planilha
Olá!
Esse tipo de acesso, via automação OLE exige que o Excel esteja instalado na máquina onde a aplicação está sendo executada.
O ideal é deixar a aplicação livre dessa amarra. Para superar isto, pode-se abrir os documentos do Office via ADO. Tem um exemplo de acesso a Excel por esse método aqui no fórum, postado pelo Quintas: Importando de planilha Excel - nome da planilha
Código: Selecionar todos
#include <hmg.ch>
declare window impcax
FUNCTION ABRE_TXT()
local linhas_excel:={}
LOCAL X , i, contavazias,oarquivo
contavazias:=0
oarquivo:=impcax.text_1.value
x:=impcax.text_2.value
// ---------------------
SELEC 3
use &oarquivo alias caixados
if neterr()
msginfo("NAO FOI POSSIVEL ABRIR O ARQUIVO - FECHAR O SISTEMA DO ALEXANDRE ANTES DE IMPORTAR OS LANÇAMENTOS")
RETURN
endif
// ---------------------
DBGOBOTTOM()
IF LASTREC() <=1
Wzdoc:=0
ELSE
Wzdoc:=lastrec()
ENDIF
// abre planilha do excel
oExcel:=ToleAuto():new("Excel.Application")
oExcel:Workbooks:Open(x)
oExcel:Visible := .F.
for i=5 to 70000 && atenção pega apenas 70000 lancamentos - percorre planilha do excel
VCnpj :=oExcel:Cells( i, 1 ):value
VRazao :=oExcel:Cells( i, 2 ):value
VData :=oExcel:Cells( i, 3 ):value AS STRING
iif(impcax.radiogroup_1.value=1,VSerie:=oExcel:Cells(i,5):value,VSerie:=oExcel:Cells(i,4):value)
iif(impcax.radiogroup_1.value=1,VEspecie:=oExcel:Cells(i,6):value,VEspecie:=oExcel:Cells(i,5):value)
iif(impcax.radiogroup_1.value=1,VNumero:=oExcel:Cells(i,7):value,VNumero:=oExcel:Cells(i,6):value AS STRING )
VCfop:=oExcel:Cells(i,9):value
VVc:=oExcel:Cells( i, 10):value
VBcIcms:=oExcel:Cells( i, 11 ):value
VIcms :=oExcel:Cells( i, 12 ):value
VBcIpi :=oExcel:Cells( i, 17 ):value
VIpi :=oExcel:Cells( i, 18 ):value
if .not. empty(vcnpj)
Aadd(linhas_excel,{vcnpj,vrazao,vdata,vserie,vespecie,vnumero,vcfop,vvc,vbcicms,vicms,vbcipi,vipi})
else
skip
contavazias:=contavazias+1
if contavazias>=30
contaazias:=0
exit
endif
endif
next
oExcel:Workbooks:Close()
// validando variaveis para gravação no dbf
// {vcnpj,vrazao,vdata,vserie,vespecie,vnumero,vcfop,vvc,vbcicms,vicms,vbcipi,vipi}
for i=1 to len(linhas_excel)
wzdoc:=Wzdoc+1
IIF(VALTYPE(linhas_excel[i][3])<>"U",wzdat:=linhas_excel[i][3]+"/"+STR(impcax.SPINNER_1.VALUE,4),wzdat:=ctod(" / / "))
IF VALTYPE(LINHAS_excel[I][7]) ="C"
IF SUBSTR(LINHAS_excel[I][7],1,1) = "1" .OR. SUBSTR(LINHAS_excel[I][7],1,1) ="2" .OR. SUBSTR(LINHAS_excel[I][7],1,1) ="3"
WZHIS:="COMPRAS REALIZADAS CF DUPL"
ELSE
WZHIS:="VENDAS REALIZADAS CF DUPL"
ENDIF
ELSE
msginfo(VALTYPE(LINHAS_excel[I][7])+"Tipo de Campo Invalido - gravou espacos no historico")
WZHIS:=SPACE(10)
ENDIF
WZVAL:= LINHAS_excel[I][8]
WZCOD:=strzero(val(impcax.TEXT_4.VALUE),4)
WZCMP:="NF "+strzero(LINHAS_excel[I][6],6)+" "+LINHAS_excel[I][2]
IIF(impcax.radiogroup_1.value=1,VZOPE:="E",VZOPE:="S")
VZCHI="00"
grava_registro()
next
SELECT 3
CLOSE ALL
msginfo("ARQUIVO GERADO COM SUCESSO")
RETURN
function grava_registro()
append blank
replace zdoc with str(Wzdoc,10)
replace zdat with ctod(wzdat)
replace zope with VZOPE
replace zchi with VZCHI
replace zhis with wzhis
replace zval with wzval
replace zcod with wzcod
replace zcmp with wzcmp
impcax.edit_1.value:=3->zdoc
return
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
automacao ole excel
Marcelo, não tenho o office Starter aqui para fazer testes, mas verifique se a classe Excel.Application consta no registro do windows. Para isto basta digitar REGEDIT no executar do windows e procure pela chave HKEY_CLASSES_ROOT\Excel.Application.
Aqui tenho o Office 2003 e encontrei as chaves Excel.Application e Excel.Application.11.
Abraços,
Aqui tenho o Office 2003 e encontrei as chaves Excel.Application e Excel.Application.11.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
marcelosantos
- Usuário Nível 2

- Mensagens: 64
- Registrado em: 02 Jul 2013 21:12
- Localização: sao paulo sp
automacao ole excel
Toledo não tenho essa chave na minha maquina que tem o office 2007 completo e o prg roda na boa, nas maquinas com starter também não encontrei a chave
obrigado
obrigado
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
automacao ole excel
Marcelo, então o jeito é ver o exemplo do José Quintas que o Alexandre indicou ou fazer um teste com o OpenOffice Calc, se o seu cliente permitir a instalação.
Tem um exemplo do OpenOffice Calc na MiniGui Extended, veja a função Lis_TarCodigoiCalc() que está no arquivo \SAMPLES\BASIC\print_list\hbprint_list.prg.
Abraços,
Tem um exemplo do OpenOffice Calc na MiniGui Extended, veja a função Lis_TarCodigoiCalc() que está no arquivo \SAMPLES\BASIC\print_list\hbprint_list.prg.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
marcelosantos
- Usuário Nível 2

- Mensagens: 64
- Registrado em: 02 Jul 2013 21:12
- Localização: sao paulo sp
automacao ole excel
Ok, Toledo, vou verificar, obrigado por tudo.
Alexandre obrigado por tudo.
Alexandre obrigado por tudo.
Editado pela última vez por Toledo em 07 Fev 2014 20:01, em um total de 1 vez.
Razão: Mensagem editada para retirar o quote com o conteúdo total da mensagem anterior.
Razão: Mensagem editada para retirar o quote com o conteúdo total da mensagem anterior.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
automacao ole excel
Marcelo, agora que me surgiu uma dúvida, será que com o OpenOffice Calc é possível abrir um arquivo XLS?
Abraços,
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao