Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Textdateien in verschiedene Arrays schreiben

Frage Microsoft Microsoft Office

Mitglied: TomVBA

TomVBA (Level 1) - Jetzt verbinden

05.02.2009, aktualisiert 17:14 Uhr, 3635 Aufrufe, 2 Kommentare

Liebe VBA Experten!

Ich möchte für jeden Eintrag in einer Listbox (Pfad einer Textdatei) ein seperates Array erstellen um später mit einzelnen Werten aus diesen Arrays eine Tabelle füllen.
um dies in einer Schleife abzuarbeiten können, würde ich gerne das anzusprechende Array durch MyArrayX = "MyArray" & h (wobei h die Schleifennummer ist) definieren.

Am Ende bekomme ich bei
MsgBox MyArrayX(0, 0) -> die richtige Zeile aus der richtigen Textdatei zb. " 1WERKSTUECK WERKSTUECK 2508.00 181.00RE ST 0 0 0 0 0 0 0 0 "
aber wenn ich das Array direkt ansprechen will :
MsgBox MyArray0(0,0) -> die Meldung "Typen unverträglich"

ist mein Ansatz überhaupt möglich bzw. was mache ich falsch ?

Danke schon mal im Voraus.

Tom


Option Explicit
Dim MyArray0() As String
Dim MyArray1() As String...

Sub Array_fuellen()

Dim Temptabelle As Variant
Dim Tempstring As String
Dim Freie_Datei As Integer, Spalten As Integer, Zeilen As Integer
Dim h As Integer 'Zähler Listenindex
Dim i As Integer 'Zähler array einlesen
Dim MyArrayX As Variant 'Variable wird mit zu bearbeitenden Array befüllt (MyArray0.....)


Freie_Datei = FreeFile
Zeilen = 0

For h = 0 To ListBox2.ListCount - 1 '1 Schleife für jedes Werkstück
'Array name aus Fixwert (MyArray) und Schleifennummer bilden
MyArrayX = "MyArray" & h
'
Listbox2 einzelne Datei öffnen und Array nach Zeilen dimensionieren
Open ListBox2.List(h) For Input As #Freie_Datei
Input #Freie_Datei, Tempstring
Temptabelle = Split(Tempstring, ";")
Spalten = UBound(Temptabelle, 1)
ReDim MyArrayX(Spalten, Zeilen)
Close Freie_Datei
'**Listbox2 einzelne Datei öffnen und einlesen
Zeilen = 0
Open ListBox2.List(h) For Input As #Freie_Datei
While Not EOF(Freie_Datei)
ReDim Preserve MyArrayX(Spalten, Zeilen)
Input #Freie_Datei, Tempstring
Temptabelle = Split(Tempstring, ";")
For i = 0 To Spalten
MyArrayX(i, Zeilen) = Temptabelle(i)
Next i
Zeilen = Zeilen + 1
Wend
Close Freie_Datei
MsgBox MyArrayX(0, 0) 'Beginnt bei 0 !!!
MsgBox MyArray0(0,0)


Next h
End Sub
Mitglied: bastla
05.02.2009 um 22:47 Uhr
Hallo TomVBA!

Entweder baust Du das Ganze als dreidimensionales Array auf (Dateinummer,Zeile,Spalte), oder Du splittest erst bei Bedarf - dann genügt ein eindimensionales Array, welches in jedem Element die gesamte Textdatei als weiteres eindimensionales Array - Elemente sind die einzelnen Zeilen - enthält) - wobei ich allerdings zur Performance nichts sagen kann, daher ggf ausprobieren ...

Die Variante 2 sähe etwa so aus:
01.
Sub Array_fuellen() 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Dim Daten 
04.
MaxIndexDateien = ListBox2.ListCount - 1 
05.
ReDim Daten(MaxIndexDateien) 
06.
For h = 0 To MaxIndexDateien 
07.
    Daten(h) = Split(fso.OpenTextFile(ListBox2.List(h)).ReadAll, vbCrLf) 
08.
Next 
09.
MsgBox Split(Daten(1)(8), ";")(3) 
10.
End Sub
In der MsgBox wird (da nullbasierend) der Inhalt von Spalte 4 der Zeile 9 der Datei 2 ausgegeben.

Grüße
bastla
Bitte warten ..
Mitglied: TomVBA
06.02.2009 um 12:56 Uhr
Er sandte sein Wort und machte sie gesund und errettete sie, dass sie nicht darben. (Psalm 107, 20)


Vielen Dank
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(10)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (26)

Frage von FA-jka zum Thema Windows 10 ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (23)

Frage von pierrehansen zum Thema LAN, WAN, Wireless ...

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...