気になる話題

「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

「a-nation online 2020」見逃し配信動画はdTVで!視聴方法は?無料で見れる?

8月29日に開催された総勢26組による「a-nation」史上初のオンラインフェス 「a-nation online 2020」 がdTVで配信されます! 計6時間にも及んだステージのうち、なんと4時 …

no image

元TOKIOの山口達也容疑者が酒気帯び運転で現行犯逮捕!

元TOKIOの山口達也容疑者(48歳)が酒気帯び運転で道交法違反で現行犯逮捕されました。 午前9時半ごろ、山口容疑者が運転するバイクが信号待ちをしている車に追突したそうです。 その時に警察が山口容疑者 …

no image

金曜ロードSHOW(金ロー)2020年放送予定作品まとめ

金曜ロードSHOW!の2020年の放送作品リストです。 2020年は、視聴者リクエストや地上波初登場作品などで、いつもとは少し違った作品が放送されています。 それでは、2020年の放送作品のラインナッ …

no image

Lexar NM790 NVMe SSD(蝉SSD)を外付けにしてみた!

最近いろいろなメーカーから発売されている、いわゆる「蝉SSD」ですが セール中なら2TBで13,000円程度で買えるものもありますね。 少し前になりますが「HIKUSEMI FUTURE」の2TBを自 …

no image

十日恵比須(福岡)正月大祭の日程は?アクセスや混雑状況は?

福岡で商売をやっている人は、必ずと言っていいほど訪れている十日恵比須神社の正月大祭 商売繁盛の神様で、ぜひ抑えておきたいイベントです!縁起物があたる福引での「大当たりー!」という声が特に有名ですね!! …