excel - 循环 Excel 另存为
问题描述
我很难尝试运行此代码。我的目标是保存为主文件(“数据条目”)并具有基于另一个 excel 文件(“Book1”)的文件扩展名。这是我的代码:
Sub SaveAsLoop()
Dim wkb As Workbook
Dim fp, en, strName As String
Dim cRng, c as Range
Set cRng = Sheet1.Range("A1",Range("A121").End(xlup))
For Each c In cRng
strName = c.Value
Set wkb = Workbooks.Open("C:\Users\Desktop\WFH\data entry.xlsm")
fp = "C:\Users\Desktop\WFH\"
mfn = "data entry - "
en = "xlsm"
wkb.SaveAs Filename:=fp & mfn & strName & en, FileFormat:=52
ActiveWorkbook.Close
Next c
End Sub
Book1 的单元格 A1 到单元格 A121 包含 121 个国家/地区,我想创建 121 个数据 entry.xlsm 副本并具有基于单元格引用的扩展名。例如;
Sheet1
A1 | Afghanistan
A2 | Algeria
... ...
A121 | Serbia
并且输出应该是 121 个带有文件扩展名的 excel 文件,例如“数据输入 - 阿富汗”、“数据输入 - 阿尔及利亚”、...、“数据输入 - 塞尔维亚”。
问题是,循环不工作,只能工作一次,输出只有 1 个文件,文件名使用单元格 A1(“数据输入 - 阿富汗”)。
解决方案
无需在每个循环中打开要复制的工作簿。打开一次并使用SaveCopyAs
:
Sub SaveAsLoop()
Dim wkb As Workbook
Dim fp As String, mfn As String, en As String, strName As String
Dim cRng As Range, c As Range
Set cRng = Sheet1.Range("A1:A" & Sheet1.Range("A" & Rows.count).End(xlUp).Row)
fp = "C:\Users\Desktop\WFH\"
mfn = "data entry - "
en = ".xlsm"
Set wkb = Workbooks.Open(fp & "data entry.xlsm")
For Each c In cRng
strName = c.value
wkb.SaveCopyAs (fp & mfn & strName & en)
Next c
End Sub
推荐阅读
- excel - Excel VBA - 导入 .txt 时保留源格式
- javascript - 导入 jquery 的 $ 并导出
- r - 重复灵活表的表分配
- vector - 为什么simulink中的电池块不接受向量?
- azure-devops - 从 Azure Devops 任务捕获输出 JSON 结果
- colors - 在 Dreamweaver 2022 中更改模板文本的代码颜色时出现问题
- python - 具有可调整大小的左面板的 tkinter GUI:可调整大小的箭头指示器外观问题
- linux - bash:如何用部分内容替换文本文件中的整行
- javascript - 如何在基于EditText的软键盘中显示额外的数字行?
- arrays - 并行(非阻塞)写入/批量读取数据数组的快速方法?