使用 VBA 将单元格区域导出到新的 .csv 文件中并保存而不覆盖

Posted

技术标签:

【中文标题】使用 VBA 将单元格区域导出到新的 .csv 文件中并保存而不覆盖【英文标题】:Export a cell range into a new .csv file with VBA and save it without overwriting 【发布时间】:2015-11-05 05:08:06 【问题描述】:

我要做的就是复制、粘贴一个单元格区域到一个新的 CSV 文件中,然后用 VBA 保存新文件。我可能会多次将此 VBA 用于此文件。所以,我想让它用数字保存文件。

我正在使用下面的代码并且它正在工作:

Sub ExportRangetoFile()
Dim Rng As Range
Dim WorkRng As Range
Dim xFile As Variant
Dim xFileString As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ActiveSheet.Copy
Application.ActiveSheet.Cells.Clear
WorkRng.Copy Application.ActiveSheet.Range("A1")
Set xFile = CreateObject("Scripting.FileSystemObject")
ActiveWorkbook.SaveAs Filename:="C:\Users\User\Desktop\Range.csv", FileFormat:=xlCSV, CreateBackup:=False
End Sub

我从原始excel文件中选择的单元格范围保存的文件称为范围。我想更改代码并使其保存文件而不覆盖任何其他文件。

我认为这是我应该改变的部分:

ActiveWorkbook.SaveAs Filename:="C:\Users\User\Desktop\Range.csv", FileFormat:=xlCSV, CreateBackup:=False

我尝试将“False”更改为“True”,但没有成功。也许是另一个原因。

【问题讨论】:

【参考方案1】:

我刚刚重读了 ?再次。您需要的是一种获取新号码并将其添加到文件名的方法。

FiNum = ... 'get file number from a text file
FiName = "C:\Users\User\Desktop\Range" & FiNum & ".csv"
ActiveWorkbook.SaveAs Filename:=FiName, FileFormat:=xlCSV, CreateBackup:=False
FiNum = FiNum + 1
Call WriteToFile(FiNum)  ... 'write file number back to text file

Sub WriteToFile(ByVal FiNum As Long)
    Open "C:\FiNumber.txt" For Output As #1
    Print #1, CStr(FiNum) 'print as string for optimum results
    Close #1
End Sub

【讨论】:

以上是关于使用 VBA 将单元格区域导出到新的 .csv 文件中并保存而不覆盖的主要内容,如果未能解决你的问题,请参考以下文章

excel vba自动图片导入

vba 怎么将单元格区域赋值给数组

使用 VBA 将 Excel 重命名为 CSV

使用excel vba将特定文本行保留在单元格中以获取特定起始字母

将数据从集合视图单元格移动到新的集合视图单元格

VBA 将 excel 单元格数据导出到 .txt 文件中