このたびわたしが作成した業務用の簡単なマクロを社内の他部門(遠隔地)の10名ほどのかたがたにメールで配布して使っていただくことになりました。
自分では個人用マクロブックに登録し、任意のエクセルのシートに対して使用していたものです。
一応そのマクロだけをエクスポートしてModule1.basというファイルは作ったのですが、これまでマクロそのものを配布したことがないので送った先の人にどうインポート方法を説明したらよいのかわかりません。多分マクロはよく知らないひとたちのはずです。
いい説明方法があれば教えてください。
No.13ベストアンサー
- 回答日時:
> 成功しました!!他の端末へのインストールも出来ました。
おお!それは、よかった!(^^)
> 再度送付してあげれば相手のアドインは上書きされると思ってよい
> のでしょうか?
ええ、最初から修正やバージョンアップはあるものとして、考慮して
ましたから、その手順で大丈夫ですよ。
それでは、さらに一歩進んで、、
アドイン化したものは、どんな時に実行されるか保証されないので、
注意が必要です。つまり、ActiveSheet がない状態でメニューを
クリックすることも、あり得るってことです。この場合、エラーの
発生が予想されますね。
エラーが発生して、「デバッグしますか?」と聞かれたり、デバッグ
モードの VBE 画面がでてきたら、初心者の方はビックリしてしまう
でしょう。
ですから、コードの冒頭でそれをトラップしてやらなければなりま
せんし、VBA プロジェクトも保護しておいた方が良いでしょう。
VBA プロジェクトの保護は、VBE のプロジェクトエクスプローラーで
MyADDIN を選択し、右クリック[VBA プロジェクトのプロパティー]
から行います。
トラップの方法は、例えば Selection ならセル以外が選択されて
いてはマズイ場合、
IF Ucase$(Typename(Selection))<>"RANGE" Then Exit Sub
のようにコードの冒頭に書き込みます。On Error ~ ステートメント
も必要があれば使います。
関数もワークシート関数として使われたくない場合は Private Function
にしてしまうか、次のように Caller を使ってトラップします。
Function Test(A As Variant) As String
' ワークシート関数として使えないようにする
If UCase$(TypeName(Application.Caller)) = "RANGE" Then
Exit Function
End If
'~ 処理 ~
End Function
こうすると、VBA からしか使えない関数になります。
この辺は、場数を積めば勘処が養えるので、無理に今全部やる必要は
ありません。エラーが発生したときに困ったら、読み返してみて下さい。
以下は、余談です。
・プロシージャ Count_Net の
x = ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Count).Row
は
x = rngTarget(rngTarget.Count).Row
の方が良いと思います。
・プロシージャ Del_Sqt について
これは、前回のご質問のやつですよね。そちらに手が回らず、済みません。
アドイン化、、大変だったと思いますが、いろいろやってみて下さい。
自分にとって都合がよく便利で、自分だけのツールが作れますよ。
では、頑張って下さい。
あ、慣れてきたら、アドインの名前はもっとセンスのいいヤツに変えて
下さいね。MyADDIN って適当につけたヤツなので(^^;)
最後の最後までご親切にありがとうございました。
KenKenSPさまがいらっしゃらなかったら、わたしにはアドインなんて遥か彼方の高嶺の花でした。
手取り足取りお教えを賜り感謝感激です。
No13でのご指摘を踏まえて再度コードを見直したいと思います。
ありがとうございました。
No.12
- 回答日時:
> 4)A4セルに 2、B4セルに セルの引用符を削除 、C3セルに Del_Sqt
> と入力します
は C4 セルに Del_Sqt の誤りです。#11 4-9)で説明したとおり、テストメニュー
を見て、誤りがあれば、そこで修正して下さい。
> テスクトップ上の[ ADDIN ]フォルダ内にある MyADDIN.xla を削除すれば、
> メニューのmerlionXXも消えるのでしょうか?
・アドインを解除すれば、メニューは自動的に消えます。
メニュー merlionXX は、アドインが開かれたときに作成されるものです。
当然、MyADDIN.xla が見つからない場合は、メニューはありません。
ただし、そのアドインを有効にしているなら、「アドインが見つからない」
とアラートが表示されます。
アドインは 「ワークシートが表示されない」特殊なブックの一種です。
XLSTART に PERSONAL.XLS を入れたのと同様に、Excel が起動したときに
アドインフォルダ内にあり、かつ、アドインが有効に設定されているものは
同時に開かれます。違いは、
Excel メニュー[ツール]-[アドイン]
で、ユーザーが好きなときにアドインの有効・解除の操作を行えること
ですね。XLSTART のようなファイル操作は必要ないのです。
必要がなけれな、アドインを解除しておけば良いのです。
・アドインそのものを削除する
削除方法は、「アドインが有効 = アドインが開かれた状態」では不可能
ですから、先にアドインを解除します。
あとは、通常のファイルと同様に、削除して下さい。
アドイン(*.xla)を削除すると、Excel メニュー[ツール]-[アドイン]を
再び開くと、アドインリストもアラートがでて、自動的に修正されます。
成功しました!!他の端末へのインストールも出来ました。本当にありがとうございます。
これが最後の追加質問です。
もしMyADDIN.xlaの中身に修正やあたらしいマクロの追加があった場合、修正&追加後のモジュールシートで再度MyADDIN.xlaを作成し、MenuGenerataorで同様の作業をし、再度送付してあげれば相手のアドインは上書きされると思ってよいのでしょうか?
No.11
- 回答日時:
手順を具体的に書きましたので、一度このとおりに作業してみて下さい。
【手順】---------------------------------------------------------------
1. ご自分の作成されたマクロ(Module)を含む Excel ブックを作成します
2. 1. を[名前をつけて保存]コマンドで次の設定で保存
・形式: マイクロソフト アドイン(*.xla)
・名前: 下記のコード冒頭の cnsXLA_NAME と一致させて下さい(任意)
ここでは、MyADDIN.xla で話を進めます
・場所: デスクトップに [ ADDIN ]フォルダを作りましょう
ここに保存します
3. 2. で作成したアドインを有効にして下さい
[ツール]-[アドイン]-[参照] でテスクトップ上の[ ADDIN ]フォルダ内に
ある MyADDIN.xla を選択して[ OK ]をクリックします
4. MenuGenerator.xls を開き、メニューを作成します
ここで、ユーザーインターフェースを作成します。取り合えず、次の様に
作業してみて下さい。
1)MenuGenerator.xls の 3 行目以下のサンプルデータを消去します。
2)A2セルに 1、B2セルに merlionXX と入力します
3)A3セルに 2、B3セルに 重複を除いてカウント 、C3セルに Count_Net
と入力します
4)A4セルに 2、B4セルに セルの引用符を削除 、C3セルに Del_Sqt
と入力します
5)Excel 画面に MenuGenerator.xls のツールバーが表示されています
一番左側の「メニュー作成ウィザード起動」をクリックします
6)画面の支持に従い、「メニュー作成ウィザード3/5」まで進めます
7)「メニュー作成ウィザード3/5」では、メニューを表示させる位置を
決めます。取り合えず、「ワークシートメニューバー」を選択します
8)[ はい ] をクリック
9)[ メニュー作成のテスト] をクリックします
ここで、Excel メニューバーに 新しいメニューが追加されます。
間違えていたら、[ 作成したメニューを削除 ]をクリックし、フォーム
が閉じないで、そのままワークシート上のデータを修正し、再度確認
します
OK なら、[ 作成したメニューを削除 ]をクリックして、ウィザードを
進めて下さい
10) 次に以上で作成したメニューを追加するアドインを選択します。
MyADDIN.xla を選択し、[ はい ] をクリック
以上で、MyADDIN.xla にメニュー追加のコードが書き込まれます。
Excel を再起動してみて、メニューが表示されるか確認して下さい
確認できたら、Excel を終了します。
5. テスクトップ上の[ ADDIN ]フォルダ内にある MyADDIN.xla の拡張子を
手動で削除します
6. MyADDIN、Install.xls と解説文などを一緒に圧縮して配布
Install.xls を開くだけで、アドインをインストールできます。
-----------------------------------------------------------------------
この回答への補足
テスクトップ上の[ ADDIN ]フォルダ内にあるMyADDIN.xla を削除すれば、メニューのmerlionXXも消えるのでしょうか?
補足日時:2006/06/26 13:38何度もありがとうございます。
手順どおりやったつもりなのですが・・・・。
メニュー上にmerlionXXが表示されました。
クリックすると「重複を除いてカウント」のみが現れ、クリックすると
Count_Netがはじまります。
Del_Sqtが見当たりません。(゜〇゜;)?
No.10
- 回答日時:
> 1.MenuGeneratorがないとアドインは使えないのですか?
いえ、違います。MenuGenerator は自作されたアドインにメニュー追加のコード
を書き足してくれるツールに過ぎません。
Excel で自作メニューを VBA でつくるのは、結構面倒なんですよ。それで、この
ツールで簡単にそのコードを作ってしまおう、、ということです。
これが追加されたら、MenuGenerator は以後不要になります。同封して配布する
必要はありません。
> 2.今入れたこのアドインを削除するにはどうしたらいいでしょうか?
C:\Documents and Settings\ユーザー名\Application Data\Microsoft\AddIns
OS が 2000、XP ならここです。アドインが有効のままだと、ファイル削除
できないので、Excel を終了させた状態で作業を行って下さい。
アドイン について、WEB で調べてみて下さい。
http://www.atmarkit.co.jp/fwin2k/win2ktips/471fu …
大丈夫ですよ。ちゃんと、できるまでサポートします。
merlionXX さんのご質問は、興味深いものばかりです。回答を考える過程で私も
大変勉強になってます。
この回答への補足
会社のエクセル2000で、ANo.9の手順3まで行いました。
4.でつまづいています。
メニューのデータとは何を入れればよいのでしょうか?
わたしのアドインは以下の通りです。
Sub Count_Net()
Set rngTarget = Intersect(Selection, ActiveSheet.UsedRange)
If rngTarget Is Nothing Then
MsgBox "対象が見当たらないよ~。" _
+ Chr(&HD) + Chr(&HA) + "", vbCritical, " ( ̄□ ̄;)!!"
Exit Sub
End If
Rtn = MsgBox(hmsg & "" _
+ Chr(&HD) + Chr(&HA) + "" _
+ Chr(&HD) + Chr(&HA) + "選択された、" & rngTarget.Address & "の範囲を対象とします。" _
+ Chr(&HD) + Chr(&HA) + "範囲が離れていたり、途中に空白行があると計算できません。" _
+ Chr(&HD) + Chr(&HA) + "よろしいですね?", vbYesNo + vbQuestion, " ( ̄∇ ̄; ?")
If Rtn = vbNo Then Exit Sub
If Selection.Areas.Count > 1 Then
MsgBox "選択範囲が分離してるよ~。" _
+ Chr(&HD) + Chr(&HA) + "", vbCritical, " ( ̄□ ̄;)!!"
Exit Sub
End If
With rngTarget
fr = .Cells(1).Row
lr = .Cells(.Count).Row
fc = .Cells(1).Column
lc = .Cells(.Count).Column
End With
x = ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Count).Row
r1 = fr - x - 1
r2 = lr - x - 1
For c = fc To lc
ActiveSheet.Cells(x + 1, c) = _
"=SUMPRODUCT(1/COUNTIF(R[" & r1 & "]C:R[" & r2 & "]C,R[" & r1 & "]C:R[" & r2 & "]C))"
Next
MsgBox "最終行にカウントしました。" _
+ Chr(&HD) + Chr(&HA) + "", , " ( ̄ー ̄)v "
End Sub
Sub Del_Sqt()
Dim rngTarget As Range
Dim Buffer As Variant
Dim lngRowCnt As Long
Dim lngColCnt As Long
Dim i As Long, j As Long
Set rngTarget = Intersect(Selection, ActiveSheet.UsedRange)
If rngTarget Is Nothing Then
MsgBox "対象が見当たらないよ~。" _
+ Chr(&HD) + Chr(&HA) + "", vbCritical, " ( ̄□ ̄;)!!"
Exit Sub
End If
rngTarget.NumberFormatLocal = "@"
Buffer = rngTarget.Value
lngRowCnt = UBound(Buffer)
lngColCnt = UBound(Buffer, 2)
Rtn = MsgBox(hmsg & "" _
+ Chr(&HD) + Chr(&HA) + "" _
+ Chr(&HD) + Chr(&HA) + "選択された、" & rngTarget.Address & "の範囲を対象とします。" _
+ Chr(&HD) + Chr(&HA) + "選択範囲が分離していると作動しません。" _
+ Chr(&HD) + Chr(&HA) + "よろしいですね?", vbYesNo + vbQuestion, " ( ̄∇ ̄; ?")
If Rtn = vbNo Then Exit Sub
If Selection.Areas.Count > 1 Then
MsgBox "選択範囲が分離してるよ~。" _
+ Chr(&HD) + Chr(&HA) + "", vbCritical, " ( ̄□ ̄;)!!"
Exit Sub
End If
For i = 1 To lngRowCnt
For j = 1 To lngColCnt
Buffer(i, j) = Trim(Buffer(i, j))
Next j
Next i
rngTarget.Value = Buffer
Set rngTarget = Nothing
End Sub
Function hmsg()
Dim h As Integer
h = Hour(Time)
Select Case h
Case Is < 12: hmsg = "おはようございます。"
Case Is < 17: hmsg = "こんにちは。"
Case Else: hmsg = "こんばんは。"
End Select
End Function
ありがとうございます、お手数をおかけします。
詳しくは補足に書かせていただきました。
Sub Count_Net()
Sub Del_Sqt()
Function hmsg()
の3つを記入したアドインですが、MenuGeneratorにはどう入れればいいのかわからないのです。すみません。
No.9
- 回答日時:
#7 のコードにバグがありました。
あと、PC の処理速度の問題だと思うのですが、Addins.Add に失敗する場合がありましたので、Sleep でウェイト
を挟んだ他、細かな修正をしてます。
Install.xls のコード全体を差し替えて下さい。
> どうやって組み込んだアドインのマクロを使うのでしょうか?
アドインの場合は、メニューとかフォームのインターフェースを作らないと
いけないんですね、、、忘れてましたm(_ _)m
これをお試し下さい。
http://www.puremis.net/excel/soft/MenuGeneratorJ …
アドインのメニュー作成支援ツールで、非常に便利です。
上記 URL の下の方で ダウンロード できます。
このツールは、動的にメニューを作成するコード(Module_Menu)をアドイン
に追加してくれます。
ダウンロードが完了したら、MenuGenerator.xls を解凍して準備して下さい。
手順を再掲します。
【手順】---------------------------------------------------------------
1. ご自分の作成されたマクロ(Module)を含む Excel ブックを作成します
2. 1. を[名前をつけて保存]コマンドで次の設定で保存
・名前: 下記のコード冒頭の cnsXLA_NAME と一致させて下さい(任意)
・形式: マイクロソフト アドイン(*.xla)
3. 2. で作成したアドインを有効にして下さい
[ツール]-[アドイン]-[参照] で保存した場所を指定します
4. MenuGenerator.xls を開き、メニューのデータを入力します。
5. MenuGenerator.xls のツールバーでメニュー作成ウィザードをクリック
-->途中でメニューのプレビューができますので、いろいろ試してみて
下さい
6. ウィザードの通り進めて、完了させて下さい
7. 出来上がったアドインは、下記のいずれかの場所にあります。コピーして、
デスクトップなど分かり易い場所に置いてから、拡張子を手動で削除します。
アドインの場所:2. で保存した場所か、または、
C:\Documents and Settings\ユーザー名\Application Data\Microsoft\AddIns
8. あとは、Install.xls と 7. のファイルを一緒に圧縮して配布です
-----------------------------------------------------------------------
以下 #7 の差し替えコードです。
'---------------------------------------------------------------------------------------
' Purpose : アドイン簡易インストーラー
'---------------------------------------------------------------------------------------
Option Explicit
' 設定:アドイン名--------------------------------------------------------
' 拡張子不要で Install.xls と同一フォルダにアドインをおいておく
Private Const cnsXLA_NAME = "MyADDIN"
'-------------------------------------------------------------------------
Private Declare Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)
Sub Auto_Open()
If XLA_INSTALL() Then
' 成功時のメッセージ
MsgBox "インストールは成功しました. Excel を再起動して下さい." & vbLf & vbLf _
& "なお、このインストール用ブックは削除して構いません.", vbInformation
Else
' 失敗時のメッセージ
MsgBox "インストールは失敗しました." & vbLf & vbLf _
& "考えられる理由: ファイル " & cnsXLA_NAME _
& " が同じフォルダ無い", vbCritical
End If
' インストール用ブックを閉じる
ThisWorkbook.Close SaveChanges:=False
End Sub
Private Function XLA_INSTALL() As Boolean
Dim strDestination As String
Dim strSource As String
Application.DisplayAlerts = False
' コピー元のファイル名を生成し、存在確認する
strSource = ThisWorkbook.Path & "\" & cnsXLA_NAME
If Dir(strSource) <> "" Then
' アドイン差し替えのため、既に開いていれば上書きのため閉じる
On Error Resume Next
With Application.AddIns(cnsXLA_NAME)
If .Installed Then .Installed = False
Sleep 2000
End With
On Error GoTo 0
' 拡張子を付与してユーザーアドインフォルダへコピー
strDestination = Application.UserLibraryPath & cnsXLA_NAME & ".xla"
FileCopy Source:=strSource, Destination:=strDestination
' コピーできたか確認
If Dir(strDestination) <> "" Then
' アドインリストに追加し、有効化
Application.AddIns.Add Filename:=strDestination
Application.AddIns(cnsXLA_NAME).Installed = True
' Kill strSource '<-- ココ 削除するかは好みで
XLA_INSTALL = True
End If
End If
On Error GoTo 0
Application.DisplayAlerts = True
End Function
すみません。
いま、新しい手順の説明を読まずに、#7 の差し替えコードに変えただけで自宅のPC(WindousXP、エクセル2003)にアドインを入れてしまいました。つまりMenuGeneratorは何も準備していませんでした。
「インストールは成功しました」と出ました。
1.MenuGeneratorがないとアドインは使えないのですか?
2.今入れたこのアドインを削除するにはどうしたらいいでしょうか?
何もわからなくてご迷惑をおかけします。すみません。
No.8
- 回答日時:
> インストーラなんてどうやって作ったらいいのか見当もつきません
自作ではなく、Vector などで探せます。有名どこでフリーだと、EXEpress とか。
http://www.vector.co.jp/vpack/filearea/win95/pro …
このようなインストーラーや自己解凍書庫作成機能のあるアーカイバーは、
実行時または書庫解凍時にファイルを実行する、インストール先を指定する機能
をもっています。それを使って、
・インストーラーなら、アドインフォルダへ直接コピー
・自己解凍書庫ならアドインフォルダへ Bat(VBS)ファイルを使ってコピー
なんてことができます。
Excel VBA プログラムでもインストーラーを使っているものは、たまに見かけ
ますよ。
No.7
- 回答日時:
お待たせしました。
【手順】---------------------------------------------------------------
1. ご自分の作成されたマクロ(Module)を含む Excel ブックを作成します
2. 1. を[名前をつけて保存]コマンドで次の設定で保存
・名前: 下記のコード冒頭の cnsXLA_NAME と一致させて下さい
・形式: マイクロソフト アドイン(*.xla)
3. 2. で保存されたアドインの拡張子を手動で削除します。
例)MyADDIN.xla --> MyADDIN
これは、ユーザーが不意にこのファイルを開いて混乱しないように
するためです。拡張子をカットしてしまえば、ダブルクリックでは
開けませんので。
4. 新規ブックを作成し、下記のコードを標準モジュールにコピペ
-->この時、cnsXLA_NAME を 3. の名前に変更します。例)MyADDIN
5. 4. を Install.xls とでも分かり易い名前で保存
-----------------------------------------------------------------------
以上です。
> 一人ずつ電話して個人用マクロブックを作ってもらい、コピペさせます。
アドイン化でも個人用マクロブックでも同じですが、他人に使ってもらう場合は、
コードも注意して下さいね。例えば、
Range("A1").Value = 1000
とか。これは、Activesheet が保証されてないと、意図通り動かないコードです。
つまり、自分はわかっているけど、他人の場合、
「どのシートをアクティブにして、マクロを実行するか”わからない”」
ってことです。
ちゃんとシート名とかブック名とか、、、オブジェクトを明示したコードにして
下さいね。
アドイン化は別に難しくはないですよ。頑張って。
では、健闘を祈ります。
'-------------------------------------------------------------------------
' Purpose : アドイン簡易インストーラー
'-------------------------------------------------------------------------
Option Explicit
' 設定:アドイン名--------------------------------------------------------
' 拡張子不要で Install.xls と同一フォルダにアドインをおいておく
Private Const cnsXLA_NAME = "MyADDIN"
'-------------------------------------------------------------------------
Sub Auto_Open()
If XLA_INSTALL() Then
' 成功時のメッセージ
MsgBox "インストールは成功しました." & vbLf & vbLf _
& "なお、このインストール用ブックは削除して構いません.", vbInformation
Else
' 失敗時のメッセージ
MsgBox "インストールは失敗しました." & vbLf & vbLf _
& "考えられる理由: ファイル " & cnsXLA_NAME _
& " が同じフォルダ無い", vbCritical
End If
' インストール用ブックを閉じる
ThisWorkbook.Close SaveChanges:=False
End Sub
Private Function XLA_INSTALL() As Boolean
Dim strDestination As String
Dim strSource As String
On Error Resume Next
Application.DisplayAlerts = False
' コピー元のファイル名を生成し、存在確認する
strSource = ThisWorkbook.Path & "\" & cnsXLA_NAME
If Dir(strSource) <> "" Then
' アドイン差し替えのため、既に開いていれば上書きのため閉じる
With Application.AddIns(cnsXLA_NAME)
If .Installed Then .Installed = False
End With
' 拡張子を付与してユーザーアドインフォルダへコピー
strDestination = Application.UserLibraryPath & "\" & cnsXLA_NAME & ".xla"
FileCopy Source:=strSource, Destination:=strDestination
' コピーできたか確認
If Dir(strDestination) <> "" Then
' アドインリストに追加し、有効化
With Application.AddIns(cnsXLA_NAME)
If Not .Installed Then
Application.AddIns.Add Filename:=strDestination
.Installed = True
End If
End With
' コピーできたので元のファイルは削除
Kill strSource
' Return
XLA_INSTALL = True
End If
End If
On Error GoTo 0
Application.DisplayAlerts = True
End Function
ご親切にありがとうございます。
なにもわからないままにさっそく上記手順をやってみました。
手順1では作成したMyADDIN.xlaのモジュールには二つのSubと1つのFunctionがあります。
「インストールは成功しました」とメッセージがでました。
でも、それから先はどうなるのでしょうか?
どうやってマクロを使うのでしょうか?ツール、マクロ、マクロでも出てきません。
メニューバーにも何も増えた気配はありません。どうやって組み込んだアドインのマクロを使うのでしょうか?
No.5
- 回答日時:
こんにちは。
KenKen_SP です。話の腰を折って申し訳ありませんが、、、
VBE を操作する方法は止めた方が良いですよ。特に Excel 2002 以降では、
セキュリティー強化でディフォルトの状態では VBA プロジェクトにアクセス
できませんから。
結局、VBA プロジェクトへのアクセスを許可する設定方法を説明するはめに
なります。
PERSONAL.XLS を操作するのも止めた方が良いですね。既に VBA を使っている
人がいるかもしれないから、それを上書きするようなことはマズイです。
また、*.xls の形式だとワークシートが表示されてしまいますので、不要な
混乱を招きそうです。
で私見ですが、アドイン化(*.xla)して、
・起動フォルダ(XLStart) --> Application.StartupPath
・アドインフォルダ(Library)--> Application.LibraryPath
のいずれかにコピーして提供した方がよいと思います。できれば、アドイン
フォルダがベストですね。
保存する場所さえわかれば、ファイルコピーは VBA でそれほど難しくはない
でしょう?
FileCopy ステートメントとか、FileSystemObject とか。WEB でサンプルは探せます。
アドインフォルダへインストールした場合は、アドインを有効にする操作は、
ユーザーに任せましょう。
一般的な操作ですから、画像付きで説明すれば難しくはありませんし、
元々「アドインを使用する・しない」については、ユーザーに決定を任せる
べき事項だからです。
他には、、インストーラーを作ってしまうとか、解凍先を指定できるアーカイ
バーで自己解凍書庫にするとか、Bat ファイル(VBS)でコピーするとか、、
いろいろ手はあります。
おせわになります。
全員エクセル2000ですからVBAプロジェクトへのアクセスを許可する設定方法は今回はいいのですが、ぜんぜん実力もないのに自動で個人用マクロをインポートしようなどと思ったのは10年早いようです。
アドインだって使ったことも無いし、インストーラなんてどうやって作ったらいいのか見当もつきません。(そんなこと出来たらいいなあ)
幸い10人程度ですから、今回はマクロはメール本文で送り、あとは一人ずつ電話して個人用マクロブックを作ってもらい、コピペさせます。
ぐすん
No.4
- 回答日時:
#2,3です
>最初のApplication ~~
"DONYU"はプロジェクト名?
VBEの画面でツリー形式でシートとかモジュールかかれているプロジェクトエクスプローラで
MicrosoftExcelObjectsを右クリックでプロパティ見て確認
>もう一点、うまく行った場合、相手のPCにすでにpersonal.xls
先に存在確認する。あれば新規作成を止めてモジュールを入れるだけにする
モジュール名のダブリにも注意。
> "DONYU"はプロジェクト名?
このマクロを書いたブックの名前ですDONYU.XLSです。
> MicrosoftExcelObjectsを右クリックでプロパティ見て確認
ただのVBProjectでした。
Application.VBE.VBProject.VBComponents("Module1").Export ("C:\Module1.bas")としても同じ実行時エラーでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Excel(エクセル) 記録マクロのみでできますか? 7 2022/08/07 20:38
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Excelファイルで作成したものを配布する際の対応策
Excel(エクセル)
-
組んだマクロをメールで送る
Visual Basic(VBA)
-
作成したマクロを共有
Excel(エクセル)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
エクセルマクロを人にあげたいのですが・・・
Visual Basic(VBA)
-
6
Excelに埋め込んだVBAのプログラムが消えた。
その他(Microsoft Office)
-
7
Excelを配布するときの注意点など
Excel(エクセル)
-
8
マクロ 新しいシートにデータをコピペしてシートの名前を変更したい
Excel(エクセル)
-
9
お助けください!VBAのファイル名エラーについて
Visual Basic(VBA)
-
10
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
11
エクセル、 名前の定義に関数を使用すると参照できない
Excel(エクセル)
-
12
Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Outlook 送受信エラー
-
エクセルで個人用マクロの配布方法
-
速度が低下し無効になったアド...
-
Word2007でアドインタブが表示...
-
Excel再起動でアドインのタブが...
-
excel 複数のアドインソフトの...
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
SQLで特定の項目の重複のみを排...
-
for whichの使い方
-
エクセルで最後の文字だけ置き...
-
selectした大量データをinsert...
-
列番号による項目の取得について
-
SQL文で、合計が0のレコードを...
-
INSERT文でフィールドの1つだ...
-
カーソル0件の時にエラーを発生...
-
副問合せの書き方について
-
Access:クエリーにて集計後に...
-
UWSCでMOUSEORG関数が上手く処...
-
ある条件の最大値+1を初番する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
速度が低下し無効になったアド...
-
Outlook 送受信エラー
-
Excel再起動でアドインのタブが...
-
パワーポイントのアドインのソ...
-
エクセルのxans.について
-
エクセルで個人用マクロの配布方法
-
広告ブロッカーのアドカードと...
-
ストアド内で動的にSQLを作る際...
-
Excelから自作アドインを完全に...
-
VB.NETでテキストボックスから...
-
ストアドから得られるレコード...
-
ストアドから特定のキーワード...
-
複数アドインプログラムをひと...
-
excel 複数のアドインソフトの...
-
Word2007でアドインタブが表示...
-
Excel:アドイン自作の方法は?
-
アウトルックで、以前利用して...
-
ストアドプロシージャのネスト
-
ストアドプロシージャの変数に...
-
CSVを取込むストアドプロシージ...
おすすめ情報