• ベストアンサー

マクロで別のブックに転記するやり方

エクセルのマクロで勤務表というブックのA5からA10までの"出勤"という文字を"○"に置き換えて 別の集計表というブックのA6からA36に転記する場合どのような書き方になりますか? 例えば置き換えは Sub test() With Range("A5:A10") .Replace what:="出勤", replacement:="○", lookat:=xlPart End With End Sub このような感じになると思いますが、他にやり方があればよろしくお願い致します。

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

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.1

例えば電話番号を考えれば、市内の人同士なら市外局番はいらないけれど、他県の人と話す場合は市外局番が必要です。 さらに外国に電話する場合は国番号が必要だったりします。 Excelでも同じシートだけならRange()とかCell()だけで指定して問題ありません。 しかし複数のシートが対象の場合はSheets().Range()などでどのシートのデータかも指定する必要があります。 更に複数のBookを対象にする場合は、Workbooks().Sheets().Range()で指定する必要があります。 またvbaをどのBookのどこのモジュール部(標準モジュール部や特定シートのモジュール部)に記述するかによって、答えが変わる場合もあります。 質問ではBookは「勤務表」「集計表」と指定がありますが、シート名の指定が無いので両方のBookのSheet1だとします。 また「勤務表というブックのA5からA10」は6セルで「集計表というブックのA6からA36」は31セルなので6個のデータをどのように31個にコピーするのか不明なので「集計表というブックのA6から(6個)に」と言う事だとします。 更に2つのBookは開いている状態なのかも考える必要があります。 と前置きが長くなりましたが、質問ではわからない前提条件があるので、例えばです。 ちなみに lookat:=xlPartにするとその言葉が含まれる場合になるので完全一致のlookat:=xlWholeがいいと思います。 Sub test2() 'Workbooks.Open "c:\勤務表.xls" '必要なら(保存されてる場所は変更してください) 'Workbooks.Open "c:\集計表.xls" '必要なら(保存されてる場所は変更してください) Workbooks("勤務表.xls").Sheets("Sheet1").Range("A5:A10").Copy Destination:=Workbooks("集計表.xls").Sheets("Sheet1").Range("A6") Workbooks("集計表.xls").Sheets("Sheet1").Range("A6:A11").Replace what:="出勤", replacement:="○", lookat:=xlWhole 'Workbooks("勤務表.xls").Close SaveChanges:=True '勤務表を保存して閉じる場合 'Workbooks("勤務表.xls").Close SaveChanges:=False '勤務表を保存せずに閉じる場合 'Workbooks("集計表.xls").Close SaveChanges:=True '集計表を保存して閉じる場合(データを書き込んだのだから閉じる場合は当然保存する) End Sub p.s. どこにvbaを置くかによって、Workbooks("勤務表.xls").Sheets("Sheet1")とWorkbooks("集計表.xls").Sheets("Sheet1")のどちらかは省略できる場合があります。

wingup
質問者

お礼

とても参考になりました。 ほんとうにありがとうございました。 これからは質問もわかりやすくします。

関連するQ&A