いつもお世話になります
最近、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版によるものかも分かっていません
もし分かりましたら教えてください
以上、よろしくお願い申し上げます
No.1ベストアンサー
- 回答日時:
こんばんは
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")))
違うかも知れませんが確認してみてください
ちなみに以前作ったアプリはレジストリからのリカバリーをあきらめ
再起動するロジックに変えました
早々のご連絡、本当にありがとうございます
No.2の連絡を含め、テストしてみたところ
エラーは出なくなりました
ほかにもLongPtrの問題が発生していましたが
少しづつ解消されてきました
適切なご指示に心から感謝します
これからもよろしくお願い申し上げます
No.2
- 回答日時:
#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の変更やコントロールのプロパティが使えなかったり・・・で リボンと処理を作り込んで既存リボンを排除する事で
リボンのリカバリーの必要性が無くなったからです
(現在もそのアプリイは問題なく動いています)
早速、ご回答ありがとうございます
NO.1できました
また、参考になるURLも教えていただきありがとうございました
とても助かりました
今後ともよろしくお願いいたします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
実行時エラー48発生時のDLL特定...
-
マクロについて教えてください...
-
VBAで入力規則の設定がうまくい...
-
Accessで定型フォーマットのExc...
-
VBAがブレークモードになっ...
-
VBS実行時エラー オブジェクト...
-
なぜこんな初歩的なVBAのIf文で...
-
VB6のDateDiff関数が、お客さん...
-
エクセルエラー13型が一致しま...
-
VBAで実行時エラー'424' オブジ...
-
VBA リボンののリカバリーでオ...
-
AccessVBAでExcelを起動し、罫...
-
ADODB.Streamを使用してUTF-8を...
-
ExcelVBAで、ユーザー定義型は...
-
実行時エラー -'-2147417848
-
Outlook.ApplicationをCreateOb...
-
excel vbaでレート取得について...
-
VBAでのエラー
-
VB6+SQL サーバー 2000 で 実行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
実行時エラー48発生時のDLL特定...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
エクセルエラー13型が一致しま...
-
マクロについて教えてください...
-
【Excel VBA】マクロをボタンに...
-
VBAでのエラー
-
ExcelVBAで、ユーザー定義型は...
-
EXCEL VBAマクロ中断でデバッグ...
-
ExcelVBA Range クラスの Page...
-
VBSで変数の宣言はできないので...
-
実行時エラー3001「引数が間違...
-
実行時エラー -'-2147417848
-
なぜエラーになるのでしょうか...
-
VBS実行時エラー オブジェクト...
-
Outlook.ApplicationをCreateOb...
-
プロシージャ名の取得
-
VB6+SQL サーバー 2000 で 実行...
-
VBAで、定数式が必要ですのエラ...
おすすめ情報