首页 > 解决方案 > 尝试从不同工作簿的数据创建图表时出现运行时错误 9

问题描述

Private Sub CommandButton1_Click()

Dim wkb As Excel.Workbook
Dim wks As Excel.Worksheet
Set wkb = Workbooks("asd.xlsx")
Set wks = wkb.Worksheets("Sheet1")

Sheets("Sheet1").Shapes.AddChart.Chart.SetSourceData Source:=wks.Range("A1:B98")

End Sub

这是我编写的代码,用于在我当前的工作簿中创建一个简单的图表,其中包含来自同一文件夹中另一个工作簿的数据。即使相对路径相同,程序也会返回运行时错误 9,这表示我正在引用一个不存在的文件。我什至尝试将绝对路径放入wkb变量中,但在那里也不起作用。

对此有什么帮助吗?TIA。

标签: excelvbascripting

解决方案


因此,我遇到此问题的主要原因是 Excel 需要在绘制图形时打开其他工作簿以及在其中将图形绘制为活动的工作簿。所以我修改了代码以打开其他工作簿,使我在其中绘制图表的工作簿处于活动状态,绘制图表然后关闭。

target_workbook.xlsm是必须在其中绘制图形的工作簿,并且asd.xlsx是包含数据的工作簿。

Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range

Workbooks.Open "C:\full_path_to_file\asd.xlsx"
Workbooks("target_workbook.xlsm").Activate

Set wb = Workbooks("asd.xlsx")
Set ws = wb.Worksheets("Sheet ABC")
Set rng = ws.Range("F3:F98,H3:H98")

MsgBox ("Test-1!")
Set chrt = Sheets("Sheet1").ChartObjects.Add(Left:=5, Width:=600, Top:=7, Height:=350)
chrt.Chart.SetSourceData Source:=rng
chrt.Chart.ChartType = xlLine
MsgBox ("test-2")

Workbooks("asd").Close SaveChanges:=False
End Sub

推荐阅读