我正在尝试使用VBA保存文件,但文件名需要引用我正在运行宏的工作簿中的单元格。
我需要将启用宏的工作簿中的选项卡中的数据复制到新的逗号分隔文本文件中。文本文件(输出文件)的名称应包含对正在运行宏的工作簿中的单元格的引用。
我遇到的另一个问题是我想将输出文件中的分隔符更改为管道分隔文件,而不是逗号分隔文件。这可能吗?
这就是我试过的
Sheets("Cash Sheet").Select
Rows("1:100000").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs fileName:= _
"C:\Desktop\CashBook_\" & Range("E3") & ".txt", FileFormat:=xlCSV,
CreateBackup:=False
ActiveWindow.Close
Sheets("Control Sheet").Select
Range("A1").Select
答案 0 :(得分:1)
问题在于:
ActiveWorkbook.SaveAs Filename:="C:\Desktop\CashBook_\" & Range("E3") & ".txt", FileFormat:=xlCSV, CreateBackup:=False
代码将引用您尝试保存的新工作簿中的单元格E3。
要修复,我会将文件的名称作为变量,然后将其传递给.SaveAs
Dim SaveName As String
SaveName = Range("A1").Value
...
ActiveWorkbook.SaveAs Filename:="C:\temp\" & SaveName & ".txt", FileFormat:=xlCSV, CreateBackup:=False
答案 1 :(得分:1)
如果它在包含宏的文件中,则为
ActiveWorkbook.SaveAs Filename:= _
"C:\Temp\" & ThisWorkbook.Sheets("Whatever").Range("E3").text & ".txt", FileFormat:=xlCSV, _
CreateBackup:=False
答案 2 :(得分:1)
范围(“E3”)有一个日期(也许是2017年12月31日)您使用yyyymm
的单元格格式来显示201712
。
您认为自己试图保存为201712.txt,但实际上您正在尝试保存为12/31 / 2017.txt,这是一个非法的文件名。
使用单元格的.Text属性来使用单元格显示的内容,而不是基础值。
ActiveWorkbook.SaveAs fileName:= _
"C:\Desktop\CashBook_\" & Range("E3").Text & ".txt", FileFormat:=xlCSV,
CreateBackup:=False