- ベストアンサー
個人用マクロブック移動後の不具合
PC1のユーザー名"abcd"が作成したエクセルの個人用マクロブックを、PC2のユーザー名"efgh"が使用します。 PC1の"PERSONAL.XLS"と"Excel11.xlb"を、PC2の"C:\Documents and Settings\efgh\Application Data\Microsoft\Excel"にコピーしました。 マクロは全て、ツールバーにボタンイメージが貼り付けられています。 なんらかのマクロを実行しようとしてボタンイメージをクリックすると、マクロが見つからないというメッセージが表示されてしまいます。 "C:\Documents and Settings"の次のフォルダ名が変わったことが原因のようですが、この状況を最も効率よく是正するにはどういった方法を用いればいいでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 「新しいメニュー」を作り、その上に「ユーザー設定ボタン」を置いた場合には前述マクロでは変更出来ないようです。 Wendy02さんが教えてくれた BuiltIn = False 使いつつ、一応、上記のパターンまでは変更出来ました。(検証 Excel2000) (例によって実際の変更部分2箇所はコメントアウトしてあります) 「ユーザー設定ボタン」を置いた場所によって、他にも対応が必要かも知れません。 後はご自分で考えて見てください。 Sub Test() Dim cmd As CommandBar, i As Integer, s As String Dim cmdPop As CommandBarPopup, c As CommandBarControl For Each cmd In Application.CommandBars For i = 1 To cmd.Controls.Count Select Case cmd.Controls(i).Type Case msoControlButton If cmd.Controls(i).BuiltIn = False Then s = cmd.Controls(i).OnAction Debug.Print s s = Replace(s, "\abcd\", "\efgh\") Debug.Print s 'cmd.Controls(i).OnAction = s End If Case msoControlPopup Set cmdPop = cmd.Controls(i) For Each c In cmdPop.Controls If c.Type = msoControlButton Then If c.BuiltIn = False Then s = c.OnAction Debug.Print s s = Replace(s, "\abcd\", "\efgh\") Debug.Print s 'c.OnAction = s End If End If Next c End Select Next i Next cmd End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 #1 のpapayuka さんのマクロで完了しないのでしたら、後は、手動で取り付けたらいかがですか? ただし、こうしてみたら、どうなるかなって思いますが。 If cmd.Controls(i).ID = 2950 Then ↓ If cmd.Controls(i).BuiltIn = False Then これは、OnAction プロパティが設定されているものを、すべて引っ張りだします。 このご質問に関しては、元々、Personal.xls はともかく、*.xlb ファイルを移植するのは、少し無理があったと思いました。通常、ツールバーは、単独の xls のファイルに一旦コピーして、それを別のPCに移動させる、という手段を取ります。そうすると、自動的に(否応なく)、別のPC の*.xlb ファイルにコピーされます。*.xlb の移植でトラブルがなかったのは幸いだと思います。
お礼
ありがとうございます。 教えて頂いた方法ではうまくいきませんでした。 取りあえず、PC2に"C:\Documents and Settings\abcd\Application Data\Microsoft\Excel"フォルダを作成し、そこに移行ファイルをおさめることで解決しました。
- papayuka
- ベストアンサー率45% (1388/3066)
VBAで変更してしまうとか、、、 ユーザー設定ボタンに割当てたマクロなら下記で変更可能かと思います。 例では実際の変更部分をコメントアウトしてありますけど。 Sub Test() Dim cmd As CommandBar, i As Integer, s As String For Each cmd In Application.CommandBars For i = 1 To cmd.Controls.Count If cmd.Controls(i).ID = 2950 Then s = cmd.Controls(i).OnAction Debug.Print s s = Replace(s, "abcd", "efgh") Debug.Print s 'cmd.Controls(i).OnAction = s End If Next i Next cmd End Sub
お礼
ありがとうございます。 一部のマクロが実行できるようになりましたが、依然としてマクロが見つからないと表示されるケースが多数あります。
お礼
ありがとうございます。 教えて頂いた方法ではうまくいきませんでした。 取りあえず、PC2に"C:\Documents and Settings\abcd\Application Data\Microsoft\Excel"フォルダを作成し、そこに移行ファイルをおさめることで解決しました。