アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります

最近、Windows11およびExcel64ビット版に変更していろいろエラーが発生しています
その中で今までWindows10およびExcel32ビット版では問題なかったリボンのリカバリーで
オーバーフローエラーで悩まされています

'***初期設定***
'...レジストリを使った、リボンコントロール用(イレギュラーに止まった時のカバー用)
Public Declare PtrSafe Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal cbLen As Long)

Public rbRibbon520 As IRibbonUI ' リボン
Public rbCheckBox520 As Boolean

Sub Ribbon_OnLoad520(ribbon As IRibbonUI) ' リボンの初期処理

Set rbRibbon520 = ribbon ' リボンの表示を更新できるようにするためにリボンをセットする
SaveSetting "RibbonApp", "Main", "RibbonPointer520", CStr(ObjPtr(ribbon)) '...リボンのポインタをレジストリに記録
rbRibbon520.Invalidate ' リボンの描画を更新する

End Sub

'***エラー時***
If rbRibbon520 Is Nothing Then

'...前回イレギュラーで終わったため、レジストリからチェックボックスの値を読み込む
rbCheckBox520 = GetSetting("MyChkBox520", "Main", "IsCheckBox520")

'...オブジェクトのリセット(レジストリからのリカバリー)
Set rbRibbon520 = GetRibbon(CLng(GetSetting("RibbonApp", "Main", "RibbonPointer520")))
rbRibbon520.Invalidate ' リボンの描画を更新する

のように作成しています
プログラムは上記のチェックボックスを使って処理していますが
デバッグ等で途中で止めた場合、再スタート時にエラーになってしまいます

Windows11とWindows10の違いなのか、
Excel32版とExcel64版によるものかも分かっていません

もし分かりましたら教えてください
以上、よろしくお願い申し上げます

A 回答 (2件)

こんばんは



Public Declare PtrSafe Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal cbLen As Long)

Private Declare PtrSafe Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal cbLen As LongPtr)

??
Private Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
Dim p As LongPtr は・・・


'...オブジェクトのリセット(レジストリからのリカバリー)をExcel64版に

Set rbRibbon520 = GetRibbon(CLngPtr(GetSetting("RibbonApp", "Main", "RibbonPointer520")))

違うかも知れませんが確認してみてください

ちなみに以前作ったアプリはレジストリからのリカバリーをあきらめ
再起動するロジックに変えました
    • good
    • 0
この回答へのお礼

早々のご連絡、本当にありがとうございます
No.2の連絡を含め、テストしてみたところ
エラーは出なくなりました

ほかにもLongPtrの問題が発生していましたが
少しづつ解消されてきました

適切なご指示に心から感謝します
これからもよろしくお願い申し上げます

お礼日時:2023/07/05 12:25

#1です


#1は自身のストックブックに書いてあるコードです
??
Private Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
Dim p As LongPtr は・・・
は関係ないですね

当時参考にしていたサイトを見つけました(たぶん)
https://www.ka-net.org/ribbon.html
https://www.ka-net.org/ribbon/ri64.html

諦めた理由は 2010で作成したのですが後に
OSバージョン、Excelバージョン 32ビット・64ビット
バージョンによってXMLの変更やコントロールのプロパティが使えなかったり・・・で リボンと処理を作り込んで既存リボンを排除する事で
リボンのリカバリーの必要性が無くなったからです
(現在もそのアプリイは問題なく動いています)
    • good
    • 0
この回答へのお礼

早速、ご回答ありがとうございます

NO.1できました
また、参考になるURLも教えていただきありがとうございました
とても助かりました

今後ともよろしくお願いいたします

お礼日時:2023/07/05 12:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!