访问excel 2010查询以通过vba创建图表

时间:2012-04-02 09:53:14

标签: excel ms-access excel-vba access-vba vba

经过广泛搜索后,我无法找到任何可以理解的信息。有很多例子,但这些都是访问权限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代码类型的东西,但无法让它工作。一半的选项似乎不再被访问识别......

我还有很长的路要走,非常感谢任何帮助。

由于

萨姆

1 个答案:

答案 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