EXPORTAR PARA EXCEL
Tenho um DataGrid com dados provenientes dum Ado.
Como é que eu exporto o que está no DataGrid para uma plnilha Excel??
(eu só quero exportar o que está no datagrid e não a tabela toda)
Tks.
Como é que eu exporto o que está no DataGrid para uma plnilha Excel??
(eu só quero exportar o que está no datagrid e não a tabela toda)
Tks.
M_ROGER ocodigo a seguir funciona com o MSHFlexGrid que para vc nãovaifazer diferença nenhuma ja que ambos podem ser ligados ao banco de dados
Private Sub Cmd_Exportar_Click()
Dim Lin As Integer, Col As Integer
Dim Aux As Integer
Dim Excell As Excel.Application
Set Excell = New Excel.Application
With Excell
.Visible = True ' vc pode mudar para false e o vb à ± abre o excell
.Workbooks.Add ' novo arquivo
Aux = 64
For Col = 0 To Grid.Cols - 1
For Lin = 0 To Grid.Rows - 1
.Range(Chr(Aux + 1) & Trim(Str(Lin + 1))).Select 'seleciona celula
.ActiveCell.FormulaR1C1 = Grid.TextMatrix(Lin, Col) 'escreve na celula
Next Lin
Aux = Aux + 1
Next Col
ChDir "C:\Temp" 'diretorio onde vai se salvar o arquivo
.ActiveWorkbook.SaveAs FileName:="C:\Temp\Teste1.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False ' nome do arquivo a ser salvo
End With
Set Excell = Nothing
End Sub
Private Sub Cmd_Exportar_Click()
Dim Lin As Integer, Col As Integer
Dim Aux As Integer
Dim Excell As Excel.Application
Set Excell = New Excel.Application
With Excell
.Visible = True ' vc pode mudar para false e o vb à ± abre o excell
.Workbooks.Add ' novo arquivo
Aux = 64
For Col = 0 To Grid.Cols - 1
For Lin = 0 To Grid.Rows - 1
.Range(Chr(Aux + 1) & Trim(Str(Lin + 1))).Select 'seleciona celula
.ActiveCell.FormulaR1C1 = Grid.TextMatrix(Lin, Col) 'escreve na celula
Next Lin
Aux = Aux + 1
Next Col
ChDir "C:\Temp" 'diretorio onde vai se salvar o arquivo
.ActiveWorkbook.SaveAs FileName:="C:\Temp\Teste1.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False ' nome do arquivo a ser salvo
End With
Set Excell = Nothing
End Sub
Ao gerar o Recordset do grid, coloque a linha
Recordset2Excel rs_fonte_do_grid
e coloque isto num módulo qualquer:
Recordset2Excel rs_fonte_do_grid
e coloque isto num módulo qualquer:
Public Sub Recordset2Excel(rstsource As ADODB.Recordset)
Dim xlsApp As Excel.Application
Dim xlsWBook As Excel.Workbook
Dim xlsWSheet As Excel.Worksheet
Dim i, j As Integer
' Get or Create Excel Object
On Error Resume Next
Set xlsApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Set xlsApp = New Excel.Application
Err.Clear
End If
' Create WorkSheet
Set xlsWBook = xlsApp.Workbooks.Add
Set xlsWSheet = xlsWBook.ActiveSheet
' Export ColumnHeaders
For j = 0 To rstsource.Fields.Count
xlsWSheet.Cells(2, j + 1) = rstsource.Fields(j).name
Next j
' Export Data
rstsource.MoveFirst
For i = 1 To rstsource.RecordCount
For j = 0 To rstsource.Fields.Count
xlsWSheet.Cells(i + 2, j + 1) = rstsource.Fields(j).Value
Next j
rstsource.MoveNext
Next i
rstsource.MoveFirst
' Autofit column headers
For i = 1 To rstsource.Fields.Count
xlsWSheet.Columns(i).AutoFit
Next i
' Move to first cell to unselect
xlsWSheet.Range("A1").Select
' Show Excel
xlsApp.Visible = True
Set xlsApp = Nothing
Set xlsWBook = Nothing
Set xlsWSheet = Nothing
End Sub
Obrigado aos dois.
Estou primeiro a testar a Solução do PAULOHSV
PAULOHSV, testei o seu código e dá-me erro em:
Dim Excell As Excel.Application
Pode-me dár uma ajuda ???
Tks
MS
Estou primeiro a testar a Solução do PAULOHSV
PAULOHSV, testei o seu código e dá-me erro em:
Dim Excell As Excel.Application
Pode-me dár uma ajuda ???
Tks
MS
Vc fez referencia ao EXCEL em PROJECT /REFERENCES?
Tem razão GERMANIR:
Mas agora dá erro nesta linha:
For Col = 0 To Grid.Cols - 1
pode-me ajudar ??
Tks.
MS
Mas agora dá erro nesta linha:
For Col = 0 To Grid.Cols - 1
pode-me ajudar ??
Tks.
MS
Tente
For Col = 1 To Grid.Cols - 1
For Col = 1 To Grid.Cols - 1
outra coisa a propriedade NAME do seu datagrid é 'Grid' ? o nome do datagrid é 'Grid' Correto?
GERMANAIR:
Tinhas razão, era o nome da Grid.
Agora dá erro em:
DataGrid1.TextMatrix
O que será ??
Tks.
MS
Tinhas razão, era o nome da Grid.
Agora dá erro em:
DataGrid1.TextMatrix
O que será ??
Tks.
MS
Mas eu disse que este exemplo funciona com o MSHFlexGrid não com o DataGrid, va em componentes procure por MicrosoftHierarchicalFlexGrid ( não me lembro a escrita correta mas é algo paracido como este nome) e adicione ele ao formulario no lugar do Data Grid.
PAULOHSV:
Você tinha razão Assim já funciona.
Só que depois de fechar o programa , se eu tentar abrir o teste1.xls, diz-me que está a ser utilizado !!!!!
Inclusivé, se tentar gravar por cima, dá erro.
Porque será ??
Tks.
Você tinha razão Assim já funciona.
Só que depois de fechar o programa , se eu tentar abrir o teste1.xls, diz-me que está a ser utilizado !!!!!
Inclusivé, se tentar gravar por cima, dá erro.
Porque será ??
Tks.
Tópico encerrado , respostas não são mais permitidas