質問するログイン新規登録

Q&A

解決済

1回答

674閲覧

VBA 参照設定をボタンで設定するやり方

Taro0827

総合スコア16

VBA

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

0グッド

1クリップ

投稿2024/12/16 23:52

編集2024/12/17 00:45

0

1

実現したいこと

VBAの参照設定をボタンでワンクリックでやりたいです。
他の人にも配る目的で、作成しましたがどうもうまく設定ができません。
下記二パターンでやりましたが、どちらも自分のPCではできるのですが、ほかのPCではできず。。。
何か策はあるでしょうか。

ここに実現したいことを箇条書きで書いてください。
行ったこと
①パスを参照して、参照設定を選ばせる方法
以下コード-----------------------------------
Sub ボタン6_Click_初期設定()

Dim myRef As Variant
If Dir("C:\Program Files\Bricsys\BricsCAD V19 ja_JP\axbricscadapp1.dll") = "" Then
Else
Set myRef = ActiveWorkbook.VBProject.References.AddFromFile("C:\Program Files\Bricsys\BricsCAD V19 ja_JP\axbricscadapp1.dll")
End If

End Sub

②外部オブジェクトのGUIDで参照設定を選ばせる方法
以下コード-----------------------------------

Sub ボタン6_Click_初期設定()

Dim myRef As Variant
If Dir("C:\Program Files\Bricsys\BricsCAD V19 ja_JP\axbricscadapp1.dll") = "" Then
Else
Set myRef = ActiveWorkbook.VBProject.References.AddFromGuid("{E5F83403-221E-4D53-93CC-EBFF68F268D5}", 19, 0)
End If

End Sub

前提

他の人にVBAマクロを配布する際、参照設定をさせるのは難しいと判断し、ワンクリックで参照設定が
できないか、考えております。

追記)
GUIDは以下のコードで調べております。

Private Sub Sample()

Dim VBProj As VBIDE.VBProject Dim Ref As VBIDE.Reference ' 参照設定が必要: Microsoft Visual Basic for Applications Extensibility (5.3) On Error GoTo ErrorHandler ' エラーハンドリングを追加 ' 現在のVBAプロジェクトを取得 Set VBProj = ThisWorkbook.VBProject ' 参照をループ For Each Ref In VBProj.References Debug.Print "Name: " & Ref.Name Debug.Print "GUID: " & Ref.GUID Debug.Print "Major: " & Ref.Major Debug.Print "Minor: " & Ref.Minor Next ' オブジェクトの解放 Set Ref = Nothing Set VBProj = Nothing Exit Sub

ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description
Set Ref = Nothing
Set VBProj = Nothing

End Sub

イメージ説明

発生している問題・エラーメッセージ

特にエラーはありません。

該当のソースコード

試したこと

試したことは上記2つになります。

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

 なし

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

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

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

Ripple.N

2024/12/17 01:01

そもそも参照設定はブックに保存されるため、PC毎に設定する必要はないはずです。 動かないのであればそもそもライブラリがインストールされていないなどの問題と思いますが、 それは確認済みですか?
Taro0827

2024/12/17 01:08

回答ありがとうございます。 今回のライブラリーはversionがありまして、 V19,V21を使用している人がまちまちです。 V19の人はV19をV21の人はV21のファイルを製作してもいいですが、一つのファイルで 簡単に設定できればと思っております。
kikukiku

2024/12/17 01:37

自身では確認していません。 記事をぐぐっただけですが、下記記事のように、マクロのセキュリティ設定は実施しているか 確認してみてはどうでしょう。 https://kouten0430.hatenablog.com/entry/2017/10/21/152301
Taro0827

2024/12/17 01:41

回答ありがとうございます。 まさにこの記事を見て、②を書いて実行したのですが、うまくいきませんでした。。。
kikukiku

2024/12/17 01:59

マクロのセキュリティ設定は実施したということですか?
Taro0827

2024/12/17 02:41

やりましたが、うまくいきませんでした。 自分でも模索してみます。
kikukiku

2024/12/17 02:50

自身のPCでは成功した。他のPCで失敗したと記述されているので、 自身のPCではセキュリティ設定はしているが、 他のPCではセキュリティ設定していないために動作しないのではないかと 思っていましたが、自身のPCでもうまく行っていないのでしょうか? ちょっと何が事実なのかよくわかりません。 回答する場合には正確に回答して欲しいです。 >やりましたが、うまくいきませんでした。 上記の回答だけでは、どのPCに対して何をして、その結果具体的に どのようになったのか、まったく記述されていないため、 議論が深まりません。 まずは、もっと具体的に情報を整理してください。
mattuwan

2024/12/17 03:16

「VBAプロジェクト オブジェクトモデルへのアクセスを信頼する」オプションの設定をしましたか?
guest

回答1

0

自己解決

kikukiku様
mattuwan様

回答ありがとうございます。
「VBAプロジェクト オブジェクトモデルへのアクセスを信頼する」オプションの設定で、
「VBAマクロが有効な場合にExcel~」

にチェックボタンが入っていなかったため、それが原因だったようです。
色々とご教示いただきありがとうございます。

投稿2024/12/17 06:50

Taro0827

総合スコア16

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.25%

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

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

質問する

関連した質問