Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
296to300
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
296to300
296to300
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datenquelle von Diagrammen und Pivottabellen ausle

Datenquelle von Diagrammen und Pivottabellen ausle
21.08.2003 14:12:37
JerryB
Hallo Forumsteilnehmer,
ich habe diese Frage bereits gestern bei Spotlight.de gestellt, jedoch noch keine Antwort erhalten. Da es mir sehr wichtig ist, stelle ich die Frage hier und heute noch einmal :
Wie kann man per VBA die Datenquelle eines Diagramms (oder auch einer Pivottabelle) auslesen (nicht verändern) ?
Beispiel:
Dim Datenquelle as Range
Datenquelle = activesheet.Chartobjects(1).chart.SeriesCollection(1).xvalues(1) 'oder so ähnlich ??
Ich suche also das Pendant zur Methode SetDataSources
Im Excel Objektkatalog habe ich leider keine passende Eigenschaft des Chart-Objektes gefunden.
Über eine passende Antwort würde ich mich riesig freuen.
Gruss, JerryB

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenquelle von Diagrammen und Pivottabellen ausle
21.08.2003 14:40:55
K.Rola
Hallo,
du kannst die Bezüge der einzelnen SeriesCollection abklappern und
daraus den gesamten Bezug basteln.
Bezug = ActiveChart.SeriesCollection(1).Formula
Gruß K.Rola

Hey Super, danke, das hilft mir schon weiter
21.08.2003 15:27:58
JerryB
Hallo K.Rola,
das hilft mir schon weiter !! Es geht letztendlich darum, dass ich per VBA Verknüpfungen innerhalb einer Mappe finden möchte, die sich ja auch in Datenquellen von Diagrammen und Pivottabellen befinden können.
Mit Deiner Lösung komme ich schon zurecht.
Danke und Gruss, JerryB

AW: Hey Super, danke, das hilft mir schon weiter
21.08.2003 16:45:08
K.Rola
Hallo,
wenn du das willst, was aus deiner Frage aber nicht zu erkennen war,
gehts auch einfacher.
Meld dich ggf. nochmal.
Gruß K.Rola

Anzeige
Aha ? - Da bin ich aber mal gespannt :-)
22.08.2003 09:47:19
JerryB
Hallo K.Rola,
kennst Du wirklich eine Möglichkeit, Verknüpfungen in Diagrammen zu erkennen ohne deren Datenquelle zu ermitteln ? Das würde mich brennend interessieren, da ich häufiger mit diesem Problem konfrontiert werde und bisher immer alles in "Handarbeit" gesucht habe bzw. mit Hilfe des Tool von Jörg Lorenz (er dürfte hier auch bekannt sein, oder ?), dieses Tool hat nur leider in den vergangenen Tagen nicht immer alle Verknüpfungen korrekt angezeigt, daher versuche ich gerade mir ein eigenes Werkzeug zu "stricken".
Wäre nett, wenn Du Dich nochmal meldest und Deine Erkenntnisse an mich weiter gibst.
Danke und Gruss, JerryB
PS: In spotlight.de habe ich Dich aber noch nicht gesehen/gelesen ?!?!?

Anzeige
AW: Aha ? - Da bin ich aber mal gespannt :-)
22.08.2003 15:20:55
K.Rola
Hallo,
na, das war wohl etwas unglücklich ausgedrückt, ausgelesen werden
mussen die schon, aber eben etwas komfortabler.
Gruß K.Rola
''In spotlight bin ich gelegentlich auch, allerdings unter anderem
''Namen(die Werbung nervt).
''Außerdem gibt es dort bei deutlich weniger Fragen, viel mehr
''kompetente Antworter, die hier nur selten oder gar nicht auftauchen.
''--------------------------------------------------------------------
''Das ganze geht natürlich auch ohne select und activate, allerdings
''mit höherem Aufwand, der mir für diesen Zweck nicht gerechtfertigt
''erscheint.
''Es wird eine neue Mappe erzeugt, in der ggf. die externen Bezüge
''aufgelistet werden.
''Es werden alle Blätter der aktiven Mappe auf Charts und auf externe
''Bezüge abgeklopft.
''--------------------------------------------------------------------
Option Explicit

Sub Chart_Test()
Dim CDaten As Variant, WB As Workbook, Sh As Shape
Dim sht As Object, aWB As Workbook
Application.ScreenUpdating = False
Set aWB = ActiveWorkbook
Set WB = Workbooks.Add(1)
With WB.Sheets(1)
.Name = "Protokoll"
.[A1] = "Blatt"
.[B1] = "Bezug"
End With
aWB.Activate
For Each sht In aWB.Sheets
sht.Select
If sht.Type = 3 Then
If ActiveChart.SeriesCollection.Count > 0 Then
CDaten = ActiveChart.SeriesCollection(1).Formula
If InStr(CDaten, "[") <> 0 Then
WB.Sheets(1).[a65536].End(xlUp).Offset(1, 0) = sht.Name
WB.Sheets(1).[b65536].End(xlUp).Offset(1, 0) = "'" & CDaten
End If
End If
End If
If sht.Type = -4167 Then
For Each Sh In ActiveSheet.Shapes
If Sh.Type = 3 Then
Sh.Select
If ActiveChart.SeriesCollection.Count > 0 Then
CDaten = ActiveChart.SeriesCollection(1).Formula
If InStr(CDaten, "[") <> 0 Then
WB.Sheets(1).[a65536].End(xlUp).Offset(1, 0) = sht.Name
WB.Sheets(1).[b65536].End(xlUp).Offset(1, 0) = "'" & CDaten
End If
End If
End If
Next
End If
Next
If WB.Sheets(1).[a2] = "" Then WB.Close False
WB.Sheets(1).Columns(1).AutoFit
WB.Activate
Application.ScreenUpdating = False
End Sub


Anzeige
Danke Dir nochmals, hier mein Code
22.08.2003 16:44:56
JerryB
Hallo K.Rola,
vielen Dank nochmal für Deinen Code. Das Prinzip ist ja schon das Gleiche wie oben beschrieben, mit Auswertung der .Formula-Werte auf "[".
Hier mein Code, den ich gestern erstellt hatte. Er funktioniert ähnlich wie Dein Programm, gibt allerdings redundante Verknüpfungen aus, da jede .SeriesCollection-Verknüpfung ausgegeben wird :


Sub DiagrammDatenquelle()
    Dim TblDatSrc As Object
    tblSrcName = "TblDatSrc"
    
    On Error Resume Next
    Sheets(tblSrcName).Select
    If Err = 9 Then
        Worksheets.Add
        ActiveSheet.Name = tblSrcName
    End If
    
    Set TblDatSrc = Sheets(tblSrcName)
    TblDatSrc.Move before:=Sheets(1)
    [A1] = "Tabellenname"
    [B1] = "Diagrammnr."
    [C1] = "Datenquelle"
    
    For tabelle = 1 To Sheets.Count
        Sheets(tabelle).Select
        For Diagramm = 1 To Sheets(tabelle).ChartObjects.Count
            Sheets(tabelle).ChartObjects(Diagramm).Activate
            For scoll = 1 To ActiveSheet.ChartObjects(Diagramm).Chart.SeriesCollection.Count
                Sheets(tabelle).ChartObjects(Diagramm).Activate
                Datenquelle = ActiveSheet.ChartObjects(Diagramm).Chart.SeriesCollection(scoll).Formula
                TblDatSrc.Activate
                TblDatSrc.Cells([a65536].End(xlUp).Row + 1, 1) = " " & Sheets(tabelle).Name
                TblDatSrc.Cells([a65536].End(xlUp).Row, 2) = " " & Diagramm
                TblDatSrc.Cells([a65536].End(xlUp).Row, 3) = " " & Datenquelle
            Next
        Next
    Next
    TblDatSrc.Activate
    Columns.AutoFit
End Sub


Gruss und schönes Wochenende, JerryB
PS: Bin auch noch unter einem anderen Nick unterwegs - aber : PSSST !! ;-)

Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige