Сделал диаграмму в Excel - источник данных таблица. В Excel модуль подключения к базе Access, кторый через запрос строит таблицу. Проблема - диаграмма создана на задданном диапазоне ячеек таблицы, а запрос возвращает разное количество строк. Как программно переопределить диапазон даннных диаграммы в excel? Деталь ее нужно именно в excel - таково условие.
Private Sub Workbook_Open() Dim strPathBaze, strCurPath, strSql As String Dim rMAX, i As Long Dim strRmax As String strSql = "SELECT [СПРАВОЧНИК типы параметров].id1, [СПРАВОЧНИК типы параметров].Name AS Операция, Sum([СПРАВОЧНИК типы параметров].Value) AS Норма " & _ "FROM ([СПРАВОЧНИК типы параметров] INNER JOIN [СПРАВОЧНИК формулы трудозатрат] ON [СПРАВОЧНИК типы параметров].id = [СПРАВОЧНИК формулы трудозатрат].Value1) INNER JOIN [Заказы данные] ON [СПРАВОЧНИК формулы трудозатрат].id = [Заказы данные].idТипНормы " & _ "GROUP BY [СПРАВОЧНИК типы параметров].id1, [СПРАВОЧНИК типы параметров].Name " & _ "HAVING ((([СПРАВОЧНИК типы параметров].id1)=1)) " & _ "ORDER BY Sum([СПРАВОЧНИК типы параметров].Value)" strCurPath = Replace(Me.Path, "Excel", "") strCurPath = Me.Path strPathBaze = "ODBC;DSN=База данных MS Access;DBQ=" & strCurPath & "\Сервер.mdb;;DriverId=25" Sheets("Запрос").Select Columns("A:C").Select Selection.ClearContents With ActiveSheet.QueryTables.Add(Connection:=strPathBaze, Destination:=Range("A1"), Sql:=strSql) .Refresh BackgroundQuery:=False End With For i = 0 To ActiveWorkbook.Names.Count - 1 ActiveWorkbook.Names(1).Delete Next i Range("A1").Select Sheets("Диаграмма").Select ActiveWorkbook.Save End Sub
Есть 3 варианта.
1. Перед построением диаграммы гадо открыть запрос и прочитать число строк, далее открыть объект диаграму и найти в ней параметр, отвечающий за хранение строк (нужно использовать F2 и отладчик) . Досточно трудоемкий процесс.
2. Попытатья построить диаграмму, не на использовании строк и ячеек (A:C), а использовать маркированную область. Тогда не будет привязки к ячейкам
3. Все же, как главный инструмент использовать интерфейс на Access, а из Excel сделать шаблон. Далее вызвать форму Access с настройками, потом открыть Excel шаблон и изменить в нем параметры. Плюсы - файл не привязан к базе данных, т.е. его можно перемещать, да и управлять из Access Excel легче, чем наоборот.