【问题标题】:Excel macro loops for taking values from a range of cells and filenamingExcel 宏循环,用于从一系列单元格和文件命名中获取值
【发布时间】: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。

有人知道原因吗,为什么在保存之前不计算公式?我尝试了各种公式计算设置 - 自动、手动、手动保存。

【问题讨论】:

    标签: excel loops vba


    【解决方案1】:
    Sub Makro1()
    Dim i as integer
    For i = 1 to 100
    
       Windows("macrotest.xlsx").Activate
       Range("A" & i).Copy
       Workbooks.Add
       ActiveSheet.Paste
       Application.CutCopyMode = False
        Calculate
       ActiveWorkbook.SaveAs Filename:= "Z:\Mappe" & i & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    
    Next i
    End Sub
    

    【讨论】:

      【解决方案2】:

      做一个从 1 到 90 的循环。

          For i = 1 To 90
      
      
          Next i
      

      在每次迭代中:

      • 从 Cells(i, 1) 中获取公式。
      • 粘贴到新工作簿中并计算。
      • 将工作簿另存为“目录..”+ i +“.csv”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-17
        • 2017-04-14
        • 1970-01-01
        相关资源
        最近更新 更多