2017-04-05 61 views
0

我想我在Word 2013中遇到了VBA中的一個錯誤,我想找到解決方法。在以下示例中,有一個按鈕用於創建圖形,還有一個按鈕用於向其添加數據。該代碼工作正常,直到一個圖形文件被保存,然後再次加載。然後,CommandButton2_Click()給出錯誤:「對象chartdata的方法工作簿失敗」。對象chartdata的VBA(Word)方法工作簿失敗

Private Sub CommandButton1_Click() 
    Dim chartWorksheet As Excel.Worksheet 
    Dim salesChart As Word.Chart 
    Set salesChart = ActiveDocument.Shapes.AddChart.Chart 
End Sub 

Private Sub CommandButton2_Click() 
    For Each objShape In ActiveDocument.Shapes 
     If objShape.HasChart Then 
      With objShape.Chart.ChartData.Workbook.WorkSheets(1) 
       .ListObjects("Table1").Resize .Range("A1:B10") 
       For i = 1 To 10 
        .Cells(i, 1).FormulaR1C1 = CStr(i) 
        .Cells(i, 2).FormulaR1C1 = CStr(10 * i) 
       Next 
      End With 
     End If 
    Next 
End Sub 

的代碼是基於Microsoft's own example,我已經盡力考慮到從堆棧溢出的一些解決方案,但他們不解決問題。我希望任何人都可以幫忙!

回答

0

錯誤不是一個錯誤。 ChartData必須在使用之前激活。否則,壞事發生。

Private Sub CommandButton1_Click() 
    Dim chartWorksheet As Excel.Worksheet 
    Dim salesChart As Word.Chart 
    Set salesChart = ActiveDocument.Shapes.AddChart.Chart 


    End Sub 

    Private Sub CommandButton2_Click() 
     For Each objShape In ActiveDocument.Shapes 
      If objShape.HasChart Then 
'----------------------------------------- the bugfix ---------------------- 
       objShape.Chart.ChartData.Activate 
'--------------------------------------------------------------------------- 
       With objShape.Chart.ChartData.Workbook.WorkSheets(1) 
        .ListObjects("Table1").Resize .Range("A1:B10") 
        For i = 1 To 10 
         .Cells(i, 1).FormulaR1C1 = CStr(i) 
         .Cells(i, 2).FormulaR1C1 = CStr(10 * i) 
        Next 
       End With 
      End If 
     Next 
    End Sub 

希望它可以幫助別人!

相關問題