VBA将单元格内容作为文件保存路径?

诉求:编辑“另存为”的VBA代码来实现根据D3单元格内容保存报表到相应路径,D3单元格可能出现的内容有:苹果、香蕉,桔子,火龙果,猕猴桃,榴莲等如:D3单元格为香蕉,则保存到D:\日报\2023年日报表\香蕉

这段代码将根据D3单元格的内容将当前工作表另存为一个新文件,保存到相应的文件夹。
Sub SaveWorkbookByCellContent()
Dim ws As Worksheet
Dim folderPath As String
Dim fileName As String
Dim fileExtension As String
Dim cellContent As String
Set ws = ThisWorkbook.Worksheets("Sheet1") ' 更改为您需要保存的工作表名称
cellContent = ws.Range("D3").Value
folderPath = "D:\日报\2023年日报表\" & cellContent & "\"
If Len(Dir(folderPath, vbDirectory)) = 0 Then
MkDir folderPath
End If
fileName = "报表_" & Format(Now(), "yyyyMMdd") ' 根据需要更改文件名和日期格式
' 获取当前工作簿的默认文件扩展名
fileExtension = Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, "."))
' 保存文件到指定路径
ws.Copy
With ActiveWorkbook
.SaveAs folderPath & fileName & fileExtension
.Close False
End With
End Sub
在使用此代码之前,请确保将ws变量中的工作表名称更改为您需要保存的工作表名称。此代码将根据D3单元格的内容创建文件夹(如果不存在),然后将工作表另存为该文件夹中的一个新文件。文件名将包含报表和当前日期。
温馨提示:内容为网友见解,仅供参考
第1个回答  2023-04-14

顺手 一写,没测试,你自己测。

Sub 另存为测试()

'检查D3是否已填写

If Range("D3").Value = "" Then '如果是空的

MsgBox "D3单元格不能为空!", 16

Exit Sub '退出

End If

'检查路径是否存在

Dim ipath As String

ipath = "D:\日报\2023年日报表\" & Range("D3").Value & "\" '连接出文件夹的路径

If Dir(ipath, vbDirectory) = "" Then '如果路径不存在

MsgBox "该路径不存在", 16

Exit Sub '退出

End If

'若文件存在则询问是否覆盖

ipath = ipath & ThisWorkbook.Name '再连接上这个工作簿的文件名

If Not Dir(ipath, vbDirectory) = "" Then '如果文件存在

If MsgBox("该文件已存在," & vbLf & "是否强行覆盖?", 1 + 32) = vbCancel Then '若对话框返回值是vbCancel

Exit Sub '用户点了"否"则退出

End If

End If

'执行另存为命令并提示

ActiveWorkbook.SaveAs Filename:=ipath '另存为

MsgBox "保存成功!" & vbLf & "文件路径:" & vbLf & ipath, 64

End Sub

VBA将单元格内容作为文件保存路径?
' 保存文件到指定路径 ws.Copy With ActiveWorkbook .SaveAs folderPath & fileName & fileExtension .Close False End With End Sub 在使用此代码之前,请确保将ws变量中的工作表名称更改为您需要保存的工作表名称。此代码将根据D3单元格的内容创建文件夹(如果不存在),然后将工作表另存为该文件夹...

EXCEL中VBA以单元格内容作为为文件名另存?
代码中保存文件并命名的语句是:.saveas "c:\\aaa.xlsx"要改变路径和名称修改引号里面的内容就可以了,例如:.saveas "c:\\" & [e1] & "-" [e2] & ".xlsx"

如何用EXCELVBA保存文件
6、输入以下语句:Sheet1.Cells(1, 3) = Sheet1.Cells(1, 1) + Sheet1.Cells(1, 2)意为将A1、B1单元格求和并放在C1单元格 7、点击保存,然后关闭VBA窗口 8、由于A1,B1没有数据,所以C1为0 9、输入数据后,会发现即使按了回车,C1也不变,因为设置的是双击鼠标左键触发。10、就可以用EXC...

如何用EXCELVBA保存文件
6、输入以下语句:Sheet1.Cells(1, 3) = Sheet1.Cells(1, 1) + Sheet1.Cells(1, 2)意为将A1、B1单元格求和并放在C1单元格 7、点击保存,然后关闭VBA窗口 8、由于A1,B1没有数据,所以C1为0 9、输入数据后,会发现即使按了回车,C1也不变,因为设置的是双击鼠标左键触发。10、就可以用EXC...

excel 怎么用vba实现每一行单独保存为一个文件(重点:包含原批注)?
在程序开始执行后保存当前工作表,添加下面的语句:Dim src as WorkSheet Set src = ActiveSheet 赋值的With里面添加两个语句,添加后为:With .Sheets(1)src.Range("A1:" & strEndC1 & "1").Copy .Range("A1:" & strEndC1 & "1").Range("A1:" & strEndC1 & "1") = topR src....

excel如何通过vba将工作表1的某些单元格的值保存到另一张表的对应位置...
把两张表格发到57321522@qq。com

VBA如何实际点击保存文件名根据单元格内容命名保存?
反问你一个问题,任意文件在处于打开或者编辑的状态时,你有办法把文件的名称修改掉吗?所以在保存时自动改名是无法实现的,但另存是可以的。

excel中如何使用vba实现将另一个文件以某单元格内容为文件名保存
savecopyas 是复制,还会保留原先的格式 另存为一下xlsx就好了,FileFormat:=xlOpenXMLWorkbook ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & Range("Q3").Value & ".xlsx", FileFormat:=xlOpenXMLWorkbook

求VBA中如何引用指定单元格文本内容为文件名的.bat文件
假设.BAT文件与工作簿文件在同一文件夹中,Alt+F11,双击你指的“A1”所在的工作表,将下面代码复制上 ,保存后关闭。然后点击菜单栏:“工具”——“宏”——“宏”出现类似附图,点执行即可。Public Sub ttt()Dim FileBat As String Dim appPath As String appPath = ActiveWorkbook.Path FileBat...

vba用多个单元格内容选取表格另存为
Sub 另存为()m = Cells(1, 1)ActiveWorkbook.SaveAs Filename:= _"C:\\Documents and Settings\\Administrator\\桌面\\" & m & ".xls"End Sub

相似回答
大家正在搜