質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

802閲覧

Aのエクセルマクロを起動し、Bというブックに処理を行いたい

ypk

総合スコア80

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/10/10 11:17

こんにちは。
現在VBAの学習をしているものです。現在、VBAの学習を自分でソースコードを書くことで行っています。
学習をしていく中で、とあることを実現しようと試みているのですが、調べても出てこないためここに質問をさせてください。
どうぞよろしくお願いいたします。

###実現したいこと

Aのエクセルマクロを起動し、Bというブックに処理を行いたい

具体的には

①こちらのシート(A)でまず、「ファイルの選択」ボタンを押下して実行したいエクセルを選択します。
②続いて、「実行」ボタンを押下します。

イメージ説明

③実行ボタンを押下すると、こちらのシート(B)のほうで以下の処理を行います。

maxRow = Cells(Rows.Count, 1).End(xlUp).Row Dim i As Long 'ループ処理用の変数 '行数分、計算結果を書き込む処理を実行 For i = 2 To maxRow If Month(Range("A" & i).Value) = Month(Date) - 1 And Range("C" & i).Value = "高橋" Then Worksheets("Sheet1").Range("D" & i).Value = "〇" End If Next i

イメージ説明

長々と書きましたが、要は1枚目の写真のエクセルで2枚目の写真の「タスク管理表」を「選択」し、選択したうえで「実行」ボタンを謳歌すれば「タスク管理表」のD2セルに「〇」がつく状態を実現したいと試行錯誤しています。

知恵を貸していただけると嬉しいです。
どうぞよろしくお願いいたします。

###私のソースコード(実行ボタンのマクロになります)

Sub 実行() Workbooks.Open (b2) maxRow = Cells(Rows.Count, 1).End(xlUp).Row Dim i As Long 'ループ処理用の変数 '行数分、計算結果を書き込む処理を実行 For i = 2 To maxRow If Month(Range("A" & i).Value) = Month(Date) - 1 And Range("C" & i).Value = "高橋" Then Worksheets("Sheet1").Range("D" & i).Value = "〇" End If Next i End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/10/10 11:40

課題(困っていること)は何でしょうか? また「調べても出てこないため」とありますが、どのように調べましたか?
ypk

2020/10/10 11:46

困っていること →選択したシートに対して処理を行いたいが行えない 調べても出てこない →「エクセル マクロ 別ブック 実行」「VBA 別ブック 参照」あたり
meg_

2020/10/10 12:05

> →選択したシートに対して処理を行いたいが行えない 具体手にはどういうことでしょうか? 何かエラーは出ますか? マクロの動作は完了するが「○」が記入されない、ということでしょうか?
ypk

2020/10/10 12:11

Workbooks.Open (b2) で処理が止まってしまいますね、、、 私の想定では、 Workbooks.Open (b2) にてマクロを実行したいファイルを呼び出し、 maxRow = Cells(Rows.Count, 1).End(xlUp).Row Dim i As Long 'ループ処理用の変数 '行数分、計算結果を書き込む処理を実行 For i = 2 To maxRow If Month(Range("A" & i).Value) = Month(Date) - 1 And Range("C" & i).Value = "高橋" Then Worksheets("Sheet1").Range("D" & i).Value = "〇" End If Next i の処理を実行できたらと思っております。
meg_

2020/10/10 12:18

> で処理が止まってしまいますね、、、 具体的なエラーメッセージを書くと回答がつきやすくなります。回答者は質問に書いてあることから原因を推定しますので。 「Workbooks.Open (b2)」で"b2"は変数ですね。型が不明ですが、この変数の値が正しいパスになっていないかと思われます。
ypk

2020/10/10 21:17

ご指摘ありがとうございます。次回以降「試してみたこと」も質問に盛り込みたいと思います。 ファイルパスは間違っていないはずなのですが、、、、コピペしたので、、、、ありがとうございます。
guest

回答1

0

ベストアンサー

ブックを開く

VBA

1Sub 実行() 2 3 Dim targetWb As Workbook 4 Set targetWb = Workbooks.Open(Filename:=Cells(2, 2).Value) 5 6 With targetWb.Worksheets("Sheet1") 7 8 maxRow = .Cells(Rows.Count, 1).End(xlUp).Row 9 10 Dim i As Long 'ループ処理用の変数 11 12 '行数分、計算結果を書き込む処理を実行 13 For i = 2 To maxRow 14 15 If Month(.Range("A" & i).Value) = Month(Date) - 1 And .Range("C" & i).Value = "高橋" Then 16 .Range("D" & i).Value = "〇" 17 End If 18 19 Next i 20 21 End With 22 23 24 25End Sub

投稿2020/10/10 12:22

Reach

総合スコア733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ypk

2020/10/10 21:26

ありがとうございます。 無事に実行確認が取れました。また、参考になるリンクの共有までしてくださりありがとうございます。 実行自体はでき、実現したいことは実現できたのですが、 Cells(2, 2) で選択したファイルが開いてしまいます。こちらのファイルを開かずとも、マクロを実行する方法などございましたらご教授頂けると幸いです。 どうぞよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問