Daten von VB6 in Excel Array

  • VB6

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Alex73.

    Daten von VB6 in Excel Array

    Hallo,

    würde gerne den Output mehrerer Indikatoren mit Visual Basic in eine Excel Tabelle (zweidimensionales Array) füllen.
    Bei einem Output geht das noch ganz gut. Aber einem zweidimensionalen Array stehe ich irgendwie auf dem Schlauch.

    Hier mal mein Code der bei einem Indikator Output funktioniert.

    Dim Feld1() As Single
    Feld1 = cDaten(Parameter(1))
    Dim Start1 As Long
    Dim End1 As Long

    Start1 = LBound(Feld1)
    End1 = UBound(Feld1)

    If SetzeGrenzen(Feld1, Start1, End1) <> True Then
    Calculate = ErrNoData
    Exit Function
    End If

    Open "C:\Fill_in_Excel.xls" For Output As #1

    Dim k As Single
    For k = Start1 To End1

    Print #1, Feld1(k)

    Next k
    Close #1




    In VBA ging das doch mal so, soweit ich mich erinnern kann.
    "Cells" und "FormulaR1C1" laufen aber In Visual Basic 6 nicht.

    For j = 1 To TotalCols
    For k = 1 To TotalRows
    Cells(k , j).FormulaR1C1 = OutputData(k * j)
    Next k
    Next j


    Kann mir da jemand weiterhelfen?

    Gruß
    Alex

    Alex73 schrieb:

    In VBA ging das doch mal so, soweit ich mich erinnern kann.
    "Cells" und "FormulaR1C1" laufen aber In Visual Basic 6 nicht.

    Richtig.

    VBA nimmt einem da ein paar Dinge ab, da VBA (... for Applications) sich in der Regel auf eine bestimmte Applikation - in diesem Fall - Excel bezieht, werden diverse Objekte bereits global vordefiniert, so z.B. das aktuelle Dokument oder allgemein der Zugriff auf die Excel-Anwendung.

    In VB6 musst du diese Verbindung zunächst selbst herstellen, indem du einen Verweis auf die entsprechende Office-Bibliothek (hier z.B. "Microsoft Excel x.x Object Library") hinzufügst und dann die darin enthaltenen Klassen nutzt, um eine laufende Excel-Instanz zu automatisieren bzw. eine neue Instanz startest.

    Visual Basic-Quellcode

    1. Dim objExcel As Excel.Application
    2. On Error Resume Next
    3. Set objExcel = GetObject(, "Excel.Application")
    4. On Error Goto 0
    5. If objExcel Is Nothing Then
    6. Set objExcel = New Excel.Application
    7. End If

    Das "On Error ..." ist nötig, da sonst ein Laufzeitfehler auftritt wenn Excel noch nicht läuft. Erst wenn auch das Neu-Erzeugen ebenfalls fehlschlägt, soll ein Fehler auftreten (den man dann in übergeordnetem Code wieder abfangen kann).

    Naja... und so weiter. Mit dem ObjectBrowser hat man ja zum Glück auch in VB6 ein recht mächtiges Werkzeug um der Struktur solcher Bibliotheken auf die Spur zu kommen.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Danke für Deine Hilfe,

    ist doch etwas schwieriger als ich gedacht habe.
    Und wie schreibt man dann in das Excel File?
    Etwar so.



    Dim objExcel as Long
    objExcell ()

    For j = 1 To TotalCols
    For k = 1 To TotalRows

    objExcel(k , j)

    Next k
    Next j
    Ich habe nicht umsonst den Hinweis auf den ObjectBrowser gegeben. Du musst hier explizit deine passenden Objekte holen und/oder erzeugen, wohingegen du in Excel-VBA das meiste schon implizit vorgekaut bekommst.

    Für jedes "Element", sei es eine Tabellenzelle, ein Arbeitsblatt oder eine ganze Excel-Mappe, gibt es in der Excel-Automatisierungs-Bibliothek entsprechende Klassen, auf deren Basis du dir die passenden Objekte erzeugen oder holen musst. Ist aber etwas umfangreicher um das jetzt hier "mal eben schnell" zu erklären. Man könnte ganze Bücher damit füllen - und was soll ich sagen... ein paar haben das sogar getan. ;)
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Hallo,

    kann man den auch ein 2 Dimansionales Array in Excel mit der vergehensweise schreiben?

    Dim FF as String
    FF = Freefile
    Open "C:\Test.xls" For Output As #FF

    Dim k As Single
    For k = DatenStart To DatenEnd

    Print #FF, Daten(k)
    Close #FF


    Eindimensional geht das ja ganz gut

    Gruß
    Alex