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

Beitrag lesen

Hellihello SELF

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

haben das "$" und das "%" eine Bedeutung?

Sind deprecated Typenklassen-shortcuts

As Worksheet bedeutet, dass TB ein Worksheet=Tabellenblatt ist (werden soll)?

yes

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

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

Warum das "()" fehlt, ist mir immer noch unklar. Immerhin wird mit FreeFile ein Datenkanal freigegeben, der als Referenznummer auf die Datei gilt.

Set TB = ThisWorkbook.Worksheets(1)

nimm Worksheet Nummer 1

jo, wird wohl.

'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.

Raute ist hier Syntaxbestandteil für den File-Channel.

'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".

dito.

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

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

Die Klammer ist wohl korrekter.

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.

Die Frage ist noch unbeantwortet für mir.

SELF-Dank und Gruß,

frankx