Ir para conteúdo

Arquivado

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

preda

VB6 Excel

Recommended Posts

Alguem sabe me dizer, como eu faço pra inserir dados em uma planilha de Excel usando um programa em vb6 ?Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Set e = CreateObject("Excel.Application")	Set pasta = e.Workbooks.Add()	Set planilha = pasta.WorkSheets("Plan1")	planilha.Range("B2").Value = "um teste"		e.Visible = True

Seria isso? ;)

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, com a dica que voce me deu, ele abre dois arquivos. Sendo o primeiro, o arquivo que eu quero, e o segundo, o arquivo onde ele insere os dados.Eu gostaria de inserir os dados no meu arquivo. E ele tá criando um arquivo genérico do excel "Pasta1".Como faço isso ?Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

falai preda,

 

é só mudar a 2° linha de Add para Open e passar o caminho do arquivo

Set pasta = e.Workbooks.Open("C:\Teste\Horario.xls")
t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw kra !

 

Olha a sintaxe que eu usei :

 

Set xl = CreateObject("excel.application")

Set xlw = xl.Workbooks.Open(App.Path & "\Excel\Area_Padrao.xls")

xlw.Sheets("Plan1").Select

xl.Visible = True

 

Col = "F"

 

For n = 4 To 6

 

xl.Range(Col & n).Value = Aqui no caso eu vo colocar o numero de registros no DBgrid.

 

Mas eu to com duvida de como contar só o q tem no DBgrid !

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

xl.Range(Col & n).Value = Aqui no caso eu vo colocar o numero de registros no DBgrid.Mas eu to com duvida de como contar só o q tem no DBgrid !

O que tem no DBGrid é o que tem na origem dos dados (DataSource), certo? Então, veja se a propriedade RecordCount do seu Recordset retornar a quantidade de registros.Abraços,Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, desculpa eu não especifiquei.

 

No caso o que está no DBgrid, é os dados apos eu fazer um consulta. Por isso eu quero as coisas especificamente do DBgrid.

 

Eu tenho que contar quantos registro tem no DBgrid, e jogar esta quantidade no Excel, agora só está faltando contar estes regristros.

 

Tipo assim, eu vou ter cadastros de São josé, Taubaté e Litoral. Ai o cara vai especificar um periodo.

Ai no DBgrid, esta exibindo quantos registro destas 3 regioes tem no BD. Feito isso, eu tenho q contar qtos registros tem de cada e jogar no excel!

 

Senão eu dava um while not rs.eof

 

Entendeu ?

 

Vlw

 

Malz cara. Devido a minha displicencia, eu esqueci o lance do recordset.

 

Era isso mesmo que tu falou. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Esquece o que escrevi acima, agora eu so tenho q filtrar os dados por regiao !

Compartilhar este post


Link para o post
Compartilhar em outros sites

To passando por um problema grave, com esse intrução acima, apesar de eu saber que está correta.

O Recordcount so conta 10 registros, de acordo com o "WHERE" que eu coloquei pra ele, sendo que no dbgrid, ele está exibindo muito + .

 

Olha ae a sintaxe:

dsj.RecordSource = "Select * from Rep where r_datar >= #" & Format(txtdatai.Text, "mm/dd/yyyy") & "# and r_datar <= #" & Format(txtdataf.Text, "mm/dd/yyyy") & "# and r_sup like'*Anderson'"	 dsj.Refresh	 Ta(1) = dsj.Recordset.RecordCount	 dtt.RecordSource = "Select * from Rep where r_datar >= #" & Format(txtdatai.Text, "mm/dd/yyyy") & "# and r_datar <= #" & Format(txtdataf.Text, "mm/dd/yyyy") & "# and r_sup like'*Marco Aurélio'"	 dtt.Refresh	 Ta(2) = dtt.Recordset.RecordCount	 dlt.RecordSource = "Select * from Rep where r_datar >= #" & Format(txtdatai.Text, "mm/dd/yyyy") & "# and r_datar <= #" & Format(txtdataf.Text, "mm/dd/yyyy") & "# and r_sup like'*João Nabarro'"	 dlt.Refresh	 Ta(3) = dlt.Recordset.RecordCount	 dji.RecordSource = "Select * from Rep where r_datar >= #" & Format(txtdatai.Text, "mm/dd/yyyy") & "# and r_datar <= #" & Format(txtdataf.Text, "mm/dd/yyyy") & "# and r_sup like'*Pablo'"	 dji.Refresh	 Ta(4) = dji.Recordset.RecordCount

E o valor do Ta(1) fica = 10

Sendo que tenho 81 registros, e dos 81, 43 estão de acordo com o que pede.

 

Tem algum erro ai ?

 

dsj, dtt, dlt, dji são data control.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, faz muuuiiiitttooo tempo que não utilizo DAO, mas experimente fazer:

 

dsj.RecordSource = "SELECT * FROM Rep WHERE DateValue(r_datar) >= DateValue('" & txtdatai.Text & "') AND DateValue(r_datar) <= DateValue('" & txtdataf.Text & "') AND r_sup LIKE '*Anderson';"

E veja se ele retorna a quantidade certa de registros. Experimente também trocar o "*" por "%" (se bem que eu acho que com DAO tem que ser o "*" mesmo).

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gray você vai rir, mas eu resolvi essa parada de outra maneira. Extremamente Medieval, mas resolvi.

 

Apaguei aquelas Data Control inuteis que não sabem contar, e passei a usar Recordsets.

 

Criei uma tabela temporária, ai toda consulta que eu faço eu jogo na tabela temporária, ai depois de cadastrado na tabela temporária, eu uso o seguinte codigo contabilizar os cadastros por regiao:

While Not rsTemp.EOF	If rsTemp!t_datar <= CDate(Format(txtdataf.Text, "dd/mm/yyyy")) And rsTemp!t_datar >= CDate(Format(txtdatai.Text, "dd/mm/yyyy")) And rsTemp!t_sup = "Anderson" Then		Ta(1) = Ta(1) + 1	ElseIf rsTemp!t_datar <= CDate(Format(txtdataf.Text, "dd/mm/yyyy")) And rsTemp!t_datar >= CDate(Format(txtdatai.Text, "dd/mm/yyyy")) And rsTemp!t_sup = "Marco Aurélio" Then		Ta(2) = Ta(2) + 1	ElseIf rsTemp!t_datar <= CDate(Format(txtdataf.Text, "dd/mm/yyyy")) And rsTemp!t_datar >= CDate(Format(txtdatai.Text, "dd/mm/yyyy")) And rsTemp!t_sup = "João Nabarro" Then		Ta(3) = Ta(3) + 1	ElseIf rsTemp!t_datar <= CDate(Format(txtdataf.Text, "dd/mm/yyyy")) And rsTemp!t_datar >= CDate(Format(txtdatai.Text, "dd/mm/yyyy")) And rsTemp!t_sup = "Pablo" Then		Ta(4) = Ta(4) + 1	End If	rsTemp.MoveNextWend

Funfo bunito http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Vlw a força ai, vo coloca uma dedicatória ao forum no projeto.

Agora só vo ver a dica que o Eriva deu de como eliminar os objetos excel, e está acabado o projetinho.

 

Vo sintetizar meu programa aqui.

 

Desenvolvi o prog. para gerar alguns graficos comparativos baseados em cadastros e perfis que apontam quem e porque a empresa está falhando, os resultados do programa ( não terminado ) já levantou os indices de lucro da empresa, e baixou nossos indices de erros.

Agora eu to finalizando ele, para implantarmos na empresa em são paulo. A empresa é super conhecida, eu não vo divulgar o nome agora ( se é que já não divulguei nos tópicos acima). Mas assim que estiver implantado definitivamente eu divulgo ae.

 

Mas Vlw a força ae.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, o problema é que dependendo da quantidade de registros, a maneira que você colocou acima pode demorar mais do que se fosse por SQL. Antigamente eu também fazia tudo desta forma "medieval" e achava uma beleza, mas depois que vi que utilizar uma instrução SQL é bem mais simples e muito mais rápido, eu parei de fazer isso.Dependendo do caso, é claro, pode ser que não haja uma perda de performance, mas achei interessante avisar pois talvez você tenha uma idéia de quão grande o banco de dados vai ficar e de quão demorado o processo acima pode se tornar.Abraços,Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, tá tranquilo. os dados são poucos, os contadores somados todos, vão chegar no maximo a 150 - 200.Ai por isso acho que não haverá problemas.Vlw

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.