2012-01-02 121 views
4

我想在Excel 2010上打開我的CSV(逗號分隔)文件並自動將文本轉換爲列,然後選擇所有活動單元格並插入表頭。導入CSV到Excel - 自動「文本到列」和「插入表」

是否可以添加一個按鈕到我的功能區,這將爲我做這一切?

我經常使用不同大小的CSV文件,我發現每次手動操作都有點痛苦。

+4

首先打開宏記錄器,打開並存儲文件並關閉宏記錄器。研究保存的宏。對於您的工作宏,參數將是:文件名稱,目標工作表,位置等。您打算使用InputBox還是文件對話框?你的問題位已經被問及回答,所以看看最近的問題。標記「excel-vba」將是最相關的。在回答關於任何剩餘問題的問題之前儘可能地發現自己的想法。祝你好運。 – 2012-01-02 13:21:03

回答

2

有點晚了這一點,但我只是碰到這個問題跑了......

這是從選擇器中選擇特定文件:

Sub OpenCSV() 
    Dim fd As FileDialog 
    Set fd = Application.FileDialog(msoFileDialogFilePicker) 
    fd.AllowMultiSelect = True 
    fd.Show 
    For Each fileItem In fd.SelectedItems 
     Workbooks.OpenText Filename:= _ 
      fileItem _ 
      , Origin:=65001, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ 
      xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ 
      Comma:=False, Space:=False, Other:=False, TrailingMinusNumbers:=True 
    Next 
End Sub 

這將在選定打開所有CSV文件文件夾:

Sub OpenCSVFolder() 
    Dim fd As FileDialog 
    Set fd = Application.FileDialog(msoFileDialogFolderPicker) 
    fd.AllowMultiSelect = True 
    fd.Show 
    For Each folderItem In fd.SelectedItems 
     fileItem = Dir(folderItem & "\" & "*.csv") 
     While fileItem <> "" 
      Workbooks.OpenText Filename:= _ 
       folderItem & "\" & fileItem _ 
       , Origin:=65001, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ 
       xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ 
       Comma:=False, Space:=False, Other:=False, TrailingMinusNumbers:=True 
      fileItem = Dir 
     Wend 
    Next 
End Sub 

注意,這些文件被設置爲Tab Delimited - 通過更新Tab:=TrueComma:=False參數變化的分隔符。