EXPORTAR DADOS DE UM BANCO PARA EXCEL

USUARIO.EXCLUIDOS 25/11/2006 16:15:29
#186247
Olá, meu programa funciona da seguinte forma, faço uma pesquisa por filtros e o resultado vai para uma MSflaxgrid, após esse momento eu queria ou exportar direto os dados da grade para o exel ou gravar os dados numa tabela e depois disso exportar os dados dela para o exel, gostaria de saber qual a foram mais simples de fazer isso e principalmente como fazer, tentei usar um exemplo do site porém nao deu certo, Por favor me ajudem preciso terminar este programa o mais rápido possível.

OBS: Meu banco é sql2000.

Muito Obrigada
USUARIO.EXCLUIDOS 26/11/2006 20:22:01
#186305
Você encontrará tudo o que precisa aqui: http://www.macoratti.net/excel_vb.htm

De uma forma clara e simples.
LEOBEVI 26/11/2006 22:33:41
#186316
Resposta escolhida
Bruna, a pouco tempo precisei fazer uma exportação de dados para excel e me bati um pouco, peguei dicas do código em vários lugares,mas ae vai uma parte do código que tenho.

Esero que te ajude


Private Sub sub_GeraArquivo()
On Error GoTo erro
Dim cmdComissao As ADODB.Command
Set cmdComissao = New ADODB.Command
Dim SQL As String
Dim VAR_Total As Currency
VAR_Total = 0
Dim I As Long
frm_Aviso.Show

DoEvents
'GERANDO ARQUIVO P/ EXCEL ******************************************
Dim exclApp As Object
Dim exclBook As Object
Dim exclSheet As Object

'Carregar o Excel:
Set exclApp = CreateObject("Excel.Application")
'Crie um WorkBook:
Set exclBook = exclApp.Workbooks.Add

'Definindo a planilha ativa
Set exclSheet = exclApp.ActiveWorkbook.ActiveSheet
'*********************************************************************
With exclSheet
.PageSetup.Zoom = 75
.Columns("A:A").ColumnWidth = 30
.Columns("B:C").ColumnWidth = 10
.Columns("D").ColumnWidth = 10
.Columns("E").ColumnWidth = 30
.Columns("F").ColumnWidth = 10
.Columns("G").ColumnWidth = 10
.Columns("H").ColumnWidth = 10
.Columns("I").ColumnWidth = 10
.Columns("J").ColumnWidth = 10
.Range("A1:J13").Font.Bold = True 'Negrito nas células
.Columns("B:D").HorizontalAlignment = xlCenter
.Columns("F:J").HorizontalAlignment = xlCenter
.Cells(1, 1).Value = "RELATÓ“RIO DE COMISSÕES PENDENTES "
.Cells(1, 8).Value = Format(Date, "DD/MM/YYYY")

.Range("A1:C1").MergeCells = True 'Mesclando as células
.Range("C2:D2").MergeCells = True 'Mesclando as células
.Cells(3, 1).Value = "CORRETOR"
.Cells(3, 2).Value = "APÓ“LICE"
.Cells(3, 3).Value = "ENDOSSO"
.Cells(3, 4).Value = "PARCELA"
.Cells(3, 5).Value = "SEGURADO"
.Cells(3, 6).Value = "DATA"
.Cells(3, 7).Value = "VIGÃÅ NCIA"
.Cells(3, 8).Value = "PRÃÅ MIO"
.Cells(3, 9).Value = "COM. %"
.Cells(3, 10).Value = "%"
.Cells(3, 11).Value = "RAMO"

.Range("A3:K3").Borders.LineStyle = xlContinuous 'Colocando borda na tabela



'Salvar o Arquivo
'.SaveAs "c:    este.xls"
End With

I = 4
'
'
With cmdComissao
SQL = "SELECT * FROM Corretor a LEFT JOIN Plataforma b "
SQL = SQL & " ON (a.cor_Apolice = b.pla_Apolice "
SQL = SQL & " AND a.cor_Endosso =b.Pla_Endosso AND a.cor_Parcela = b.pla_Parcela )"
SQL = SQL & " WHERE IsNull(b.Pla_Apolice) ORDER BY Cor_Nome,Cor_Parcela"
.ActiveConnection = cnComissao
.CommandText = SQL
Set rsComissao = .Execute
Do While Not rsComissao.EOF
exclSheet.Cells(I, 1).Value = rsComissao!cor_Nome
exclSheet.Cells(I, 2).Value = rsComissao!cor_Apolice
exclSheet.Cells(I, 3).Value = rsComissao!cor_Endosso
exclSheet.Cells(I, 4).Value = Format(CStr(rsComissao!cor_Parcela), "000")
exclSheet.Cells(I, 5).Value = rsComissao!cor_Segurado
exclSheet.Cells(I, 6).Value = CDate(rsComissao!cor_Data)
exclSheet.Cells(I, 7).Value = CDate(rsComissao!cor_Vigencia)
exclSheet.Cells(I, 8).Value = CCur(rsComissao!cor_Premio)
exclSheet.Cells(I, 9).Value = CCur(rsComissao!cor_ComissaoValor)
exclSheet.Cells(I, 10).Value = rsComissao!cor_Comissao
exclSheet.Cells(I, 11).Value = Format(CStr(rsComissao!cor_Ramo), "000")
exclSheet.Range("A" & I & ":K" & I).Font.Bold = False
I = I + 1
VAR_Total = VAR_Total + rsComissao!cor_ComissaoValor
rsComissao.MoveNext
Loop
End With
exclSheet.Cells(I, 8) = "TOTAL"
exclSheet.Cells(I, 9) = VAR_Total
exclSheet.Range("H" & I & ":I" & I).Font.Bold = True
'exclSheet.Cells(i, 3) = Var_TotalFechadas

exclApp.Visible = True
exclApp.UserControl = True

'Limpe as variáveis de Objeto:
Set exclSheet = Nothing
Set exclBook = Nothing
Set exclApp = Nothing


erro:
If Err.Number <> 0 Then
MsgBox "Ocorreu um erro, favor contactar o administrador do sistema " & vbCrLf _
& "erro: " & Err.Number & " " & Err.Description, vbExclamation, "AVISO"
End If

End Sub

USUARIO.EXCLUIDOS 27/11/2006 14:54:50
#186501
Olá LEOBEVI, entendi seu código, mas eu preciso duma forma depois de ter feito minha pesquisa entende, no seu ele pega os dados dos campos e exporta, eu preciso q eu meu só exporte os dados da pesquisa e nao de todos os campos, vc sabe como me ajudar??? mas mesmo assim muito obrigada pela ajuda vou tentar ir alterando as coisas aqui pra ver se dão certo.
!!!


Obrigada,
Bruna
USUARIO.EXCLUIDOS 27/11/2006 15:24:06
#186510
Oi Bruna,

A parte complexa é a abertura da planilha (muito bem explicada pelo LEO).

Uma idéia seria você adaptar o SQL para as informações que você deseja.

Mas, ao que parece, você quer aproveitar a FlexGrid montada. Para isso, você pode entrar com a seguinte função:

Public Function ExportaFlex(xQueFlex as  MSFlexGrid)
Dim xCol, xRow
Dim xLetra
Dim xRange

xLetra="ABCDEFG" 'ou EFGHIJK ou JKLMNOP <=== a sequencia de colunas da planilha que você vai usar

For xRow = 1 to xQueFlex.Rows-1
xQueFelx.Row=xRow
For xCol= 1 to xQueFlex.Cols-1
xRange=MID$(xLetra,xCol,1) & xCol
xQueFlex.Col=xCol
Range(xRange).Value=xQueFlex.Text
Next
Next
End Function

Essa função casa com a solução proposta pelo LEO - inclusive, mantém intacta a parte do Cabeçalho. Mas, se você quiser inclusive aproveitar o cabeçalho da FlexGrid, basta iniciar na linha 0 em lugar da 1.

é baba!
USUARIO.EXCLUIDOS 27/11/2006 17:24:55
#186557
Olá Anibal, to meio perdida rsrs, coloquei esta programação em um módulo, e adaptei a programação do LEO, mas continua sem funcionar, ele não pegaos dados da minha pesquisa.[S61] to perdida!!!!

Mas Obrigada mesmo assim
USUARIO.EXCLUIDOS 27/11/2006 18:34:16
#186597
Se você anexar seu código [s25] a gente pode tentar ajudar mais[S95]

Se não, quem sabe [S68]

[S41]
USUARIO.EXCLUIDOS 27/11/2006 21:16:04
#186628
Entao anexei 2 arquivos o botão 1 e o botão 2, por enquanto estou testando estas duas formas, mas ainda não funciona da forma correta, o "botao 1" abre as célular apenas da célula 'A' à  célular 'Z', porém tenho muitos mais campos que vão até a célula 'EE'

O "botão 2" ele pega os campos da minha tabela aleatóriamente, e faz a mesma coisa que o outro...só adiciona campos na célula 'A' até a 'Z'.

Agradeço quem puder me ajudar!!! [S99]

obs: Ambos exemplos eu achei no site
LEOBEVI 27/11/2006 21:56:53
#186633
Bruna,
Não consigo acessar o link.
LEOBEVI 27/11/2006 22:25:23
#186634
Bruna,
não sei se entendi, mas você que pegar os valores das células(linha,coluna) da Grid e passar para uma planilha do excel.

Veja se esta rotina pode ajudar.

att.
USUARIO.EXCLUIDOS 28/11/2006 11:32:59
#186730
Olá LEO, anexei o arquivo denovo, então nossa seu arquivo me ajudou muito, você verá que em meu arquivo tem uma programação parecida, porém ele estava dando erro, o seu não, pelo contrário funciona muito bem, vc num sabe como eu estou agradecida ehehehe [S27]

Mas assim, minha pesquisa acha inúmeros registros, na maiorira das vezes vai achar mais de 1000 dados, tem alguma forma da exportação pro excel ser mais rápida, num sei se isso existe, mas é que atualmente ela demora cerca de quase 5 minutos pra exportar todos os dados da minha pesquisa.(e olha que estou usando um bom micro, porém os micros que o sistema será utilizado será com a configuração bem mais simples)

Eestou pensando na praticidade do sistema, mas caso não tenha tudo bem!!!
Só gostaria de saber se existe está possibilidade.
Tópico encerrado , respostas não são mais permitidas