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

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

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

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

マクロ

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

Q&A

解決済

1回答

7813閲覧

マクロでExcelでエクスポートしたbasファイルを数フォルダに格納してあるExcelにインポートできるマクロが作成したい

atuy1120

総合スコア7

VBA

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

マクロ

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

0グッド

0クリップ

投稿2017/01/26 12:58

編集2017/01/27 00:25

###前提・実現したいこと
Excelでエクスポートしたbasファイル【module1.bas】を数フォルダに格納してあるExcelにインポート出来るマクロを作成したいです。

###発生している問題・エラーメッセージ
basファイルのインポート、すでにExcelに存在している【module1.bas】の削除の方法が調べたのですが、できていません。

###該当のソースコード
検索で出てきたソースがこちらで、どのように修正したらいいのかが分かっていません。
1行目: Public Sub Sample_ImportModule_01()
2行目:
3行目: ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
4行目: ' 参照設定:
5行目: ' 「Microsoft Visual Basic for Application Extensibility」
6行目: ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
7行目:
8行目: ' このブックのVBProjectをオブジェクト変数に格納する。
9行目: Dim Obj As VBIDE.VBProject
10行目: Set Obj = ThisWorkbook.VBProject
11行目:
12行目: ' インポートしたいファイル名を決める。
13行目: Dim ImpFile As String
14行目: ImpFile = "C:\汎用モジュール\FileIOModule.bas"
15行目:
16行目: ' このブックにVBAモジュールをインポートします。
17行目: Obj.VBComponents.Import ImpFile
18行目:
19行目: ' オブジェクトを破棄する。
20行目: Set Obj = Nothing
21行目:
22行目: End Sub

###補足情報
前提として各フォルダに格納してあるExcelファイルは同一のファイル名で、フォルダの中にはファイルが存在しないフォルダもあり、そちらは何も処理しないようにしたいです。

分からないことが多いのに質問してしまい申し訳有りませんが、ヒントだけでもいいのでよろしくお願いします。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Module1だけを削除したい場合はこんな感じです

Dim component As Variant For Each component In ThisWorkbook.VBProject.VBComponents If component.Name = "Module1" Then Call ThisWorkbook.VBProject.VBComponents.Remove(component) Exit For End If Next

インポートは以下でできます

ThisWorkbook.VBProject.VBComponents.Import "C:\module1.bas"

ちなみにエクスポートは以下です

ThisWorkbook.VBProject.VBComponents("Module1").Export "C:\module1.bas"

尚、処理の流れはこんな感じでしょうかね

1)配布元エクセルでモジュールをエクスポート
2)配布先エクセルを検索
3)2)で見つけたエクセルからモジュールを削除
4)3)のエクセルへモジュールをインポートして上書き保存
5)配布先エクセルが無くなるまで2)~4)を繰り返す

ご参考まで

投稿2017/01/27 00:45

編集2017/01/27 00:54
takito

総合スコア3111

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

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

atuy1120

2017/01/27 00:49

ありがとうございます。 別のところにボタンを作ってそこに教えていただいたソースをコピーする →それを押下したら該当のエクセルを開いてモジュールを削除するって流れでいいのですかね?
atuy1120

2017/01/27 01:03

追加してくださりありがとうございます。 最後に質問なのですが、各ディレクトリのエクセルを検索して開くというのは出来るのでしょうか?
takito

2017/01/27 01:03

すみません、なぜか編集途中の内容で投稿されてしまったので内容を更新しました そんな感じでやってみてください うまくいかなかったら、また新しい質問で投稿されるとよいと思います
takito

2017/01/27 01:06 編集

各ディレクトリのエクセルを検索して開く→できます [ vbaFileSystemObject ファイル検索] などで検索してみてください
atuy1120

2017/01/27 01:11

ありがとうございます。 作成してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問