如何将多列Excel导出为CSV或TEXT

时间:2015-03-09 11:57:12

标签: excel excel-vba save export-to-csv vba

根据我的问题Excel merge all columns with VBA

我尝试使用宏将超过255列和2072行移动到1列中,以及Excel无法处理此操作并停止宏。由于缺乏资源,http://support.microsoft.com/kb/2655178进一步解释。这必定是一个错误,因为当我在某个列之后运行我的宏时,它会随机复制所选列的空单元格。让我没有任何删除行或撤消的方法,我被迫关闭XLSM工作表。

我试图通过将MSLS 2010中的XLSM工作表导入MS Access 2010来找到解决方法。不幸的是,MS Access也有一个限制,不会导入超过255列!由于相同的255限制限制,我也无法将XLSM表与MS Access表链接。

  

注意:我的工作表不包含任何标题

现在我想将电子表格中的每个列保存或导出到文本文档(参见示例),以便以后通过拖放到MS Access或PHP DB或Excel中来更轻松地导入它。

导出示例

column A ; column B ; column C; column D (etc. until column WC)

另存为

export0001.txt
export0002.txt
export0003.txt
export0004.txx
(etc.........)
export0999.txt

据我所知,没有内置的Excel命令或功能可以做我想要的事情。有一个我可以使用的VBA代码

Set NewBook = Workbooks.Add 
Do 
    fName = Application.GetSaveAsFilename 
Loop Until fName <> False 
NewBook.SaveAs Filename:=fName

https://msdn.microsoft.com/en-us/library/office/ff841185.aspx

1 个答案:

答案 0 :(得分:0)

参考:https://superuser.com/questions/541460/export-office-excel-table-to-csv-using-a-macro

Sub ExportTable()

    Dim wb As Workbook, wbNew As Workbook
    Dim ws As Worksheet, wsNew As Worksheet
    Dim wbNewName As String


   Set wb = ThisWorkbook
   Set ws = ActiveSheet

   Set wbNew = Workbooks.Add

   With wbNew
       Set wsNew = wbNew.Sheets("Sheet1")
       wbNewName = ws.ListObjects(1).Name
       ws.ListObjects(1).Range.Copy
       wsNew.Range("A1").PasteSpecial Paste:=xlPasteAll
       .SaveAs Filename:=wb.Path & "\" & wbNewName & ".csv", _
             FileFormat:=xlCSVMSDOS, CreateBackup:=False
   End With

End Sub