latex78
Goto Top

Excel VBA vereinfachter Import

Hi Leute,

ich möchte einige Textdateien nacheinander in verschiedene Exceltabellen importieren.

Da die Textdateien verschiedene Namen haben, aber alle im selben Ordner stehen, möchte ich die Prozedur etwas vereinfachen.

In Zeile A1 möchte ich den Namen des Pfades (inkl. Dateinamen) eintragen, der dann vom VBA Code automatisch übernommen wird.

Soll so aussehen:

in Zeile A1 steht C:\Users\Klaus\Dokumente\Textdatei1


Der Code sieht im Moment so aus:

Sub Import
Dim X As Double
Dim TXT As String

Open "C:\Users\Klaus\Dokumente\Textdatei1" For Input As #1
'Startpunkt
X = 0

For I = 1 To 15
Line Input #1, TXT
Cells(1, 1).Offset(X, 0) = TXT
X = X + 1
Next

Close #1

For j = 1 To 15
Text = Split(Cells(j, 1), " ")
For I = 0 To UBound(Text)
Cells(j, I + 1) = Text(I)
Next
Next


End Sub

(brauche nur die ersten 15 Zeilen)

Wie müsste der Code geschrieben werden, dass der Pfad aus A1 automatisch übernommen wird.


Danke schon mal für Eure Hilfe

Content-Key: 345523

Url: https://administrator.de/contentid/345523

Printed on: April 16, 2024 at 04:04 o'clock

Member: em-pie
em-pie Aug 05, 2017 at 10:43:25 (UTC)
Goto Top
Moin,

also wenn es dir nur darum geht, deinen obigen Pfad aus einer Zelle auszulesen:
https://analysistabs.com/excel-vba/read-get-data-from-cell-worksheet/

da wäre man aber auch mit etwas googlen hinter gekommen: excel VBA get content from cell

Den Inhalt in eine Variable schreiben:
...
strFile = Cells(x, y) ' x = Row (1 - ...), y = Column(A - ZZ)   
Open strFile For Input As #1
...

Gruß
em-pie
Member: Pjordorf
Solution Pjordorf Aug 05, 2017 updated at 11:15:23 (UTC)
Goto Top
Hallo,

Zitat von @Latex78:
Soll so aussehen:
Machs so
Sub Import()

Dim I as Integer
Dim TXT as String

Open "C:\Users\Klaus\Dokumente\Textdatei1" For Input As #1  

For I = 1 To 15
    Line Input #1, TXT
    Cells(1, 1).Offset(I - 1, 0) = Left(TXT, InStrRev(TXT, "\"))  
Next I

Close #1

End Sub
Gruß,
Peter
Member: Latex78
Latex78 Aug 30, 2017 at 04:10:38 (UTC)
Goto Top
Prima, Dankeschön. Hat geklappt