3分あったら何をしますか?

excel 2016を使用してます。
フォルダAとフォルダBがあります。
フォルダAには作成中の「予定表」ファイルがいくつかあります。
フォルダBには元となる「祝日一覧」ファイルが作成してあります。

フォルダBの「祝日一覧」ファイルのA列とB列を「予定表」ファイルのA列とB列にコピーしたいと思っています。
それぞれの「予定表」ファイルにボタンを作りコピーしたいと思っていますが可能でしょうか?

質問者からの補足コメント

  • うーん・・・

    フォルダはAとBと書きましたが部署ごとにあります。
    また予定表も部署によって色々あります。
    「祝日」はどの部署とも共通していますので、1回/年更新するだけです。

    「予定表」ファイルのSheet1→月予定 Sheet2→祝日としてあります。
    祝日のシートにコピーを貼り付けたいと思っています。

    質問する前にマクロでやってみましたが、別のフォルダからコピーすると何も表示されませんでした。
    説明もわかりずらいと思いますがよろしくお願いいたします。

      補足日時:2022/12/17 20:50
  • つらい・・・

    ありがとうございます。
    申し訳ありませんが方法を教えていただけないでしょうか?
    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/12/18 17:29
  • つらい・・・

    フォルダ(A)は「祝日元」のブックだけが入っています。
    フォルダ(B)の中は各部署ごとのフォルダが入っています。その各部署のフォルダに班ごとのブックがあります。
    フォルダ(A)の「祝日元」のA列、B列をコピーして
    フォルダ(B)の中の各部署フォルダの中の班ごとブックのA列、B列に貼り付けるというものです。
    フォルダから別のフォルダへのマクロができません。
    この説明でわかりますでしょうか?
    よろしくお願いいたします。

    No.6の回答に寄せられた補足コメントです。 補足日時:2022/12/20 13:25
  • ありがとうございます。
    1.マクロを格納するブックはどれですか。
    祝日元のブックです

    2.祝日元のブックのコピー元のシート名は"Sheet1"であってますか。
    "祝日"です

    3.班ごとのブックのコピー先のシート名は"Sheet2"であってますか。
    "祝日"です

    4.マクロを実行したとき、
    1回の実行で、全ての班ごとのブックへコピーしたいと思っています。

    できれば
    1回の実行で、1つの班ごとのブックへコピーすることも教えていただきたいです。
    よろしくお願いいたします。

    No.7の回答に寄せられた補足コメントです。 補足日時:2022/12/20 16:31

A 回答 (8件)

マクロを起動するとファイル選択ダイアログボックスが表示されます。


コピー先のファイルを選択してください。
選択するとそのファイルの祝日シートにコピーが行われます。


Public Sub 祝日コピー()
Dim Target As String
Dim wb As Workbook
Dim ws As Worksheet
Dim ms As Worksheet
Dim maxrow As Long
Set ms = Worksheets("祝日")
Target = Application.GetOpenFilename("Excel ブック,*.xls?")
If Target = "False" Then Exit Sub
Set wb = Workbooks.Open(Target)
Set ws = wb.Worksheets("祝日")
ws.Range("A1:B" & Rows.Count).ClearContents
maxrow = ms.Cells(Rows.Count, 1).End(xlUp).Row
ws.Cells(1, 1).Resize(maxrow, 2).Value = ms.Cells(1, 1).Resize(maxrow, 2).Value
wb.Save
wb.Close
MsgBox ("完了")
End Sub
    • good
    • 0
この回答へのお礼

できました~ \(^o^)/
早速来年の予定表が作成できます。
本当に長い時間ありがとうございました。
これからもよろしくお願いいたします。

お礼日時:2022/12/20 19:11

No6です。


補足拝見しました。以下不明点です。
1.マクロを格納するブックはどれですか。
①祝日元のブック
②班ごとのブック
③それ以外

2.祝日元のブックのコピー元のシート名は"Sheet1"であってますか。
違う場合は、シート名を提示してください。

3.班ごとのブックのコピー先のシート名は"Sheet2"であってますか。
違う場合は、シート名を提示してください。

4.マクロを実行したとき、
1回の実行で、全ての班ごとのブックへコピーすることを想定していますか。
それとも
1回の実行で、1つの班ごとのブックへコピーすることを想定していますか。
この回答への補足あり
    • good
    • 0

No5です。


以下のような前提で良いでしょうか。
1.マクロは、各予定表ファイルに登録する。
2.ボタンとマクロの関連付けは、質問者(あなた)が行う。
3.祝日一覧ファイルの拡張子も含めたファイル名は「祝日一覧.xlsx」とする。
4.マクロの機能は以下とする。
フォルダB内の祝日一覧.xlsxのSheet1のA列とB列を
予定表ファイルのSheet2のA列、B列へコピーする。

上記で良ければ提供可能です。前提に齟齬があれば、補足してください。
この回答への補足あり
    • good
    • 0
この回答へのお礼

フォルダ(A)は「祝日元」のブックだけが入っています。
フォルダ(B)の中は各部署ごとのフォルダが入っています。その各部署のフォルダに班ごとのブックがあります。
フォルダ(A)の「祝日元」のA列、B列をコピーして
フォルダ(B)の中の各部署フォルダの中の班ごとブックのA列、B列に貼り付けるというものです。
フォルダから別のフォルダへのマクロができません。
この説明でわかりますでしょうか?
よろしくお願いいたします。

お礼日時:2022/12/20 13:23

1.部署数はいくつほどありますか。


2.1年に1回限り、部署数の数だけ、祝日一覧から、予定表の祝日へコピペすれば済む話かと思いますが、そうではないのでしょうか。
マクロで行いたい理由は何でしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
部署は4つありますがその中にいくつもの班があります。
①人数分の印刷
②今月の予定を同ブックのシートにコピー
③今月の予定を削除
①②③をボタンでやっています。
これが初めてのボタンです。
予定表などは個々によって内容が違いますが、祝日はどの部署でも共通しているので祝日というブックから各部署のブックに自動で上書きしたいです。
ボタンしか経験がないのでこだわりました。
よろしくお願いいたします。

お礼日時:2022/12/20 10:11

No3です。


補足です。
1.wb.Saveで上書きするので、この行もコメント化してから試してください。
2.今回提示したのは、使い勝手を実感するサンプルですので、
  機能不足です。このまま実務に適用しないでください。
    • good
    • 1

祝日ファイルの祝日シートにボタンを作り以下のマクロを登録します。


ボタンを押せばファイル選択画面が表示されるので予定表を選ぶ。
内容OKなら保存して閉じる
ボタン押す
これを繰り返す


マクロの記録をベースにしているのでシートやセルは適当です。
Sub Macro1()
'
' Macro1 Macro
'
Dim OpenFileName As String
Dim wb As Workbook
Application.ScreenUpdating = False

OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")  → エクスプローラーのファイル選択画面表示
Set wb = Workbooks.Open(OpenFileName)
'
ThisWorkbook.Activate '予定表
Range("B2:B9").Select
Selection.Copy
wb.Activate       '部署ファイル
Worksheets("sheet2").Select
Range("A1").Select
ActiveSheet.Paste
 Range("A1").Select
wb.Save

Application.CutCopyMode = False
MsgBox " Copy End = " & OpenFileName メッセージは好みで変更
  ’wb.Close  'コメント化し内容確認後手動でクローズ。
 確認不要であれば、コメント外すことによって部署ファイルはクローズされる。
End Sub
    • good
    • 0

祝日ファイルにボタンを作り


各部署のファイルをダイアログでOPENして
そちらにコピーするほうが良さそうですね。
この回答への補足あり
    • good
    • 0

こんばんは



ボタンを押したらある一定の処理をして欲しいということでしょうか?

ボタンに「そのような処理を行うマクロ」を登録しておけば可能です。
ただし、マクロを個別のブックに登録しておくと、毎回そのブックが開かれることになるので、マクロのテンプレートに保存しておくほうが良いでしょう。

マクロの内容自体はさほど難しいものではないので、ご自身で作成してください。
フォルダBの位置が固定で良いのなら、マクロの記録を修正しても可能だと思います。


・・・というか、そんな面倒なことをしなくても、「予定表」のテンプレートを作成しておいて、そこに「祝日一覧」への参照リンクを貼っておけば、ボタンなど作ったり、押したりしなくても自動で更新表示されますけれど?
参照リンクが嫌なら、クエリを利用して読み込むようにしておいても、ほぼ同等の手間で読み込みが可能です。
    • good
    • 0
この回答へのお礼

ありがとうございました。
参照リンク、クエリー便利なようですがまだ経験がありません。
今後勉強していくつもりです。よろしくお願いいたします。

お礼日時:2022/12/20 11:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報