• ベストアンサー

マクロ・VBAを使って同じファイル内にある・・・

同じファイル内にある複数のExcelブックに 一挙に同一作業を行うことは可能でしょうか。 たとえば、今マイドキュメントの「売上」という ファイルに神奈川売上、東京売上、埼玉売上・・・というブックがあるとします。全てのファイルのC列にA*Bという計算式をテーブルの一番下の行まで入力したいとします。こういったことは、可能なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.5

こんばんは。 フォルダーは、 "C:\My Documents\売上" とする 各ブック(東京売上等)の"Sheet1"に、C列=A列*B列 の式を入れる 1行目は見出し行としデータは2行目からとする 式を入れる最終行は、A列の最後のデータがはいっている行までとする ------------------------------------------------ Sub TEST()  Dim myPath As String  Dim myBook As String  Dim WBK As Workbook  Dim LastRow As Long  Application.ScreenUpdating = False  myPath = "C:\My Documents\売上\"  myBook = Dir(myPath & "*.xls", vbNormal)  Do While myBook <> ""   Set WBK = Workbooks.Open(myPath & myBook)   LastRow = Sheets("Sheet1").Range("A65536").End(xlUp).Row   Range("C2:C" & LastRow).Formula = "=RC[-2]*RC[-1]"   WBK.Close SaveChanges:=True   myBook = Dir  Loop  Application.ScreenUpdating = True End Sub ------------------------------------------- 尚、式を入れる最終行がA列で判断できないときは、最終行を判断できる列番号に変える。 例えばそれが、E列だとすると上記のコードの Range("A65536")をRange("E65536")に変える。 他にも色々な方法はあるのですが一案ということで。 以上です。

hunter_paul
質問者

お礼

ありがとうございます。 自身でも試してみて、うまくできました。 作業効率の大幅アップが期待できそうです。 本当に感謝します。

その他の回答 (4)

  • natsuma
  • ベストアンサー率28% (2/7)
回答No.4

前半は、複数のExcelブックに同一作業を行う、 後半は、複数のシートに同一作業を行う、になっていますね。 >今マイドキュメントの「売上」というブックに神奈川売上、東京売上、埼玉売上・・・というシートがあるとします。 >全てのシートのC列にA*Bという計算式をテーブルの一番下の行まで入力したいとします。 マクロをご希望のようですが・・、 ご存知かもしれませんが、 「売上」というブックで、Shiftを押したまま 神奈川売上、東京売上、埼玉売上・・・の最後尾のシートを選択して、C1にA*Bという計算式を入力、 C1セルの右下にマウスをポイントして+をクリックしたままテーブルの一番下の行まで選択します。

  • natsuma
  • ベストアンサー率28% (2/7)
回答No.3

>同じファイル内にある複数のExcelブックに 同じフォルダ内にある・・・では? >たとえば、今マイドキュメントの「売上」という ファイルに ブックに・・・かな? >神奈川売上、東京売上、埼玉売上・・・というブックシート・・・かな?

hunter_paul
質問者

補足

回答ありがとうございます。 >同じファイル内にある複数のExcelブックに というのは、間違いです。正しくは、ご指摘の通り、 売上というフォルダ内にある神奈川売上、東京売上、埼玉売上・・・というブックに計算式を一括入力 するというものです。申し訳ございませんでした。

  • Zero_0
  • ベストアンサー率35% (72/201)
回答No.2

#1です。すみません間違えました。 2,3,4行目のsheet(はsheets(のようにsが必要です。

  • Zero_0
  • ベストアンサー率35% (72/201)
回答No.1

可能です。 sub 計算式の入力 sheet("東京売上").select:gosub 式代入 sheet("埼玉売上").select:gosub 式代入 sheet("神奈川売上").select:gosub 式代入 exit sub 式代入: Range("C1").Select ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"    '計算式 Range("C1").Select Selection.AutoFill Destination:=Range("C1:C10"), Type:=xlFillDefault Range("C1:C10").Select return End sub のような感じでどうでしょう。とりあえず式は10列までしかコピーしていませんが。

関連するQ&A