トップ回答者
リボンUIからのマクロ起動ができなくなった

質問
-
ExcelのリボンUIからマクロを起動して動作するツールを作成し利用していたのですが、
突然、「申し訳ございません。ThisWorkbook.(関数名) が見つかりません。名前が変更されたか、移動や削除が行われた可能性があります。」と表示され、起動できなくなりました。
Officeのコミュニティで質問したところ、最近同様の問題が発生した人がいたようで「(自分のファイル名.xlsm)!ThisWorkbook.(関数名) 」とすれば起動できることまでは試してわかったのですが、これはcustomUI14.xmlに記載する内容なので、自分のファイル名を動的に表現することができません。ThisWorkbook以外のModuleの関数を呼び出したとしても同様の状態です。
何か良い解決方法をお持ちの方がいらっしゃいましたら、教えていただけると助かります。よろしくお願いいたします。
回答
-
すみません、説明が足りませんでした。
発生したのは、Excel for Office 365MSO(16.0.11727.20188)64ビットで、普通のマクロブックとアドイン共にです。
申し訳ないのですが、最新の更新(16.0.11727.20222)適用しましたら修正されておりました。
customUI14.xmlの内容は、以下のように記載し稼働しておりました。
<ribbon> <tabs> <tab id="xxxx" label="xxxxx"> <group id="grpXXX" label="xxxx" imageMso="MicrosoftVisualFoxPro"> <button id="btnXXX" label="xxxx" size="large" imageMso="MicrosoftVisualFoxPro" onAction="'ThisWorkbook.(関数名) 1'" /> </group> </tab> </tabs> </ribbon>
しかし26日に起動したところエラーが発生し、試したところ以下の記載であれば動くことがわかりました。
<ribbon> <tabs> <tab id="xxxx" label="xxxxx"> <group id="grpXXX" label="xxxx" imageMso="MicrosoftVisualFoxPro"> <button id="btnXXX" label="xxxx" size="large" imageMso="MicrosoftVisualFoxPro" onAction="'(自分のファイル名).xlsm'!'ThisWorkbook.(関数名) 1'" /> </group> </tab> </tabs> </ribbon>
xmlファイル内なので、動的に自分のファイル名を変えられず、解決できておりませんでした。
- 回答としてマーク mossdesu 2019年6月27日 9:24
すべての返信
-
mossdesuさん、はじめまして
具体的なコードなど示された方が、情報が得られやすいと思いますが。
>(自分のファイル名.xlsm)!ThisWorkbook.(関数名)
オブジェクト名.(関数名) では、ThisWorkbook.(関数名) が見つかりません。となると言う事でしょうか?
xml側で動的にファイル名を取得すると言う事でしょうか?
アドインファイルを作成されていると言う事でしょうか?
アドイン使用ではないですが、以前私自身が書いたツールの一部で、現在も稼働中です。
Excel2010で作成、2013対応のため一部変更、2016 201904更新時の互換性で一部変更
(下記コードには、変更箇所は含まれていません)VBA
Open_proess(オブジェクト名標準モジュール)に記載
Sub MyAddInInitialize(ribbon As IRibbonUI)
Set MyRibbon = ribbon
flg = False
End SubSub Start(ByVal control As IRibbonControl)
Dim ribbon As IRibbonUI
If Not MyRibbon Is Nothing Then
Call Button_Click(control)
MyRibbon.InvalidateControl "Myinfo"
Else
’参照が切れている場合
MsgBox ("エクセルを再起動する必要がります。")
End If
End SubSub Button_Click(control As IRibbonControl) ' ボタンのクリック処理
’--質問に対しての提案-----------
Dim myWorkBook as string
myWorkBook = ThisWorkbook.Name
’myWorkBook =Application.ActiveWorkbook.Name
’--質問に対しての提案-----------Select Case control.ID
Case "order_Button1"
If 条件 Then
Call (myWorkBook.xlsm)!ThisWorkbook.(関数名) ’???
’対象のファイルの関数使用ならこんな書き方ではないのでアドインですかね
Else
End If
Case "order_Button2"
~Button
Case "INPUTPassword"
Password_form.Show
End Select
Set ・・・ = Nothing
End Subxml
一部抜粋
<tab id="CustomTab" label="-*****フォーム-">
<group id="TestGroup" label="-@@@@-" autoScale="true">
<labelControl id = "label1" label = "
@@@@@@抽出
"/>
<button id="order_Button1" label="@@@@"
size="large" imageMso="ImportTextFile"
screentip="@@@@のCSVファイルを読み込みます"
onAction="Open_proess.Start" />
</group>
・・
・・・
</tab>とりあえず、手元にあったので掲示します。
- 編集済み Takumi_Q 2019年6月26日 15:34 コメント追記
-
すみません、説明が足りませんでした。
発生したのは、Excel for Office 365MSO(16.0.11727.20188)64ビットで、普通のマクロブックとアドイン共にです。
申し訳ないのですが、最新の更新(16.0.11727.20222)適用しましたら修正されておりました。
customUI14.xmlの内容は、以下のように記載し稼働しておりました。
<ribbon> <tabs> <tab id="xxxx" label="xxxxx"> <group id="grpXXX" label="xxxx" imageMso="MicrosoftVisualFoxPro"> <button id="btnXXX" label="xxxx" size="large" imageMso="MicrosoftVisualFoxPro" onAction="'ThisWorkbook.(関数名) 1'" /> </group> </tab> </tabs> </ribbon>
しかし26日に起動したところエラーが発生し、試したところ以下の記載であれば動くことがわかりました。
<ribbon> <tabs> <tab id="xxxx" label="xxxxx"> <group id="grpXXX" label="xxxx" imageMso="MicrosoftVisualFoxPro"> <button id="btnXXX" label="xxxx" size="large" imageMso="MicrosoftVisualFoxPro" onAction="'(自分のファイル名).xlsm'!'ThisWorkbook.(関数名) 1'" /> </group> </tab> </tabs> </ribbon>
xmlファイル内なので、動的に自分のファイル名を変えられず、解決できておりませんでした。
- 回答としてマーク mossdesu 2019年6月27日 9:24
-