Excel: зміна джерела даних за допомогою макросу


1

Я використовую файл CSV (згенерований програмою річ-учасників) як зовнішній джерело даних, і я хотів би змінити його шлях від макросу ... Як це зробити?

Іншою прийнятною відповіддю на мою проблему буде спосіб вказати шлях відносно файлу excel - не знайшов як - з огляду на те, що в моєму випадку і csv, і xls знаходяться в одному каталозі.


Ви можете посилатися на зовнішні дані у формулі, це те, що ви хочете зробити? Ви можете посилатися на абсолютний шлях до файлу. Ви шукаєте посилання на відносний шлях до файлу? посилання Тут ви можете побачити, як посилатися і абсолютно, і відносно
Raystafarian

Я не посилаюся на зовнішнє Excel Файл, що не використовує формулу (просто імпортує дані, використовуючи дані Tab.
gregseth

Таким чином, ви хочете, щоб макрос імпортувати дані з csv?
Raystafarian

Ні, не дуже. Я зробив це за допомогою власної функції Excel: Data>From text>... і налаштував мій CSV і всі інші. Я хочу, щоб ми могли просто змінити шлях до файлу з вже існує джерело даних.
gregseth

Яку версію excel ви використовуєте? Також ви не можете піти data -> existing connections -> select connection -> right click edit connection properties -> definition tab -> browse Це дозволить вам змінити його, ви шукаєте, щоб автоматизувати цей процес, так що ви можете ввести в який ви хочете сказати, осередок A1 і це буде запускати макрос у зв'язку з тим, що ви ввели?
Raystafarian

Відповіді:


1
Sub Import()
    Dim FilePath As String
    FilePath = "TEXT;C:\directory\" & Cells(1, 1).Value
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.QueryTables.Add(Connection:=FilePath, Destination:=Range("$A$1"))
        .Name = "Book1"
        .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)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With

End Sub

Це створить новий аркуш із даними, коли ви помістіть файл (наприклад, book3.csv) в аркуші1 A1; ви змінюєте каталог C: в каталог, в якому ваш вхід існує, і ви можете змінити діапазон виведення в рядку 5 "Діапазон"

Крім того, лінія 3 "Клітинки (1,1)" вказує на клітинку введення, тому ви можете змінити її з Sheet1 A1, якщо ви хочете. Просто запустіть цей макрос, і ви отримаєте новий аркуш з цільовими даними.Якщо вам потрібна нова робоча книга або щоб вона вставила його в існуючий аркуш, дайте мені знати.

Крім того, якщо ви подивитеся на властивості цього файлу, розділеного комами, ви можете змінити це або просто записати власний макрос (вкладка розробника - & gt; макрос запису) і вставити команди типу FilePath у верхню частину та змінити команду підключення


ОК здорово! Не вдалося перевірити, що зараз, я перегляну це пізніше. Дякую.
gregseth
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.