2016-07-22 14 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 
    

    マクロコードに2つのマクロのループの代わりに、ペースト100のコードスニペットを持っていいだろうので、私は、100式、より多くを持っている:

    • 1ループは、範囲A1-A90から数式を取ります作成されたファイルに貼り付けるために1つずつ作成する
    • 2番目のループは、ファイルの保存時に次のファイル名を与えます(重要ではありません - 1.csvから100.csvで十分です)。

    右ループを指してください。ありがとうございます。

    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)から式を取得します。
    • 新しいブックに貼り付けて計算します。
    • ブックを "ディレクトリ.." + 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

    あなたのアドバイスに基づいて自分の投稿を更新しました –

    関連する問題