気になる話題

「VBA」このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります?対応方法は?

投稿日:

古いExcelで作られたVBAの内容に処理を追加して欲しいという依頼がありました。

VBAについては、ほとんど仕様も変わっていないので古くても問題ないだろうと思っていたところ

このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります。Declareステートメントの確認および更新を行い、次にDeclareステートメントに PtrSafe 属性を設定してください。

というメッセージが表示されVBAが動きません。

目次

「このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります」原因は?

このメッセージについて調べたところ、

「PtrSafe キーワードを含む Declare ステートメントが推奨される構文です。 64 ビットの数量を格納する必要がある Declare ステートメント (パラメーターと戻り値) のすべてのデータ型が更新され、ポインターとハンドルに LongLongまたは LongPtrを使用した後にのみ、32 ビットおよび 64 ビットプラットフォームの VBA バージョン 7 の開発環境で PtrSafe を含むステートメントが正しく動作します。 VBA バージョン 6 以前との下位互換性を確保するには、次の構造を使用します。」

というこでした。

つまり

「64ビットのVBA バージョン 7を使うときは、DeclareにはPtrSafeを付けろ」

ということらしいです。

なんのこっちゃ良くわからないのですが、PtrSafeを付ければ安全ですということなのか?

※Declareについては、簡単にいうと動的リンクライブラリ(DLL)をVBAなどから使うための宣言に使用します。

対応方法は?

実際の対応方法については簡単です。

こちらに記載されている内容に修正するだけで終わります。

Declare Sub → Declare PtrSafe Sub

Declare Function → Declare PtrSafe Function 

これだけで正常に動作するようです。

VBA バージョン 6 以前も使う場合は

#If VBA7 Then
Declare PtrSafe Sub…
#Else
Declare Sub…
#EndIf

で分ける必要がある問うことみたいですね。

まとめ

こんかいの件については、VBAでDeclareを使用することが、ほとんどなかったので全く知りませんでした。

ただ、これからも「昔作ったVBAのプログラムをそのまま使いたい」という要望はあると思います。

VBAの書き方自体はほとんど変わっていないのですが、たまにこういう仕様変更もあるので焦らずに対応したいですね。

 

 

-気になる話題

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

ドコモとアマゾンが連携!「ギガホ」「ギガライト」利用者はアマゾンプライム1年間無料!12月1日から

NTTドコモが、アマゾンとの提携を発表しました。 「ギガホ」「ギガライト」の契約者は、年額4900円または月額500円の 「Amazonプライム」の会員資格が1年間付与されるそうです。 目次 受付日時 …

no image

空手界のプリンス【西村拳】に複数の彼女?プロフィールや経歴も調査!

東京五輪の空手の日本代表に内定している「空手界のプリンス」こと西村拳さんが複数女性と連夜の「性拳突き」という内容が報道されました。 東京オリンピックの代表選手といえば、つい最近も瀬戸大也さんの不倫が話 …

no image

【速報】石原さとみの結婚!相手は一般男性?画像・職業は?

女優の石原さとみさんが結婚を発表しました! 同年代の一般男性で同居はまだ。 入籍は良き日を選んで年内にする予定・式・披露宴は未定ということです。 というかいきなりの結婚報告ということでかなりの衝撃です …

no image

送った覚えのないメールがから大量に送られてきた!対処法と原因は?

1週間ほど前の話ですが、いきなり<MAILER-DAEMON>から「Undelivered Mail Returned to Sender」というメールが大量に送られてきました。 以前借り …

no image

逃走中史上初!一般参加の古橋法生が逃げ切り成功!イケメンのシングルファーザー!

2019年11月23日(土)に放送された「逃走中」は 放送15周年×サザエさん放送50周年のコラボ企画でした。 そこで話題になっているのが、初の一般参加で見事逃げ切った 古橋法生(のりお)さんです。 …