【问题标题】:Access query to excel 2010 to create a graph via vba访问查询到 excel 2010 以通过 vba 创建图形
【发布时间】:2012-04-02 09:53:14
【问题描述】:

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

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

谢谢

山姆

【问题讨论】:

    标签: ms-access excel vba


    【解决方案1】:

    这里有一些注释。我使用了后期绑定,所以你不需要设置对 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
    

    【讨论】:

    • 谢谢。这是一个很好的开始。两件事我无法得到....您在哪里使用过“query1”我将其重命名为我想要使用的查询,但访问找不到它?我可能错过了一些非常明显的东西。在工作表的命名中是否可以使用日期函数?
    • 如果 Access 说找不到您的查询,请检查您的拼写。最简单的方法是在创建工作表后用当前日期重命名工作表。不要使用 - 或 /,调用工作表,例如 2012Apr21
    猜你喜欢
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多