@CindyMeister:嘿,這是從不同的帳戶原始的海報。感謝您的回答!但是我已經嘗試了你的方法,它似乎不適用於我的辦公室安裝,也不適用於我嘗試過的任何其他方法(我在自己的win10電腦上使用Office 2013,我嘗試在機器上運行代碼在win7/win10上運行Office 2010/2013)。每當您嘗試在同一個圖表上運行您提供的代碼多次時,就會出現問題。然後會發生以下運行時錯誤(可能不是德語的完全正確翻譯):對象'chartdata'的方法'工作簿'失敗,運行時錯誤-2147467259(80004005)。正如我所說,這個問題只出現在第一次運行後。所以你的代碼運行,但只有一次!這就是說,我發現了一個似乎很容易的解決方案,它可以在我的機器上運行,甚至運行速度更快。那就是:
Dim strA As String: strA = "Search"
Dim strb As String: strb = "Replace"
Dim cht As Word.Chart
Dim doc As Word.Document
Dim ils As Word.InlineShape
Set doc = ActiveDocument
Set ils = doc.InlineShapes(1)
Set cht = ils.Chart
If cht.ChartData.Workbook.Sheets(1).Cells(1, 2) = strA Then
cht.ChartData.Workbook.Sheets(1).Cells.Replace What:=strA, Replacement:=strb, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
Else
cht.ChartData.Workbook.Sheets(1).Cells.Replace What:=strb, Replacement:=strA, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
End If
cht.ChartData.Workbook.Close
cht.Refresh
Set cht = Nothing
Set ils = Nothing
所以只要你不分配chartdata.workbook到Excel.Workbook變量,而是使用chartdata.workbook直接你的罰款。這在所有運行Office 2013且win10或win7的多臺機器上都經過測試。它不適用於Office 2010或更早版本。我沒有機會在運行Office 2016的機器上測試它,但不幸的是。
你可以做這件事嗎?
你甚至試圖手動做到這一點?試着錄製一個宏,看看你得到了什麼? –
@ScottHoltzman不要問「爲什麼?」,而是問「爲什麼不?」可能有更多的圖表比使用宏更實用。 – mbomb007
嗨斯科特,在這種情況下宏錄製不好,因爲它不包括你在數據表窗口(或任何人要求這樣做)中所做的動作。這是因爲編輯數據發生在宏記錄器不包括的Excel應用程序中。 –