2012-01-02 125 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参数变化的分隔符。