Sorry for the late response. I solved it like this with the help from you guys and some googleing. Not the cleanest code but it works. Thanks!!
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