2013-06-20 21 views
6

Makro kaydedici tarafından oluşturulan bu vba kodunu aşağıda bulabilirsiniz. Bazı excel sütun ayarları ile mevcut excel sayfasına bir csv dosyası içe aktarır. Şu anda csv dosyasının yolu "C: \ Users \ myuser \ Desktop \ logexportdata.csv" olarak kodlanmıştır. Bunu nasıl değiştirebilirim ki kullanıcı, içe aktarma için .csv dosyasını bulmasını isteyen bir iletişim istemi olur mu?excel vba csv'yi açmak için açık iletişim kutusu

Sub Import_log() 

With ActiveSheet.QueryTables.Add(Connection:= _ 
    "TEXT;C:\Users\myuser\Desktop\logexportdata.csv", Destination:=Range(_ 
    "$A$2")) 
    .Name = "logexportdata" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .TextFilePromptOnRefresh = False 
    .TextFilePlatform = 437 
    .TextFileStartRow = 2 
    .TextFileParseType = xlDelimited 
    .TextFileTextQualifier = xlTextQualifierDoubleQuote 
    .TextFileConsecutiveDelimiter = False 
    .TextFileTabDelimiter = False 
    .TextFileSemicolonDelimiter = False 
    .TextFileCommaDelimiter = True 
    .TextFileSpaceDelimiter = False 
    .TextFileColumnDataTypes = Array(5, 2, 2, 2, 2, 2, 9, 9, 9, 9, 9) 
    .TextFileTrailingMinusNumbers = True 
    .Refresh BackgroundQuery:=False 
End With 
End Sub 

cevap

7

bu deneyin: çalıştığını

Sub Import_log() 

With ActiveSheet.QueryTables.Add(Connection:= _ 
    "TEXT;" & getFile, Destination:=Range(_ 
    "$A$2")) 
    .Name = "logexportdata" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .TextFilePromptOnRefresh = False 
    .TextFilePlatform = 437 
    .TextFileStartRow = 2 
    .TextFileParseType = xlDelimited 
    .TextFileTextQualifier = xlTextQualifierDoubleQuote 
    .TextFileConsecutiveDelimiter = False 
    .TextFileTabDelimiter = False 
    .TextFileSemicolonDelimiter = False 
    .TextFileCommaDelimiter = True 
    .TextFileSpaceDelimiter = False 
    .TextFileColumnDataTypes = Array(5, 2, 2, 2, 2, 2, 9, 9, 9, 9, 9) 
    .TextFileTrailingMinusNumbers = True 
    .Refresh BackgroundQuery:=False 
End With 
End Sub 


Function GetFile() As String 
Dim filename__path As Variant 
filename__path = Application.GetOpenFilename(FileFilter:="Csv (*.CSV), *.CSV", Title:="Select File To Be Opened") 
If filename__path = False Then Exit Function 
GetFile = filename__path 
End Function 
+0

! Mükemmel, teşekkür ederim! – jstevens13

İlgili konular