2016-07-06 9 views
0

Ich habe Code verwendet, den ich hier gefunden habe, um mit der Konvertierung einer großen Liste von Excel-CSV-Dateien nach Excel 2003 zu beginnen. Während des Konvertierens wollte ich einen Standardordner für den Speicherort öffnen und dann zum richtigen Unterordner navigieren, in dem sich die CSV-Dateien befinden. Beim Durchlaufen des Codes wird jedoch keine meiner Variablen aufgefüllt. Mein Code ist unten und die Variable, die nicht gefüllt wird, ist strDir.Verwenden Sie die Funktion getfolder, um in einen Standardordner zu wechseln, und wählen Sie den Unterordner

Ich möchte Code, um strDir mit dem Standard-Speicherort + den Ordner, den ich wählen, zu füllen, aber ich bin mir nicht sicher, was ich mit diesem Code tun muss, um es zu tun.

Im Moment habe ich nur den Standardstandort hart-codiert und wenn Code läuft, öffnet sich dieser Ort. Aber wenn ich den Unterordner wähle, wie nehme ich das programmatisch auf?

Ich weiß, was ich tun möchte, aber wie dies in VBA zu erreichen ist meine Frage.

Public Sub CSV_to_XLS() 


Dim wb As Workbook 
Dim strFile As String 
Dim strDir As String 
Dim strDirCapture As String 

'Set base directory for get folder to manipulate csv files 

strDirCapture = GetFolder("\\DEVP-APPS-07\File Storgae\1_Pending\") 

'strDir = strDirCapture 
strDir = strDirCapture & "\" 
strFile = Dir(strDir & "*.csv") 

MsgBox "String directory path = " & strDirCapture 
MsgBox "StrFile = " & strFile 

Do While strFile <> "" 



    'Set wb = Workbooks.Open(Filename:=strDir & strFile, Local:=True) 
    'wb.SaveAs Replace(wb.FullName, ".csv", ".xls"), 56 'UPDATE: 
    wb.Close True 

    Set wb = Nothing 
    strFile = Dir 
Loop 

End Sub 


Function GetFolder(strPath As String) As String 
Dim fldr As FileDialog 
Dim sItem As String 
Set fldr = Application.FileDialog(msoFileDialogFolderPicker) 
With fldr 
    .Title = "Select a Folder" 
    .AllowMultiSelect = False 
    .InitialFileName = strPath 
    If .Show <> -1 Then GoTo NextCode 
    sItem = .SelectedItems(1) 
End With 
NextCode: 
GetFolder = sItem 
Set fldr = Nothing 
End Function 

Vielen Dank

Andrew

aktualisieren Hinzufügen Schrägstrich "\" des Verzeichnisses zu beenden gefangen scheint dies behoben zu haben. Haben den Code oben geändert, um diese Änderung widerzuspiegeln.

+1

erleben Sie einen Fehler mit 'GetFolder'? Scheint gut für mich zu funktionieren. –

+0

@Robin kein Fehler, es lädt keine der Dateien, die ich jedoch verarbeiten möchte. 'MsgBox "StrFile =" & strFile' zeigt leer an. strDir akzeptiert den Wert ok und der ausgewählte Ordner wird übernommen, aber keine der Dateien wird in Excel konvertiert. – Andrew

Antwort

1

versuchen, diese Zeilen nach strDir = strDirCapture Zugabe:

If Right(strDir, 1) <> "\" Then 
    strDir = strDir & "\" 
End If 
+0

Ich habe dies gerade beim nochmaligen Betrachten festgestellt, dass der Schrägstrich am Ende des Verzeichnispfads fehlte, also fügte ich hinzu, dass es funktionierte. Vielen Dank für den eloquenteren Code, den Sie oben @welgen angegeben haben. werde das hinzufügen. – Andrew

Verwandte Themen