Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Excel-Chart in ein UserForm einbinden

595 views
Skip to first unread message

Dirk Eiserfey

unread,
May 17, 2001, 11:30:19 AM5/17/01
to
Hallo,

wie kann man ein Excel-Chart in ein Formular einbinden.
(als Control).
Ich möchte die Sheet´s im Hintergrund lassen bzw. wenn möglich
ausblenden/minimieren.
Gibt es irgendwo eine Demo wie man das mit VBA realisieren kann.


Dr. Eckehard Pfeifer

unread,
May 17, 2001, 12:50:52 PM5/17/01
to
Hallo, es geht wohl nur, die Webkomponenten ab Office 2000 zu nutzen.

--
Mit freundlichen Grüßen
Eckehard Pfeifer

VBA-WorkShops in Dresden, Info unter www.dr-e-pfeifer.de
Ein Blick lohnt sich immer: www.vba-magazin.de

Karl-Heinz Wachler

unread,
May 18, 2001, 5:06:03 AM5/18/01
to
"Dirk Eiserfey" <detha...@t-online.de> schrieb im Newsbeitrag news:upByYZu3AHA.2204@tkmsftngp02...

Nur so eine Idee (ich hab's nicht ausprobiert):

per VBA wird ein Chart periodisch als GIF exportiert:

Charts(1).Export _
FileName:="Testchart.gif", FilterName:="GIF"

Dann ein Steuerelement "Anzeige" auf ein Formular ziehen und
mit der o.g. Grafik aktualisieren.

Eigentlich müsste es auch gehen, unter "Zusätzliche Steuerelemente"
"Microsoft Office Chart" zu aktivieren und auf ein Formular zu ziehen.
Allerdings habe ich noch nicht probiert, diesem Chart eine Datenreihe
zuzuweisen. Wer das weiß, könnte ja mal etwas dazu schreiben.

MfG
Karl-Heinz

Optimierung mit genetischen Algorithmen
und Excel-AddIn:
http://www.k-hw.de


Dr. Eckehard Pfeifer

unread,
May 18, 2001, 7:17:50 AM5/18/01
to
Hallo, KH, das ist in der Hilfe besser beschrieben als mans selbst könnte.
Du musst nur mit

dim cht as WCChart

starten und dann geht der Rest kontextsensitiv und die Hilfe funktioniert
auch.

Eckehard Pfeifer

Dr. Eckehard Pfeifer

unread,
May 18, 2001, 7:53:18 AM5/18/01
to
Noch ein kleines Beispiel:

Private Sub UserForm_Click()
Dim ch As WCChart
Dim s As WCSeries
Dim sc As WCSeriesCollection
Dim MyValues(3)

MyValues(1) = 2
MyValues(2) = 4
MyValues(3) = 9

Set ch = ChartSpace1.Charts.Add
ch.Type = chChartTypeColumnClustered

Set s = ch.SeriesCollection.Add
s.SetData chDimValues, chDataLiteral, MyValues
End Sub

Eckehard


Dirk Eiserfey

unread,
May 18, 2001, 9:07:20 AM5/18/01
to
Vielen Dank für Ihre Überlegungen, ich werde versuchen es umzusetzen.

Dirk Eiserfey


"Dr. Eckehard Pfeifer" <i...@dr-e-pfeifer.de> schrieb im Newsbeitrag
news:uijjjD53AHA.1916@tkmsftngp03...

Karl-Heinz Wachler

unread,
May 19, 2001, 6:23:38 AM5/19/01
to
"Dr. Eckehard Pfeifer" <i...@dr-e-pfeifer.de> schrieb im Newsbeitrag news:uijjjD53AHA.1916@tkmsftngp03...
>[...]
> Noch ein kleines Beispiel:

Wunderbar!

MfG
Karl-Heinz


Dirk Eiserfey

unread,
May 20, 2001, 7:27:28 AM5/20/01
to
Hallo,
ich habe alles Mögliche versucht aber leider keine Lösung gefunden wie ich
statt
MyValues(xyz) dem Diagramm einen Range zuweisen kann.
Der Wertebereich wird erst zur Laufzeit abgefragt und festgelegt.
Hat hierfür einer eine Idee.

Zur Erklärung:
Im Datenblatt werden mehrere Datenspalten mit Daten gefüllt. In der ersten
Spalte wird das Datum gespeichert.
Der Anwender soll aus den gespeicherten Daten anhand der Datumsspalte einen
Wertebereich
auswählen können (Anfangs- und Enddatumsbestimmung über Kalender-Object).
Diese ausgewählten Werte sollen dann zu einem MultiRange zusammengefasst
werden und dem ChartObject übergeben werden.

Wenn einem zu dieser Aufgabenstellung etwas einfallen würde, wäre ich sehr
dankbar.

Mit freundlichen Grüssen
Dirk Eiserfey


"Dr. Eckehard Pfeifer" <i...@dr-e-pfeifer.de> schrieb im Newsbeitrag
news:uijjjD53AHA.1916@tkmsftngp03...

Wilfried Butzek

unread,
May 20, 2001, 11:57:35 AM5/20/01
to
Dirk Eiserfey schrieb am Sun, 20 May 2001 13:27:28 +0200:
>
> Hallo,
> ich habe alles Mögliche versucht aber leider keine Lösung gefunden wie ich
> statt
> MyValues(xyz) dem Diagramm einen Range zuweisen kann.
> Der Wertebereich wird erst zur Laufzeit abgefragt und festgelegt.
> Hat hierfür einer eine Idee.
>
> Zur Erklärung:
> Im Datenblatt werden mehrere Datenspalten mit Daten gefüllt. In der ersten
> Spalte wird das Datum gespeichert.
> Der Anwender soll aus den gespeicherten Daten anhand der Datumsspalte einen
> Wertebereich
> auswählen können (Anfangs- und Enddatumsbestimmung über Kalender-Object).
> Diese ausgewählten Werte sollen dann zu einem MultiRange zusammengefasst
> werden und dem ChartObject übergeben werden.
>
> Wenn einem zu dieser Aufgabenstellung etwas einfallen würde, wäre ich sehr
> dankbar.
>
> Mit freundlichen Grüssen
> Dirk Eiserfey
[...]

Hallo Dirk,

also, wie man ein Diagramm in Echtzeit in ein
Userform bekommt, habe ich bisher auch nicht
heraufinden koennen.

Fuer das Problem, wie man einen variablen Datenbereich
zur Laufzeit in ein Diagramm bekommt, kann ich Dir
meine "Diagr_variabel_Demo.xls" (gezippt 44 KB)
anbieten.

Dort wird ueber eine Combobox-Auswahl ein Datum
bestimmt. Fuer dieses Datum und die beiden folgenden
wird dann ein Liniendiagramm angepasst. Der Code
ist sehr ausfuehrlich kommentiert, so dass Du ihn IMHO
recht muehelos an Deien Beduerfnisse anpassen kannst.
Bei Interesse bitte PM an mich.

Mit freundlichem Gruss
Wilfried

Dr. Eckehard Pfeifer

unread,
May 20, 2001, 1:27:07 PM5/20/01
to
hallo, aber genau dieses Beispiel (ohne die ComboBox) steht doch in der
Hilfe. Oder kann mans doch nicht so einfach adaptieren?

Dirk Eiserfey

unread,
May 20, 2001, 1:33:05 PM5/20/01
to
Hallo,
der Punkt ist die Darstellung in einem Formular und nicht im Excel-Sheet.
Aber möglicherweise habe ich in der Hilfe etwas übersehen, nenne mir doch
bitte die Stelle.
Vielen Dank.

Dirk Eiserfey


"Dr. Eckehard Pfeifer" <pri...@dr-e-pfeifer.de> schrieb im Newsbeitrag
news:eM76oIV4AHA.1400@tkmsftngp05...

Dr. Eckehard Pfeifer

unread,
May 21, 2001, 1:57:21 AM5/21/01
to
Hallo, siehe meinen Beitrag weiter oben (WCChart).

E. Pfeifer

"Dirk Eiserfey" <detha...@t-online.de> schrieb im Newsbeitrag

news:uPVA8LV4AHA.1916@tkmsftngp07...

Dr. Eckehard Pfeifer

unread,
May 21, 2001, 3:05:15 AM5/21/01
to
Hallo, noch mal ich. Der folgende Code ist das in etwa Allgemeinste, was mir
zum Thema Chart auf UserForm einfällt:

Private Sub UserForm_Activate()
Dim arX()
Dim arY()

Dim rst As ADODB.Recordset
Dim con As ADODB.Connection

Set con = New ADODB.Connection
con.ConnectionString = "Provider=MSDASQL.1;Persist Security
Info=False;Extended
Properties=""DSN=Excel-Dateien;DBQ=c:\Windows\Desktop\Mappe1.xls;DefaultDir=
c:\Windows\Desktop;DriverId=790;MaxBufferSize=2048;PageTimeout=5;"""
con.Open

Set rst = New ADODB.Recordset
rst.Open "SELECT Datenbereich.Rubrik, Datenbereich.Werte FROM
`C:\Windows\Desktop\Mappe1`.Datenbereich Datenbereich", con, adOpenKeyset

Set c = ChartSpace1.Constants

ChartSpace1.Charts.Add
ChartSpace1.Charts(0).Type = c.chChartTypeLineMarkers

ReDim arX(rst.RecordCount)
ReDim arY(rst.RecordCount)
i = 1
While Not rst.EOF
arX(i) = rst.Fields(0)
arY(i) = rst.Fields(1)
i = i + 1
rst.MoveNext
Wend
ChartSpace1.Charts(0).SetData c.chDimCategories, chDataLiteral, arX
ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimValues,
chDataLiteral, arY
End Sub

Es wird eine ADO-Connection mit Recordet auf eine Datenquelle eingerichtet
(hier ist das Mappe1.xls mit einem benannten Bereich namens Datenbereich,
natürlich kann man auch ohne ADO auf UsedRange einer Tabelle zugreifen, aber
obiges funktioniert analog für Access, dBase usw.). Dann werden, wie schon
gepostet, die Datenreihen belegt. Immer wenn UserForm aktiviert wird, werden
die neuen Daten eingelesen. Verweis auf ADODB nicht vergessen.

Eckehard Pfeifer


"Dirk Eiserfey" <detha...@t-online.de> schrieb im Newsbeitrag

news:uPVA8LV4AHA.1916@tkmsftngp07...

Karl-Heinz Wachler

unread,
May 21, 2001, 6:27:45 AM5/21/01
to
"Dirk Eiserfey" <detha...@t-online.de> schrieb im Newsbeitrag news:uPVA8LV4AHA.1916@tkmsftngp07...

> Hallo,
> der Punkt ist die Darstellung in einem Formular und nicht im Excel-Sheet.
> Aber möglicherweise habe ich in der Hilfe etwas übersehen, nenne mir doch
> bitte die Stelle.
> Vielen Dank.

Ich kann Dir bei Bedarf eine Demomappe zusenden, in der eine Range
aus dem Sheet im Chartobjekt der Userform dargestellt und
automatisch an Veränderungen in den Quelldaten angepaßt wird.

Karl-Heinz Wachler

unread,
May 21, 2001, 9:51:53 AM5/21/01
to
"Dr. Eckehard Pfeifer" <pri...@dr-e-pfeifer.de> schrieb im Newsbeitrag news:OhrijQc4AHA.2176@tkmsftngp07...

> Hallo, noch mal ich. Der folgende Code ist das in etwa Allgemeinste, was mir
> zum Thema Chart auf UserForm einfällt:
> [...]

Sieht interessant aus. Ebenfalls möglich ist eine unter
http://www.j-walk.com/ss/excel/eee/eee005.txt
beschriebene Möglichkeit, in der Userform ein unsichtbares
Spreadsheet anzulegen, das einerseits mit den darzustellenden Daten
im Quellsheet verbunden wird, andererseits selbst als einfach zu
erreichende Quelle für die Chart-Darstellung dient.

MfG
Karl-Heinz

Dirk Eiserfey

unread,
May 22, 2001, 1:35:37 AM5/22/01
to
Hallo,

als erstes möchte ich mich bei allen bedanken die sich mit meinem Problem
auseinandesetzen.
Ich freue mich über jede Demo, also immer ran damit ;) . Das scheint ja
genau das zu sein was ich brauche!!
Den Quellcode von Eckehard muss ich ersteinmal durchdenken und verdauen. So
tief bin ich in Datenbankprogamming noch nicht eingestiegen. Aber es wird
schon werden :)) .

Vielen Dank an alle.
Dirk Eiserfey


"Karl-Heinz Wachler" <k-...@gmx.net> schrieb im Newsbeitrag
news:9eaqk3$1solc$1...@ID-4159.news.dfncis.de...

0 new messages