2016-11-10 2 views
0

Я надеюсь, что это можно сделать так, как я уже нашел, что Excel не поддерживает относительные пути для соединений с книгой. Здесь у нас есть книга Excel, которая автоматически обновляет листы из файлов CSV. Они извлекают данные из жестко закодированной папки (c: \ temp \ premiumreports \ name_of_CSV_file.csv). Этот метод заставляет меня поместить все в каталог c: \ temp \ premiumreports каждый раз, или если я отправлю файл клиенту, он должен создать ту же структуру каталогов. То, что я хотел бы сделать, - поместить файл xlsx в любую папку (c: \ report или рабочий стол пользователя) с необходимыми CSV-файлами, и когда я открою xlsx, данные будут импортированы автоматически. Это возможно?Относительные пути в Excel для импорта CSV

Текущий Workbook соединения

enter image description here Спасибо!

ответ

0

Если файл рабочей книги всегда находится в той же папке, что и файл CSV, вы можете использовать метод ActiveWorkbook.Path для установки относительного пути.

Пример предполагая имя CSV файла и имя соединения одинаковы:

Sub refreshMsgConnection() 
    Dim csvFileName As String 
    csvFileName = "msg_by_weeks.csv" 

    Dim filePath As String 
    filePath = ActiveWorkbook.path 

    Dim conString As String 
    conString = "TEXT;" & filePath & "\" & csvFileName 

    With ActiveWorkbook.Connections("msg_by_weeks").Ranges.Item(1).QueryTable 
     .connection = conString 
     .TextFilePlatform = 437 
     .TextFileStartRow = 1 
     .TextFileParseType = xlDelimited 
     .TextFileTextQualifier = xlTextQualifierDoubleQuote 
     .TextFileConsecutiveDelimiter = False 
     .TextFileTabDelimiter = False 
     .TextFileSemicolonDelimiter = False 
     .TextFileCommaDelimiter = True 
     .TextFileSpaceDelimiter = False 
     .TextFileColumnDataTypes = Array(1, 1, 1, 1) 
     .TextFileTrailingMinusNumbers = True 
     .TextFilePromptOnRefresh = False 
     .Refresh BackgroundQuery:=False 
    End With 
End Sub 

Вы, возможно, придется играть с некоторыми настройками в зависимости от конфигурации, такие как разделители и т.д. Если у вас возникли проблемы, запись макрос при настройке нового соединения с нужным форматом, а затем скопируйте настройки в этом разделе.

Если файл не найден, он отобразит окно выбора файла, чтобы пользователь мог найти нужный файл.

+0

Наконец-то, попробовав эту попытку, я получаю ошибку 1004. Когда вы отправляетесь на отладку, я указываю на эту строку. С ActiveWorkbook.Connections ("msg_by_weeks"). Ranges.Item (1) .QueryTable –

Смежные вопросы