Доступ к запросу в Excel 2010 для создания графика через VBA - PullRequest
3 голосов
/ 02 апреля 2012

После обширного поиска я не смог найти никакой информации по этому вопросу, которую мог бы понять. Есть множество примеров, но все они для 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

Я нашел что-то типа кода adodb для версий доступа и Excel 2003 года, но не смог заставить это работать. кажется, что половина опций больше не распознается при доступе ...

Я далеко и буду очень признателен за любую помощь.

Спасибо

Sam

1 Ответ

4 голосов
/ 02 апреля 2012

Вот несколько заметок.Я использовал позднее связывание, поэтому вам не нужно указывать ссылку на библиотеку 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
...