【发布时间】:2018-04-30 21:36:20
【问题描述】:
我正在尝试使用 Excel 2010 在 VBA 中编写一个宏,该宏链接到工作表中的按钮(位于单元格 A1 中)。按下按钮时,应该生成一个删除列 A 和 B 的 CSV,以便列 C 有效地成为列 A。我还尝试根据工作表中单元格 A30 中的单元格内容命名新生成的 CSV,但是当我运行宏时,SaveAs 函数出现错误。我相信这是因为稍后在脚本中删除了单元格 A30。我的问题是哪里有一种方法可以使用 Range (A30) 来命名新的 CSV,同时仍然在稍后在新的 CSV 中删除该单元格,所有这些都在同一个 sub 中?我还是 VBA 的新手,所以我不清楚为什么这是一个问题,因为我认为每个命令都是按顺序执行的,所以一旦用新名称保存 CSV,我想我就可以了删除文件名的来源。
Sub rpSaveCSV()
Dim ws As Worksheet
Set ws = ActiveSheet
'Saves current sheet of tracker as a CSV
ws.SaveAs "Y:\Drive\Youth " & Range("A30") & " .csv", FileFormat:=xlCSV
'Copies entire sheet and pastes values to get rid of formulas
ws.Select
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
ActiveSheet.Select
Application.CutCopyMode = False
'Deletes first two columns and all remaining columns without content
Range("A:B").EntireColumn.Delete
Range("BI:XFD").EntireColumn.Delete
'Saves panel CSV
ActiveWorkbook.Save
'Opens Tracker up again
Workbooks.Open Filename:="Y:\Drive\Tracker.xlsm"
End Sub
【问题讨论】:
-
看看你是怎么得到
Dim ws As Worksheet的?那就是声明一个局部变量。您可以很好地使用Dim fileName As String和fileName = Range("A30").Value,并在以后重复使用它。 -
我在 SaveAs 功能上遇到错误 - 什么错误您究竟得到了什么?
-
至于删除文件,你可以用
Kill关键字来做...前提是kill目标是关闭的。