在Excel 2007中自动执行文本导入

Chr*_*ris 2 excel vba excel-vba

我正在尝试使用VBA编写Excel宏来自动将CSV文本导入电子表格,但我以前从未这样做过.我需要确保每次出现的文本导入向导都以相同的方式运行.我需要采取的步骤是:

  1. 使用打开的文件对话框打开文件
  2. 将类型设置为分隔
  3. 将分隔符设置为逗号
  4. 将要导入的所有列设置为Text
  5. 自动适合所有列

我似乎无法浏览显示如何执行这些操作(如打开文件)的文档.即使能够从那里开始也会有所帮助.

Rob*_*rns 5

下面的代码将允许用户浏览csv文件.
它会:

  • 打开所选文件,将数据视为文本
  • 调整列的大小
  • 将数据移动到运行代码的工作簿中.

.opentext代码需要根据源数据中的列数进行更新.

Sub ImportCSV()

Dim vPath As Variant
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet

Set wb = Excel.ActiveWorkbook
Set ws = Excel.ActiveSheet

vPath = Application.GetOpenFilename("CSV (Comma Delimited) (*.csv),*.csv" _
, 1, "Select a file", , False)
''//Show the file open dialog to allow user to select a CSV file

If vPath = False Then Exit Sub
''//Exit macro if no file selected

Workbooks.OpenText Filename:=vPath, Origin:=xlMSDOS, StartRow:=1 _
    , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Comma:=True _
    , FieldInfo:=Array(Array(1, xlTextFormat), Array(2, xlTextFormat), _
    Array(3, xlTextFormat))
''//The fieldinfo array needs to be extended to match your number of columns

Columns.EntireColumn.AutoFit
''//Resize the columns

Sheets(1).Move Before:=wb.Sheets(1)
''//Move the data into the Workbook

End Sub
Run Code Online (Sandbox Code Playgroud)