Ошибка при обновлении объекта диаграммы с Access 2007 до Access 2013 или более поздней версии

#sql #ms-access #charts

#sql #ms-access #Диаграммы

Вопрос:

У меня есть приложение Access 2010, в котором я использую объект диаграммы как:

Диаграмма 2010

Код, который я использую для заполнения этого графика, выглядит следующим образом:

 'getRunningAppObject Function
Dim appObj As String
Dim excelObj As Object
appObj = "Excel.Application"
On Error Resume Next
Set excelObj = GetObject(, appObj)
If Not excelObj Is Nothing Then
    Set getRunningAppObject = excelObj
Else
    Set getRunningAppObject = New Excel.Application
End If
'-------


Set shpGraph = GraphUtil.Object
Set odataSheet = shpGraph.Application.DataSheet
odataSheet.Cells.Clear

Set objxl = getRunningAppObject
Set objWKB = objxl.Workbooks.Add
objWKB.Worksheets().Add.Name = "temp"
Set objsheet = objWKB.Worksheets("temp")

objsheet.Cells(1, 1) = "Week"
objsheet.Cells(2, 1) = "Used"
objsheet.Cells(3, 1) = "Not Used"
objsheet.Cells(4, 1) = "Shortage"

While Not rs.EOF
    objsheet.Cells(1, i) = CStr(rs.Fields!week)
    objsheet.Cells(2, i) = IIf(IsNull(rs.Fields("used").value), 0, rs.Fields("used").value)
    objsheet.Cells(3, i) = IIf(IsNull(rs.Fields("not used").value), 0, rs.Fields("not used").value)
    objsheet.Cells(4, i) = IIf(IsNull(rs.Fields("shortage").value), 0, rs.Fields("shortage").value)
    i = i   1
    rs.MoveNext
Wend

objsheet.Cells.Select
objsheet.Cells.Copy
odataSheet.Cells(1, 1).Paste
objWKB.Application.CutCopyMode = False
objWKB.Close False
  

Я пытаюсь обновить этот объект Graph в более новой версии, поэтому в Access 2013 или 2019, когда я пытался вставить диаграмму из меню дизайна, она добавила диаграмму следующим образом:

Диаграмма 2019

Но когда я пытаюсь заполнить этот график тем же кодом, я получаю ошибку: ошибка времени выполнения ‘438’: объект не поддерживает это свойство или метод в строке Set shpGraph = GraphUtil.Object

Что я делаю не так? Как я могу заполнить объект диаграммы набором записей?

Комментарии:

1. Вы пытаетесь преобразовать график Excel в Access? Данные находятся в Excel? Не вижу кода, который устанавливает набор записей. AFAIK, Access graph должен ссылаться на таблицу или запрос в свойстве RowSource.

2. @June7 Нет, это только код Access VBA, набор записей устанавливается только из другого нерелевантного кода VBA. Просто хотел узнать, как вставить данные в несвязанный фрейм объекта, можем ли мы сделать то же самое и в диаграмме?

3. Этот код работал в более ранних версиях? Это Access VBA манипулирует графиком Excel? Я никогда этого не делал. Также никогда не использовался фрейм несвязанного объекта. Я использую Office / Access 2010, поэтому не знаком с графическим отображением в более поздних версиях, если оно было изменено. Почему изображение выглядит как Access?

4. Потому что это только Access, а не Excel. Это Access VBA, заполняющий несвязанный фрейм объекта, открывая временный файл Excel, заполняя в нем данные из набора записей, затем копируя этот диапазон, а затем вставляя этот диапазон в график обратно.

5. Итак, задействован Excel. Access управляет Excel для настройки данных, затем вы хотите скопировать / вставить диапазон рабочих листов в таблицу Access graph? Вы сказали, что хотите «обновить более новую версию» — этот код работал с Access 2010? Мне придется попробовать. Но, к сожалению, не могу сообщить о проблемах 2013/2019.