- ベストアンサー
エクセルで複数のファイルのうちの特定のファイルのセルに計算式を挿入したい
教えてください。 フォルダに300くらいのファイルがあり シート001.xls~シート300.xlsと名前が付いてます。 シート001.xls~シート100.xlsはセルC3に式A シート101.xls~シート200.xlsはセルC3に式B シート201.xls~シート300.xlsはセルC3に式C と言う風に違った計算式をいれたいのですが、マクロで いっぺんにやる方法は有りませんでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
http://odn.okwave.jp/qa2793493.html の続きですか? あちらも追加でこたえておきましたが・・・。 以下のマクロを仕込んだファイルをシート001.xls~シート300.xls があるフォルダーに保存して実行してみてください。 Sub test00() Dim MyFile As String, MyPath As String, x As String Dim i As Long MyPath = ThisWorkbook.Path & "\" '自分のパスを取得 For i = 1 To 300 MyFile = "シート" & Format(i, "000") & ".xls" Set wb = Workbooks.Open(MyPath & "\" & MyFile, UpdateLinks:=0) '選択したファイルをLink更新なしで開く If i < 101 Then x = "=""式A""" ElseIf i < 201 Then x = "=""式B""" Else x = "=""式C""" End If For Each sh In wb.Worksheets '開いたファイルの各シートに sh.Range("C3").Formula = x 'C3に式 Next sh wb.Close SaveChanges:=True '選択したファイルを保存して閉じる Next i Set wb = Nothing End Sub
その他の回答 (1)
- robbie21
- ベストアンサー率55% (5/9)
以下のようなマクロでどうでしょうか。 '今回やりたいことのマクロ本体 Sub SetFunctioMain() Const FolderPath = "c:\temp\" 'フォルダのパスの指定 Const Pre = "シート" Dim i As Long For i = 1 To 100 Dim FileName As String FileName = FolderPath & Pre & Formula(i, "000") & ".xls" SetFunctionAtBook FileName, 1, "C3" Next For i = 101 To 200 Dim FileName As String FileName = FolderPath & Pre & Formula(i, "000") & ".xls" SetFunctionAtBook FileName, 1, "C3" Next For i = 201 To 300 Dim FileName As String FileName = FolderPath & Pre & Formula(i, "000") & ".xls" SetFunctionAtBook FileName, 1, "C3" Next End Sub 'ファイル名、シート、アドレス、数式を指定して書き込む 'SheetIndexは、シート名でも 番号でも指定可能 Sub SetFunctionAtBook(FileName As String, SheetIndex As Variant, CellAddress As String, FormulaString As String) On Error GoTo Error_Exit Dim Book As Workbook Set Book = Workbooks.Open(FileName) Book.Worksheets(SheetIndex).Range(CellAddress).Formula = FormulaString Book.Save Book.Close Exit Sub Error_Exit: 'エラーが起きたらイミディエイトウィンドウに表示 Debug.Print "Error:" & FileName & "[" & SheetIndex & "]" & CellAddress & " " & FormulaString & " " Debug.Print Err.Description End Sub