2016-05-10 9 views
0

als ein Anfänger, ich habe mit diesem Problem 2 Tage gewesen und ich bin verzweifelt für Ihre Hilfe.Wie extrahiere ich einen Pfad in einer Textdatei und benutze ihn in VBA?

Meine Textdatei ist:

C:\Sourcefile\imported 
C:\Destination\not imported 
C:\Testexcel\test.xlxs 

und ich brauche, um den Text zu lesen und diesen Pfad in vba verwenden. Das Ziel des VBA-Codes ist es, einen neuen Ordner zu erstellen, wenn dieser nicht im Ziel existiert.

FSO = CreateObject("Scripting.FileSystemObject") 
set oSourceFolder=FSO.getfolder(Line1,Readline) 'if i replace line with the path it will work 
set oSourceFolder=FSO.getfolder(Line2,Readline) 
set oSourceFolder=FSO.getfolder(Line3,Readline) 

if dir("C:\Destination\not imported",16)="" Then Mkdir (":\Destination\not imported") 

Hier möchte ich den Pfad mit der Linie ersetzen, aber es funktioniert nicht.

Können Sie mir bitte helfen?

+0

FSO.FolderExists und FSO.CreateFolder helfen. Setzen Sie das a-Datei-Objekt und erhalten Sie dann den Pfad von diesem Objekt kann auch helfen. –

+0

@Nathan_Sav Ja, aber ich habe kein Problem darin, das Problem ist, dass ich nicht weiß, wie man die Textdatei und es dort Pfad zu VBA – mitsuki

+0

verwendet, überprüfen Sie auch diesen Link .. http://www.rondebruin.nl/ win/s9/win003.htm – Sixthsense

Antwort

0

Sie müssen

  • Set Stichwort am Anfang

FSO = CreateObject("Scripting.FileSystemObject")

  • Verwendung ReadLine Methode TextStream Objekt hinzufügen jede einzelne Zeile der Textdatei abgerufen werden in a string Objekt

  • analysieren, dass string für möglich, Dateien Spezifikation zurück und bekommt nur ihr sein Weg Teil

  • Verwendung FolderExists Methode von Filesystemobjekt für die vorhandenen Ordner überprüfen

  • und endlich (falls vorhanden), dass Ordner oder erstellen (wenn nicht vorhanden) sie über GetFolder oder CreateFolder Methoden des Filesystemobjekts

viel wie folgt:


 Option Explicit 

    Sub main() 
     Dim FSO As FileSystemObject 
     Dim foldersListFile As TextStream 
     Dim folderName As String 
     Dim oSourceFolder As Folder 

     Set FSO = CreateObject("Scripting.FileSystemObject") 

     Set foldersListFile = FSO.OpenTextFile("C:\myPath\folders.txt", ForReading, TristateFalse) 

     Do While Not foldersListFile.AtEndOfStream 
      folderName = GetFolderStringOnly(foldersListFile.ReadLine) 

      If FSO.FolderExists(folderName) Then 
       Set oSourceFolder = FSO.GetFolder(folderName) 
      Else 
       Set oSourceFolder = FSO.CreateFolder(folderName) 
      End If 
      Loop 

     foldersListFile.Close 

    End Sub 

    Function GetFolderStringOnly(textLine As String) As String 
     Dim iDot As Long, iSlash As Long 
     iDot = InStrRev(textLine, ".") 
     If iDot > 0 Then 
      iSlash = InStrRev(Left(textLine, iDot), "\") 
      textLine = Left(textLine, iSlash - 1) 
     End If 
     GetFolderStringOnly = textLine 
    End Function 
+0

Ich möchte Sie nur fragen, wie kann ich angeben, welche Zeile sollte VBA lesen, um den Pfad der TXT-Datei zu extrahieren? Vielen Dank – mitsuki

+0

Sie können die Zeilen im Block "Do While - Loop" zählen und anhalten, wenn Sie die gewünschte Zeile erreichen. Dazu fügen Sie am Anfang einige 'Dim countLine so long' und in der Schleife eine 'countLine = countLine + 1' ein. – user3598756

+0

Hast du es verstanden? – user3598756