经过广泛的搜索,我无法找到任何我能理解的信息。有很多例子,但这些都是针对access 2003的,在access 2010中不起作用。
我需要运行一个 vba 代码,将查询结果 (QryTotalSale) 导出到 excel 2010,并自动创建数据条形图并在正在运行的数据库上显示该数据。
如果有人能给我一些建议,或者甚至是 2010 年有效资源的链接,我将不胜感激。
到目前为止,我可以打开 Excel,并显示相关查询的结果。
为了让它变得更困难,我真的需要查询来打开一个特定的 Excel 文件,该文件将位于桌面上的一个文件夹中,每次按下按钮运行 VBA 时,都应该将一个新页面添加到 Excel 中工作簿和新图表将被显示,并保存到电子表格中,以便稍后可以查看整个 Excel 文件。
我有以下代码,但它不起作用。关于范围的部分可以在 Excel 中使用,但是 access 似乎无法识别范围(这并没有真正让我感到惊讶,因为据我所知,它并不真正适用于范围。)
我的第二个想法是运行前两个 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 代码类型,但无法让它工作。一半的选项似乎不再被 Access 识别...
我还有很长的路要走,非常感谢任何帮助。
谢谢
山姆
最佳答案
这里有一些注释。我使用了后期绑定(bind),因此您不需要设置对 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
关于ms-access - 通过vba Access excel 2010的查询以创建图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974250/