2016-07-22 47 views
-2

我有一個Excel宏(自己記錄),它具有以下內容: 列A(A1-A90)中放置了不同的公式。公式計算設置爲手動。 從A1宏Excel宏循環用於從單元格範圍和文件提取中獲取值

  • 複製公式
  • 創建新的文件
  • 膏配方到新創建的文件
  • 的A1計算formel
  • 保存文件

宏代碼是:

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代碼段成宏代碼兩個循環:

  • 一個循環將採取公式從A1-A90的範圍內一個接一個地粘貼到已創建的文件中
  • 第二個循環會提供即將保存文件的文件名(不重要,名稱-1csv到100.csv就足夠了)。

請指點我右邊的loops.Thanks。

UPD: 基於從蒂姆·愛德華茲的意見,我建立這個宏:

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。

有人看到原因,爲什麼公式在保存前不計算?我嘗試了各種公式計算設置 - 自動,手動,手動保存。

回答

0

使一個環從1要90.

For i = 1 To 90 


    Next i 

在每次迭代中:

  • 獲得從細胞中的式(i,1)。
  • 粘貼到新的工作簿並計算。
  • 將工作簿另存爲「directory ..」+ i +「。csv」。
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 
+0

我根據您的建議更新了我的帖子 –

相關問題