经过广泛搜索后,我无法找到任何可以理解的信息。有很多例子,但这些都是访问权限2003,这些在访问2010中不起作用。
我需要运行一个vba代码,将查询结果(QryTotalSale)导出到excel 2010,并自动创建数据条形图,并在正在运行的数据库上显示。
如果有人能给我一些建议,那么我会非常感激,甚至可以链接到2010年有效的有效资源。
到目前为止,我可以打开excel,并显示相关查询的结果。
为了让它变得更加困难我真的需要查询来打开一个特定的excel文件,该文件将位于桌面上的文件夹中,每次按下按钮运行VBA时,都应该在excel中添加一个新页面工作簿,并显示新图表,并保存到电子表格中,以便以后可以查看整个Excel文件。
我有以下代码,但它不起作用。关于范围的位可以在excel中工作,但是访问似乎并不能识别范围(这并不会让我感到惊讶,因为根据我的知识它并不真正适用于范围。)
我的第二个想法是让前两个doCmd运行,然后强制下一个位在excel文件中自动运行。
Private Sub SalesImage_Click()
DoCmd.OpenQuery "QryTotalSale"
DoCmd.RunCommand acCmdOutputToExcel
Dim myRange as range
Set myRange = B2 * C30
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=myRange, _
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet
End Sub
我为2003版本的access和excel找到了一个adodb代码类型的东西,但无法让它工作。一半的选项似乎不再被访问识别......
我还有很长的路要走,非常感谢任何帮助。
由于
萨姆
答案 0 :(得分:4)
以下是一些注意事项。我使用了后期绑定,因此您不需要设置对Excel库的引用,但是,我已经包含了类型的注释。
Dim xl As Object ''Excel.Application
Dim wb As Object ''Excel.Workbook
Dim ws As Object ''Excel.Worksheet
Dim ch As Object ''Excel.Chart
Dim myRange As Object
Set xl = CreateObject("Excel.Application")
sExcelWB = "z:\docs\testchart.xls"
''This will overwrite any previous run of this query to this workbook
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Query1", _
sExcelWB, True
Set wb = xl.Workbooks.Open(sExcelWB)
''Sheets are named with the Access query name
Set ws = wb.Sheets("Query1")
Set ch = xl.Charts.Add
ch.ChartType = xlColumnClustered
xl.Visible = True
xl.UserControl = True
''Still not saved