Извините за поздний ответ. Я решил это с помощью вас, ребята, и немного погуглил. Не самый чистый код, но он работает. Спасибо !!
Sub ReplaceSheetName(strNewSheetName As String)
Dim srs As Series
Dim strSourceDataSheetName As String
Dim strTempFormula As String
strNewSheetName = "'" & strNewSheetName & "'"
For Each srs In ActiveSheet.ChartObjects(1).Chart.SeriesCollection
If InStr(1, srs.Name, "Budget", vbTextCompare) > 0 Then
Else
strSourceDataSheetName = GetSheetNameFromChartSourceData(srs.Formula, "(", "!")
strTempFormula = Replace(srs.Formula, strSourceDataSheetName, strNewSheetName, vbTextCompare)
srs.Formula = WorksheetFunction.Substitute(srs.Formula, srs.Formula, strTempFormula)
End If
Next
ActiveSheet.ChartObjects(1).Chart.Refresh
End Sub
Private Function GetSheetNameFromChartSourceData(strSourceDataFormula As String, strStartDelimiter As String, strEndDelimiter As String) As String
Dim firstDelPos As Integer
Dim secondDelPos As Integer
Dim stringBwDels As String
On Error GoTo ErrorHandler
firstDelPos = InStr(strSourceDataFormula, strStartDelimiter) 'Position of start delimiter
'If end delimiter is the same as the start delimiter they will be the same, hence no string is extracted.
If strStartDelimiter = strEndDelimiter Then
secondDelPos = InStrRev(strSourceDataFormula, strEndDelimiter) 'Position of end delimiter
Else
secondDelPos = InStr(strSourceDataFormula, strEndDelimiter) 'Position of end delimiter
End If
If firstDelPos = 0 Or secondDelPos = 0 Then
stringBwDels = strSourceDataFormula
Else
stringBwDels = Mid(strSourceDataFormula, firstDelPos + 1, secondDelPos - firstDelPos - 1) 'Extract the string between two delimiters
End If
GetSheetNameFromChartSourceData = stringBwDels
Exit Function
ErrorHandler:
MsgBox "An error occurred while extracting substring between the given separators " & """" & strStartDelimiter & """" & " and " & """" & strEndDelimiter & """" & ". Error message: " & Err.Description, vbOKOnly, "Error"
Resume Next
End Function