none
リボンUIからのマクロ起動ができなくなった RRS feed

  • 質問

  • ExcelのリボンUIからマクロを起動して動作するツールを作成し利用していたのですが、

    突然、「申し訳ございません。ThisWorkbook.(関数名) が見つかりません。名前が変更されたか、移動や削除が行われた可能性があります。」と表示され、起動できなくなりました。

    Officeのコミュニティで質問したところ、最近同様の問題が発生した人がいたようで「(自分のファイル名.xlsm)!ThisWorkbook.(関数名) 」とすれば起動できることまでは試してわかったのですが、これはcustomUI14.xmlに記載する内容なので、自分のファイル名を動的に表現することができません。ThisWorkbook以外のModuleの関数を呼び出したとしても同様の状態です。

    何か良い解決方法をお持ちの方がいらっしゃいましたら、教えていただけると助かります。よろしくお願いいたします。

    2019年6月26日 9:36

回答

  • すみません、説明が足りませんでした。

    発生したのは、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
    2019年6月27日 1:54

すべての返信

  • mossdesuさん、はじめまして

    具体的なコードなど示された方が、情報が得られやすいと思いますが
    >(自分のファイル名.xlsm)!ThisWorkbook.(関数名)
    オブジェクト名.(関数名) では、ThisWorkbook.(関数名) が見つかりません。となると言う事でしょうか?
    xml側で動的にファイル名を取得すると言う事でしょうか?
    アドインファイルを作成されていると言う事でしょうか?

    アドイン使用ではないですが、以前私自身が書いたツールの一部で、現在も稼働中です。
    Excel2010で作成、2013対応のため一部変更、2016 201904更新時の互換性で一部変更
    (下記コードには、変更箇所は含まれていません)

    VBA

    Open_proess(オブジェクト名標準モジュール)に記載

    Sub MyAddInInitialize(ribbon As IRibbonUI)
        Set MyRibbon = ribbon
        flg = False
    End Sub

    Sub 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 Sub

    Sub 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 Sub

    xml
    一部抜粋
        <tab id="CustomTab" label="-*****フォーム-">
            <group id="TestGroup" label="-@@@@-" autoScale="true">
                <labelControl id = "label1" label = "&#xD;&#xA;@@@@@@抽出&#xD;&#xA;"/>
                <button id="order_Button1" label="@@@@"
                    size="large" imageMso="ImportTextFile"
                    screentip="@@@@のCSVファイルを読み込みます"
                    onAction="Open_proess.Start" />
            </group>
       ・・
       ・・・
      </tab>

    とりあえず、手元にあったので掲示します。


    • 編集済み Takumi_Q 2019年6月26日 15:34 コメント追記
    2019年6月26日 15:25
  • 普通のマクロブック(xlsm)ですか?それともアドイン(xlam)ですか?

    それから、エクセルのバージョンは?


    2019年6月26日 17:41
  • すみません、説明が足りませんでした。

    発生したのは、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
    2019年6月27日 1:54
  • 解決して何よりでした。

    蛇足ですが、onActionに「(自分のファイル名).xlsm」と入れてしまうと、ブック名を変えることによって動作しなくなると思うので、当初の通り、この記述は消しておいた方がいいと思います。

    ただ、アドインブックの場合は、複数のアドイン内に同じ名前のプロシージャが存在する場合、最初に開かれたアドインのプロシージャが読み込まれてしまいます。

    これを回避するため、「(自分のファイル名).xlsm」を付ける事は有用とは思いますが、それよりも、アドインごとにプロシージャ名をユニークなものにした方がベターかとも思います。

    2019年6月27日 3:27
  • ご指摘の通り、アドインならともかく、マクロブックのファイル名変更に対応できず

    困っていたのですが、一時的なバグみたいなものでよかったです。

    アドバイスありがとうございます。


    2019年6月27日 9:24