2016-04-20 14 views
1

Also, was ich nur eine Textdatei aus jedem Arbeitsblatt in meiner Excel-Datei, zu tun versuche, ist zu erstellen Spalte D exportieren.mehr Textdateien erstellen mit mehreren Arbeitsblatt Excel VBA

Bisher habe ich einen Makro, die Spalte D, sondern nur auf dem aktiven Arbeitsblatt exportiert.

Hier ist meine aktuelle Makro:

Private Sub CommandButton21_Click() 

    Dim userName As Variant 
    userName = InputBox("Enter your six character user ID") 
    Dim userNamePath As String 
    userNamePath = "C:\Users\" & userName & "\Desktop\Device Configurations\" 
    MkDir userNamePath 
    Dim filename As String, lineText As String 
    Dim myrng As Range, i, j 

    filename = userNamePath & "test.txt" 

    Open filename For Output As #1 

    Set myrng = Range("C1:C5, D1:D5") 

    For i = 1 To myrng.Rows.Count 

     For j = 1 To myrng.Columns.Count 
      lineText = IIf(j = 1, "", lineText & ",") & myrng.Cells(i, j) 
     Next j 
     Print #1, lineText 
    Next i 

    Close #1 
End Sub 

So bin ich einen Ordner auf dem Desktop-Benutzer die Erstellung Titel „Device configurations“ und bin fallen die Textdateien in dieses Verzeichnis. Die Textdatei heißt zu Testzwecken "test". Ich möchte diese Textdateien mit dem Namen ihrer jeweiligen Arbeitsblätter exportieren.

zum Beispiel So würde Ich mag Sheets exportieren 1, 2, 3, 4 und 5 aber nur Spalte D von jedem Arbeitsblatt, und jeder muss seine eigene Textdatei hat. Ich möchte dies mit einem einzigen Makroklick erreichen.

Antwort

1

Sie benötigen nur eine Schleife um den Code zu schreiben, wenn ich das richtig verstehen:

Sub t() 
Dim ws  As Worksheet 

Dim userName As Variant 
userName = InputBox("Enter your six character user ID") 
Dim userNamePath As String 
userNamePath = "C:\Users\" & userName & "\Desktop\Device Configurations\" 
MkDir userNamePath 
Dim filename As String, lineText As String 
Dim myrng As Range, i, j 

For Each ws In ActiveWorkbook.Sheets 
    With ws 
     filename = userNamePath & .Name & " - test.txt" ' to add the worksheet name to the text file 

     Open filename For Output As #1 

     Set myrng = .Range("C1:C5, D1:D5") 

     For i = 1 To myrng.Rows.Count 

      For j = 1 To myrng.Columns.Count 
       lineText = IIf(j = 1, "", lineText & ",") & myrng.Cells(i, j) 
      Next j 
      Print #1, lineText 
     Next i 

     Close #1 
    End With     'ws 
Next ws 

End Sub 
+1

Brucewayne dies ist die Antwort für die ich suchte. Ich werde mehr darüber nachdenken, Schleifen für zukünftige Referenz hinzuzufügen. Vielen Dank für Ihre prompte Antwort! – finessefitness73