Excel-Tabellen und Diagramme in Visual Basic 6 erstellen. Wie?

Hammel_b

Grünschnabel
Hallo liebe Mitprogrammierer und Mitprogrammiererinnen, liebe Helfer und Helferinnen


Ich hätte da mal eine Frage bezüglich der Tabellen- und Diagrammerstellung in VB6:

Ich würde gerne wissen, wie der Code für die Erstellung einer Tabelle und daraus resultierenden Diagramm aussieht in Visual Basic 6.


Bitte um den generellen Code-Aufbau. Habe das Internet durchforstet und bisher nichts gescheites gefunden.

Danke schon mal an alle, die sich die Mühe machen mir zu helfen.

Liebe Grüße
Hammel
 
Reden wir jetzt hier über die Möglichkeit, von VB aus auf eine Excel-Datei zurückzugreifen und dort Tabellen zu erstellen/füllen und Diagramme zu erstellen oder von der Variante, dies auf einer VB-Form mithilfe von eigenen Steuerelementen zu tun?


Der Doc!
 
Ich würde gern wissen, wie ich in VB eine Excel Tabelle aus eingegebenen Werten im VB-Programm erstellen kann und diese dann in einem Diagramm ausgeben kann.

Also:

VB-Programm: Werte eingeben

Dann klickt man auf einen Button "Tabelle anzeigen" (o.ä.) und er gibt die Werte, die ich zuvor eingegeben habe, in einer Tabelle aus.

Zudem gibt es noch einen Button "Diagramm anzeigen", welcher dann halt aus der erstellten Tabelle ein Diagramm erzeugt.

Dazu würd ich gerne wissen, wie der Quelltext aussieht

Vielen Dank im voraus

Grüße
Hammel_b
 
Also, eine Excel-Datei spricht man aus VB so wie hier beschrieben an. Im Prinzip kannst du in VB sämtliche Excel-VBA-Anweisungen über das Objekt nutzen, zeichne doch mal in Excel die Erstellung eines Diagramms mit dem Makrorecorder auf und schau dir den Code an. Du kannst ihn dann fast 1:1 in dein VB-Programm einbauen.


Der Doc!
 
Dann hätte ich jetzt noch eine Frage:

Wie kann ich überprüfen, ob in der geschriebenen Excel-Tabelle schon Daten sind und kann ich da dann auch auslesen, wieviel vorhanden sind,

so dass ich z.B. neue Daten in der Tabelle einfügen kann.

In dem Beispiel steht leider nur eine statische Methode, geht das auch irgendwie dynamisch?
Gibt es dazu zufällig irgendwelchen Quelltext?

Vielen Dank schonmal :)
 
Inwiefern dynamisch? Meinst du, dass du in Schleifen auf die Zellen zugreifen kannst? Dann verwende die .Cells(Row, Column)-Variante, da kannst du über Zahlen auf die Zellen zugreifen.

Um herauszufinden, ob eine Tabelle Daten enthält fällt mir mal so schnell nichts ein, irgendwo hab ich mal eine Möglichkeit gehabt, das letzte Element einer Tabelle zu bestimmen. Ansonsten müsstest du auslesen, ob die Zellen, die normalerweise Daten beinhalten, gefüllt sind.


Der Doc!
 
Die Anzahl der Zeilen bekommst Du auf folgende Weise heraus:

Code:
Public Function Test(xlDsn As String, SheetNr As Integer) As Long
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Open(xlDsn)
If SheetNr > xlBook.Sheets.Count Then
      MsgBox "Sheet" + Str(SheetNr) + " gibt es nicht!", vbInformation
      Exit Function
End If
Set xlSheet = xlApp.ActiveWorkbook.Sheets(SheetNr)
Test= xlSheet.UsedRange.Rows.Count
End Sub

Viele Grüsse
ronaldh
 
Ich würde es nicht mit der UsedRange.Rows.Count Eigenschaft machen, da es reicht wenn du einmal in der letzten zeile und oder letzten Spalte des Blattes aus versehen ein leerzeichen drin hattest, damit sich excel da verzählt.
Ich würde über die rows schleifen und dann das cellvalue einer vordefinierten Spalte überprüfen.

Visual Basic:
   while not abbruch 
      i = i +1
       abbruch = (len ( activeSheet.Cells(1,i).Cellvalue)=0) 
   wend
   call msgbox ("Anzahl genutzte Reihen " & i )
Grüsse bb
 
Das Durchschleifen durch eine große Exceldatei von VB aus dauert leider sehr lange, und das bei hoher Prozessorlast.

Wenn jemand in die 65000. Zeile springt und dort ein Leerzeichen eingibt, hat man mit UsedRange.Rows.Count Methode sicherlich ein kleines Problem.

Jedoch bekommt man bei der Längenprüfung Probleme, wenn Zeilen innerhalb des Sheets leer sind.

Ich lese mit VB viele Abrechnungstabellen ein, die teilweise mehrere MB groß sind. Diese bestehen manchmal auch aus unterschiedlichen Blöcken, die durch eine oder viele Leerzeilen getrennt sind. Natürlich darf das Programm dann nicht abbrechen.

Aber um allein 200 Zeilen zu lesen, ist der Rechner schon eine bemerkenswerte Zeit beschäftigt.

Deshalb ist in den meisten Fällen die Rows.Count-Methode wesentlich sicherer.

Grüsse
ronaldh
 

Neue Beiträge

Zurück