【发布时间】:2016-07-22 13:51:37
【问题描述】:
我有一个 Excel 宏(自己记录),它执行以下操作: 在 A 列 (A1-A90) 中放置了不同的公式。公式计算设置为手动。 宏
- 从 A1 复制公式
- 创建新文件
- 将公式粘贴到新建文件的 A1 中
- 计算甲醛
- 保存文件
宏代码为:
Sub Makro1()
'
' Makro1 Makro
'
Windows("macrotest.xlsx").Activate
Range("A1").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Calculate
ActiveWorkbook.SaveAs Filename:= _
"Z:\Mappe1.csv", FileFormat:=xlCSV, _
CreateBackup:=False
Windows("macrotest.xlsx").Activate
Range("A2").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Calculate
ActiveWorkbook.SaveAs Filename:= _
"Z:\Mappe2.csv", FileFormat:=xlCSV, _
CreateBackup:=False
Windows("macrotest.xlsx").Activate
Range("A3").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Calculate
ActiveWorkbook.SaveAs Filename:= _
"Z:\Mappe3.csv", FileFormat:=xlCSV, _
CreateBackup:=False
End Sub
我有超过 100 个公式,所以最好在宏中有两个循环,而不是将 100 个代码 sn-ps 粘贴到宏代码中:
- 一个循环会将 A1-A90 范围内的公式一一粘贴到创建的文件中
- 第二个循环会在保存文件时给出即将出现的文件名(不重要,哪些名称 - 1.csv 到 100.csv 就足够了)。
请指点我正确的循环。谢谢。
更新: 根据 Tim Edwards 的建议,我构建了这个宏:
Sub MyMacro()
Dim i As Integer, myname As String
myname = ThisWorkbook.Name
For i = 1 To 90
Windows(myname).Activate
Range("A" & i).Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Calculate
ActiveSheet.Calculate
ActiveWorkbook.SaveAs Filename:= _
"Z:\file" & i & ".csv", FileFormat:=xlCSV, _
CreateBackup:=False
ActiveWorkbook.Close True
Next i
End Sub
但问题在于,保存文件中的公式没有计算出来 - 我只将粘贴的公式放入 a1。
有人知道原因吗,为什么在保存之前不计算公式?我尝试了各种公式计算设置 - 自动、手动、手动保存。
【问题讨论】: