• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Excel VBA 將資料匯出成 CSV 檔案教學與範例

介紹如何在 Excel 中使用 VBA 巨集將表格資料匯出為逗點分隔(csv)檔案。

另存為 CSV 檔案

若要將指定的工作表另存為 CSV 檔案,可以在選擇工作表之後,將工作表先複製到新的活頁簿中,再使用 Workbook.SaveAs 方法將活頁簿另存為 CSV 檔案:

' 選擇工作表
ThisWorkbook.Sheets("工作表1").Activate

' 將目前選擇的工作表複製至新的活頁簿
ActiveSheet.Copy

' 另存新檔
With ActiveWorkbook
    .SaveAs Filename:=myCSVFileName, FileFormat:=xlCSV, CreateBackup:=False ' 另存新檔
    .Saved = True  ' 避免出現儲存提示
    .Close         ' 關閉活頁簿
End With
Excel 以 VBA 另存為 CSV 檔案
Excel 以 VBA 另存為 CSV 檔案

這裡在另存新檔之前,先把工作表複製一份出來,可以避免在另存新檔之後影響到原本的 Excel 活頁簿。

另存為 UTF8 編碼 CSV 檔案

如果想要將 Excel 工作表匯出為 UTF8 編碼的 CSV 檔案,可以在呼叫 Workbook.SaveAs 方法的時候,將 FileFormat 參數設定為 xlCSVUTF8:

' 選擇工作表
ThisWorkbook.Sheets("工作表1").Activate

' 將目前選擇的工作表複製至新的活頁簿
ActiveSheet.Copy

' 另存新檔
With ActiveWorkbook
    .SaveAs Filename:=myCSVFileName, FileFormat:=xlCSVUTF8, CreateBackup:=False ' 另存為 UTF8 編碼的 CSV 檔案
    .Saved = True  ' 避免出現儲存提示
    .Close         ' 關閉活頁簿
End With

將所有工作表匯出為 CSV 檔案

若要將 Excel 活頁簿中的所有工作表全部都匯出為 CSV 檔案,可以搭配 For Each 迴圈對每一張工作表逐一匯出:

Dim ws As Worksheet
Dim csvFilename As String
Dim csvDir As String

' 設定放置匯出 CSV 檔案的目錄
csvDir = ThisWorkbook.Path

' 對每一張工作表逐一處理
For Each ws In ActiveWorkbook.Worksheets

    ' 將工作表複製至新的活頁簿
    ws.Copy

    ' 設定匯出的 CSV 檔案名稱
    csvFilename = csvDir & "\" & ws.Name & ".csv"

    ' 將目前活頁簿另存為 CSV 檔案
    With ActiveWorkbook
        .SaveAs Filename:=csvFilename, FileFormat:=xlCSV, CreateBackup:=False ' 另存為 CSV 檔案
        .Saved = True  ' 避免出現儲存提示
        .Close         ' 關閉活頁簿
    End With

Next

這段 VBA 巨集程式碼在執行之後,會自動匯出目前 Excel 活頁簿中的每一張工作表,而每個 CSV 檔案則以工作表的名稱命名,儲存在原本 Excel 檔案的目錄中。

多 Excel 檔案批次匯出為 CSV 檔案

如果需要將指定目錄之下的所有 Excel 檔案批次轉換成 CSV 檔案,可以參考以下 VBA 巨集:

Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object

' 所有 Excel 檔案放置的目錄
rootFolder = "C:\OfficeGuide\Excel"

' 建立 FileSystemObject 物件
Set oFSO = CreateObject("Scripting.FileSystemObject")

' 建立目錄物件
Set oFolder = oFSO.GetFolder(rootFolder)

' 逐一處理每個 Excel 檔案
For Each oFile In oFolder.Files

    ' 建立此 Excel 檔案輸出 CSV 檔案的目錄
    outputFolder = rootFolder & "\" & oFSO.GetBaseName(oFile.Name)
    MkDir outputFolder

    ' 開啟 Excel 檔案
    excelFilePath = rootFolder & "\" & oFile.Name
    Set wb = Workbooks.Open(excelFilePath)

    ' 對此 Excel 檔案的每一張工作表逐一處理
    For Each ws In wb.Worksheets

        ' 將工作表複製至新的活頁簿
        ws.Copy

        ' 設定匯出的 CSV 檔案名稱
        csvFilename = outputFolder & "\" & ws.Name & ".csv"

        ' 將目前活頁簿另存為 CSV 檔案
        With ActiveWorkbook
            .SaveAs Filename:=csvFilename, FileFormat:=xlCSV, CreateBackup:=False ' 另存為 CSV 檔案
            .Saved = True  ' 避免出現儲存提示
            .Close         ' 關閉活頁簿
        End With

    Next

    ' 關閉 Excel 檔案
    wb.Saved = True
    wb.Close

Next oFile

參考資料

  • Learn Excel Macro:Top 4 VBA Methods to Export Excel data as CSV File
  • analysistabs:VBA code to convert excel to csv
  • ExtendOffice:How To Save, Export Multiple/All Sheets To Separate Csv Or Text Files In Excel?

分類:Excel 標籤:VBA

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide