Ich muss in der Lage sein, das Arbeitsblatt zu identifizieren, aus dem ein Excel-Diagramm (auf einem Arbeitsblatt) seine Daten bezieht. Ich brauche nur das Datenblatt, auf das die Serie 1 verweist. Ich habe angefangen zu versuchen, den Blattnamen von .SeriesCollection (1) .Formula zu extrahieren, aber es wird wirklich komplex. hier ist, was ich so weit gekommen: (! zB Sh'e e $ ,, t 3 $)Geben Sie das Arbeitsblatt zurück, das ein Excel-Diagramm mit VBA referenziert
Sub GetChartDataSheet()
Dim DataSheetName As String
Dim DataSheet As Worksheet
DataSheetName = ActiveChart.SeriesCollection(1).Formula
DataSheetName = Left(DataSheetName, InStr(1, DataSheetName, "!$") - 1)
DataSheetName = WorksheetFunction.Replace(DataSheetName, 1, Len("=series("), "")
If Left(DataSheetName, 1) = "'" And Right(DataSheetName, 1) = "'" Then DataSheetName = Mid(DataSheetName, 2, Len(DataSheetName) - 2)
DataSheetName = Replace(DataSheetName, "''", "'")
Set DataSheet = Sheets(DataSheetName)
End Sub
dies in vielen Fällen funktioniert, aber wenn meine Nutzer haben eine seltsame Arbeitsblatt-Namen es schlägt fehl. das gleiche gilt, wenn Serie 1 wurde benannt (zB .SeriesCollection(1).Formula = "=SERIES(**"Hell,o !"**,'Sh''e e$,,t!3!$'!$B$2:$B$18,'Sh''e e$,,t!3!$'!$C$2:$C$18,1)"
.
Gibt es eine einfache Möglichkeit, dies zu lösen?
die Benutzer sagen – jsotola
Beifall mit idiotischen Arbeitsblatt Namen zu stoppen! Ich erzähle es ihnen immer wieder, aber es gibt immer jemanden, der meine Warnungen nicht beachtet! –
Überprüfen Sie die Arbeitsblattnamen, bevor Sie Code ausführen, und geben Sie eine Warnung ein. oder einfach Arbeitsblätter umbenennen ... alles, was nicht [a-zA-Z0-9] ist, durch Unterstreichen ersetzen – jsotola