frankx: VBA - oh weh - ein paar konkrete Fragen dazu

Beitrag lesen

Hellihello Vinzenz,

die Funktion MsgBox() hab ich mittlerweile gefunden. Auch ein kleines Script, dass ein Filehandle benutzt, bei mir aber noch Fragen hinterlässt. Vielleicht hättest Du ja das ein oder andere Stichwort?

Sub TextDateiErstellen()
  Dim exportfile$, TB As Worksheet, z%, TMP$

haben das "$" und das "%" eine Bedeutung?
As Worksheet bedeutet, dass TB ein Worksheet=Tabellenblatt ist (werden soll)?

exportfile = "C:\test.txt"
    Dateinummer = FreeFile

gibt ein Dateihandle. Ich weiß zwar nicht wirklich, was das macht, ist aber so wohl.

Set TB = ThisWorkbook.Worksheets(1)

nimm Worksheet Nummer 1

'Die folgende Zeile erzeugt eine neue Datei mit dem angegebenen Namen
    'im angegebenen Pfad
    Open exportfile For Output As #Dateinummer

ist ja kommentiert. Was aber genau meint "For Output"? Eine Funktion ist es ja nicht, immerhin wurde hier wohl kaum geplenkt (;-).
wieso eine Raute vor "Dateinummer"?

'Die beiden Schleifen beziehen alle belegten Zellen in die zu erstellende Textdatei ein
    For z = 1 To TB.UsedRange.Rows.Count
        For s = 1 To TB.UsedRange.Columns.Count
          'Das Semikolon ist durch jedes beliebige Feldtrennzeichen ersetzbar
            TMP = TMP & CStr(TB.Cells(z, s).Text) & ";"
        Next s
        'Damit am Ende jeder Zeile, also nach der letzten Zelle kein Strichpunkt mehr gesetzt wird,
        'muss das letzte Zeichen wieder abgezogen werden
        TMP = Left(TMP, Len(TMP) - 1)
        'Print fügt hier immer eine Zeile zur bestehenden Textdatei hinzu
        Print #Dateinummer, TMP

Druck in die Datei, die das Dateihandle (mit der Raute) bezeichnet - egal wie der Dateinamen ist, und zwar schubse da TMP rein.

'Die Variable TMP muss vor der Aufnahme der nächsten Zeile wieder geleert werden
        TMP = ""
    Next z
    Close #Dateinummer

Mach die Datei zu, also "ich habe fertisch".

End Sub

Noch eine Anmerkung: Ein Filehandle besorgt man sich mit der Funktion FreeFile().

warum fehlen da oben die Klammern "()" bei Freefile?

Nebenbei vielleicht noch eine kurze Anregung, mit welchem Zauberwort eine test.bat losgetreten werden könnte? Irgendwie kommt mir das alles etwas amorph vor. In der Hilfe sind so wenig Querverweise. Bei InputMessagebox wird zB. nicht wie im PHP-Manual auf andere verwandte Funktionen verwiesen, wie MsgBox oder so.

Dank und Gruß,

frankx