Excel 2007, VBA импортирует новые CSV-файлы для обновления существующей вкладки - PullRequest
1 голос
/ 19 июля 2011

Я только что познакомился с языком VBA и был бы признателен за любую помощь. Я пытаюсь написать программу, которая обновляет существующую вкладку новым файлом. Вот что у меня есть:

Sub ImportFile()
'
' ImportFile Macro
'
' Keyboard Shortcut: Ctrl+Shift+I

    ' Clears active sheet
    Cells.Select
    Selection.ClearContents
    Range("A1").Select

    ' "Open" prompt window
    Dim aFile As String
    aFile = Application.GetOpenFilename(FileFilter:="Comma separated values files, *.csv")
    If aFile = "False" Then Exit Sub



    ' Import .csv file to active sheet
     With ActiveSheet.QueryTables.Add(Connection:= _
       "TEXT;C:\Users\jiarui.hou.THRUBIT\Desktop\thrubit\data\PS25R_175c_20110711_proc1.csv" _
        , Destination:=Range("$A$1"))
        .Name = "PS25R_175c_20110711_proc1"
        .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 = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Но проблема в первых двух строках третьей части, она направлена ​​на определенный файл. Но я хочу, чтобы программа импортировала ЛЮБОЙ файл, который я специально выбрал. Я предполагаю, что я спрашиваю, как мне связать вторую часть, которая предлагает окно для открытия файла, с третьей частью, которая связывает этот адрес каталога вместо текущего КОНКРЕТНОГО адреса каталога.

1 Ответ

0 голосов
/ 19 июля 2011

Используйте оператор конкатенации & и задайте строку, передаваемую для соединения, "TEXT;" & aFile

 With ActiveSheet.QueryTables.Add(Connection:= "TEXT;" & aFile, Destination:=Range("$A$1"))

Кроме того, я думаю, что вместо "False" вы хотите False на 7-й строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...