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.
--
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
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
dim cht as WCChart
starten und dann geht der Rest kontextsensitiv und die Hilfe funktioniert
auch.
Eckehard Pfeifer
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
"Dr. Eckehard Pfeifer" <i...@dr-e-pfeifer.de> schrieb im Newsbeitrag
news:uijjjD53AHA.1916@tkmsftngp03...
Wunderbar!
MfG
Karl-Heinz
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...
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
Dirk Eiserfey
"Dr. Eckehard Pfeifer" <pri...@dr-e-pfeifer.de> schrieb im Newsbeitrag
news:eM76oIV4AHA.1400@tkmsftngp05...
E. Pfeifer
"Dirk Eiserfey" <detha...@t-online.de> schrieb im Newsbeitrag
news:uPVA8LV4AHA.1916@tkmsftngp07...
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...
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.
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
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...