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

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

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

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

2回答

1889閲覧

別ブックにVBAマクロを保存し、それを使用したい

gwg2r4

総合スコア8

VBA

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/07/04 01:53

編集2019/07/04 02:30

前提・実現したいこと

VBA初心者です。

下記のマクロを組んでいます。

A.xlsm 内のボタンを押すと、B.xlsx を開き、B内のシートbをAにコピーし、Bは閉じる。
bに記載されている情報を用い、Aは計算を行い、A内のシートaを書き換える。
処理が終われば、シートbは削除する。

現在、問題なく動いてはいるのですが、Aを複数作成しようとしたときにメンテナンス性がひどく悪いと考え、うまく、この問題を解決できないかなと考えています。

試したこと

新たに、X.xlsm を用意し、A.xlsm に記述していた処理を移管。
Aからは、Xの処理を呼び出すのみ。

ここまで書いて、以後、どうすべきか困っています。

Xはあくまで、処理コード共通化のために存在するので、これまで通り、シートbのコピー先はA、ファイル更新先もAとしたいのですが、別ブックへシートをコピー、ならびに、ファイル更新(セルの内容書き換え)は可能でしょうか?

当初、Xに、B内のシートbとA内の更新対象シートaをコピーし、処理が終われば、bはそのまま削除、書き換え後のaはAにコピーするが、同名のシートが存在するので、A内のaを削除した上でコピー、その後、X内のaも削除するという方法も考えましたが、結局、ここでも「別ブックへのシートコピー」、また、「別ブックのシート削除」が発生すると考え、だったら、先述の方法がシンプルだなと考えた次第です。

もし、上記2つの方法ともに不可能な場合、どのような実現方法があるか、教えて頂けますか?

補足情報(FW/ツールのバージョンなど)

関係あるのか分かりませんが、Excelのバージョンは2016 32bit です。

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

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

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

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

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

sazi

2019/07/04 02:19

> Aからは、Cの処理を呼び出すのみ。 Cって何ですか?
gwg2r4

2019/07/04 02:20

Xの誤りです。
guest

回答2

0

まず、複数のブックで共通で使うマクロは personal.xlsb に保存するといいでしょう。下記を参考にしてください。

単一のブックにすべてのマクロを作成して保存する - Office サポート

personal.xlsb はブックを開くと自動でバックグラウンドで開くのでそこのマクロはいつでも使えます。

personal.xlsb内へA.xlsmのマクロを移動させて、マクロのコード内のコピー先は ActiveBook にすればいいでしょう。

追記

A.xlsm からクラウドの x.xlsm のマクロを呼び出したいなら、下記のどちらかになります。

別のブックのマクロを実行(Run メソッド) | ExcelWork.info

プロシージャを呼び出す(Call ステートメント) | ExcelWork.info

前者はx.xlsmを開く必要があります。
後者は開く必要はないですが、クラウドにあるファイルを参照設定したことがないので正常に動作するかどうかはわりません。

投稿2019/07/04 02:06

編集2019/07/04 02:36
hatena19

総合スコア33699

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

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

gwg2r4

2019/07/04 02:14

リンク先を参照しました。 一連のファイルをクラウドに保存して、職場や自宅、外出先でも作業できるようにしたいので、personal.xlsb の保存先がXLSTARTというフォルダに限定されるという点で、作業効率が悪いので、ちょっと採用したくはありません
hatena19

2019/07/04 02:22

そのような重要な情報は先に出してもらわないと。 ところで、ご希望のことは、クラウドの X.xlsm を起動してその処理を実行したいのか、A.xlsmを起動してそこから X.xlsmのマクロを利用して処理を実行したいのか、どちらがお望みですか。
guest

0

B.xlsxを開く際に絶対パスを指定しているなら、作業用のフォルダを用いて相対パスで処理するというのはどうですか。
絶対パス指定と相対パス指定

投稿2019/07/04 02:24

編集2019/07/04 02:24
sazi

総合スコア25173

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問