访问查询到excel 2010通过vba创建图形

问题描述:

经过广泛的搜索后,我一直无法找到任何我能理解的信息。有许多例子,但这些都是为访问2003年,并在访问2010年这些不起作用。访问查询到excel 2010通过vba创建图形

我需要运行一个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 

我发现了一个ADODB代码类型的事情进行访问的2003版和excel,却无法得到这个工作。一半的选项似乎不再被认可访问...

我还有很长的路要走,并会真正感谢任何帮助。

感谢

山姆

这里有一些注意事项。我使用了晚期绑定,因此您不需要设置对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 
+0

+1为简单的代码。 – 2012-04-02 10:50:45

+0

谢谢。这是一个很好的开始。 两件事我不能得到.... 你在哪里使用“查询1”我把这个改名为我想使用的查询,但访问找不到它?我可能错过了一些非常明显的东西。 是否可以在工作表的命名中使用日期函数? – 2012-04-02 11:00:55

+1

如果Access表示无法找到您的查询,请检查您的拼写。最简单的方法是在创建后使用当前日期重命名工作表。不要使用 - 或/,调用工作表,比如说“2012Apr21” – Fionnuala 2012-04-02 11:04:01