Excel: ganti sumber data dengan makro

1

Saya menggunakan file CSV (dihasilkan oleh program pesta hal) sebagai sumber data eksternal, dan saya ingin mengubah jalurnya dari makro ... Bagaimana saya bisa melakukannya?

Jawaban lain yang dapat diterima untuk masalah saya adalah cara untuk menentukan path relatif ke file excel — belum menemukan caranya — mengingat bahwa dalam kasus saya, csv dan xls berada di direktori yang sama.

gregseth
sumber
Anda dapat mereferensikan data eksternal dalam formula, apakah itu yang ingin Anda lakukan? Anda dapat merujuk path absolut ke file. Anda mencari referensi jalur relatif ke file? link di sini Anda dapat melihat bagaimana referensi secara absolut dan relatif
Raystafarian
Saya tidak mereferensikan eksternal Unggul file, tidak menggunakan rumus (hanya mengimpor data, menggunakan Tab data.
gregseth
Jadi Anda ingin makro mengimpor data dari csv?
Raystafarian
Tidak terlalu. Saya melakukannya dengan fungsi asli Excel: Data>From text>... dan mengkonfigurasi CSV saya dan semuanya. Yang saya inginkan adalah bisa berubah secara adil jalur file dari sudah ada sumber data.
gregseth
Versi excel mana yang Anda gunakan? Anda juga tidak bisa pergi ke data -> existing connections -> select connection -> right click edit connection properties -> definition tab -> browse Ini akan memungkinkan Anda untuk mengubahnya, apakah Anda ingin mengotomatiskan proses tersebut sehingga Anda dapat mengetik di mana yang ingin Anda katakan, sel A1 dan itu akan menjalankan makro mengacu pada apa yang Anda masukkan?
Raystafarian

Jawaban:

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

Ini akan membuat lembar baru dengan data ketika Anda meletakkan file (book3.csv misalnya) di sheet1 A1; Anda mengubah direktori C: \ ke direktori di mana input Anda ada dan Anda dapat mengubah rentang output di baris 5 "Range"

Selain itu, baris 3 "Sel (1,1) menunjukkan sel input, sehingga Anda dapat mengubahnya dari Sheet1 A1 jika Anda mau. Anda perlu menunjukkan ekstensi file di sel referensi, jika tidak maka tidak akan tahu file apa yang akan impor. Cukup jalankan makro ini dan Anda akan mendapatkan lembar baru dengan data target. Jika Anda membutuhkan buku kerja baru atau untuk memasukkannya ke lembar yang ada, beri tahu saya.

Selain itu, jika Anda melihat properti ini adalah file yang dibatasi koma, Anda dapat mengubahnya, atau cukup merekam makro Anda sendiri (tab pengembang - & gt; merekam makro) dan menyisipkan perintah jenis FilePath di bagian atas dan mengubah perintah koneksi

Raystafarian
sumber
OK bagus! Tidak dapat memeriksa itu sekarang, saya akan memeriksanya nanti. Terima kasih.
gregseth