Bom dia. * Uso o Access 2003
Após buscas achei a rotina abaixo do colega JPaulo para exportação de uma Consulta a uma planilha Excel, mas aconteceu o seguinte:
1) Abre a Planilha 'DadosRelatorio.xls' em branco
2) Apresenta a mensagem de erro 3078 - "O mecanismo de banco de dados microsoft jet não encontrou a tabela de entrada ou consulta '12/06/2018'. Certifique-se de que ela existe e de que seu nome está digitado corretamente."
3) Ao Depurar aponta para a linha (em vermelho): Set Rst1 = CurrentDb.OpenRecordset(strSQL1, dbOpenDynaset)
Já estão marcadas as Referencias:
Microsoft Office 11.0 Object Library
Microsoft Access 11.0 Object Libray
Microsoft Excel 11.0 Object Library
Onde estaria o erro?
Também gostaria de incluir nessa rotina o seguinte:
1) Após o último registro acrescentar uma linha em branco.
2) Após essa linha em branco: Uma contagem total de linhas da 1ª coluna (A) após o último registro, com o texto: "Total de Evidências: " + Total de linhas
3) Na mesma linha do item acima: Um somatório (campo numérico com 2 casas decimais) da 5ª coluna (E), com o texto: "Total em GB" + Soma
Public Sub CriaExcel()
'By JPaulo Maximo Access
Dim strLivro As String, xls As Object
Dim db As DAO.Database
Dim rst, Rst1 As DAO.Recordset
Dim strSQL, strSQL1 As String
Dim x As String
Dim y As String
Dim z As String
Set db = CurrentDb
Set xls = CreateObject("Excel.Application")
strLivro = "C:\LAF\DadosRelatorio.xls" 'MODIFICADO
xls.Workbooks.Open (strLivro)
xls.Visible = True
strSQL = "SELECT * FROM C00_DadosRelatorio;" 'MODIFICADO
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
With rst
.MoveFirst
Do Until .EOF
z = rst.Fields.Item(1) 'nome da consulta na tabela
x = rst.Fields.Item(2) 'nome do sheet na tabela
y = rst.Fields.Item(3) 'nome da celula na tabela
strSQL1 = z
Set Rst1 = CurrentDb.OpenRecordset(strSQL1, dbOpenDynaset)
xls.Worksheets(x).Activate
xls.ActiveSheet.Range(y).Select
Dim i As Integer
Dim iNumCols As Integer
iNumCols = Rst1.Fields.Count
For i = 1 To iNumCols
xls.Cells(1, i).value = Rst1.Fields(i - 1).Name
xls.Cells(1, i).Font.Bold = True 'cabeçalhos em negrito - Inserido pelo usuário Daluque
xls.Cells(1, i).EntireColumn.AutoFit 'Dimensionamento das colunas - Inserido pelo usuário Daluque
Next
xls.ActiveCell.CopyFromRecordset Rst1
rst.MoveNext
Loop
End With
rst.Close
Rst1.Close
xls.ActiveWorkbook.Save
xls.Application.Quit
Set xls = Nothing
End Sub
Após buscas achei a rotina abaixo do colega JPaulo para exportação de uma Consulta a uma planilha Excel, mas aconteceu o seguinte:
1) Abre a Planilha 'DadosRelatorio.xls' em branco
2) Apresenta a mensagem de erro 3078 - "O mecanismo de banco de dados microsoft jet não encontrou a tabela de entrada ou consulta '12/06/2018'. Certifique-se de que ela existe e de que seu nome está digitado corretamente."
3) Ao Depurar aponta para a linha (em vermelho): Set Rst1 = CurrentDb.OpenRecordset(strSQL1, dbOpenDynaset)
Já estão marcadas as Referencias:
Microsoft Office 11.0 Object Library
Microsoft Access 11.0 Object Libray
Microsoft Excel 11.0 Object Library
Onde estaria o erro?
Também gostaria de incluir nessa rotina o seguinte:
1) Após o último registro acrescentar uma linha em branco.
2) Após essa linha em branco: Uma contagem total de linhas da 1ª coluna (A) após o último registro, com o texto: "Total de Evidências: " + Total de linhas
3) Na mesma linha do item acima: Um somatório (campo numérico com 2 casas decimais) da 5ª coluna (E), com o texto: "Total em GB" + Soma
Public Sub CriaExcel()
'By JPaulo Maximo Access
Dim strLivro As String, xls As Object
Dim db As DAO.Database
Dim rst, Rst1 As DAO.Recordset
Dim strSQL, strSQL1 As String
Dim x As String
Dim y As String
Dim z As String
Set db = CurrentDb
Set xls = CreateObject("Excel.Application")
strLivro = "C:\LAF\DadosRelatorio.xls" 'MODIFICADO
xls.Workbooks.Open (strLivro)
xls.Visible = True
strSQL = "SELECT * FROM C00_DadosRelatorio;" 'MODIFICADO
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
With rst
.MoveFirst
Do Until .EOF
z = rst.Fields.Item(1) 'nome da consulta na tabela
x = rst.Fields.Item(2) 'nome do sheet na tabela
y = rst.Fields.Item(3) 'nome da celula na tabela
strSQL1 = z
Set Rst1 = CurrentDb.OpenRecordset(strSQL1, dbOpenDynaset)
xls.Worksheets(x).Activate
xls.ActiveSheet.Range(y).Select
Dim i As Integer
Dim iNumCols As Integer
iNumCols = Rst1.Fields.Count
For i = 1 To iNumCols
xls.Cells(1, i).value = Rst1.Fields(i - 1).Name
xls.Cells(1, i).Font.Bold = True 'cabeçalhos em negrito - Inserido pelo usuário Daluque
xls.Cells(1, i).EntireColumn.AutoFit 'Dimensionamento das colunas - Inserido pelo usuário Daluque
Next
xls.ActiveCell.CopyFromRecordset Rst1
rst.MoveNext
Loop
End With
rst.Close
Rst1.Close
xls.ActiveWorkbook.Save
xls.Application.Quit
Set xls = Nothing
End Sub