気になる話題

「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

福岡の厄払いは若八幡宮(やくはちまん)コロナ対応は?受付時間、駐車場や混雑する日も調査

福岡の厄払いで有名な神社といえば『若八幡宮』です。 若八幡宮は、「厄払い」の神社として福岡では大変人気があります。 毎年厄払いをしてもらうために、若八幡宮に訪れる方が大勢います。 この記事では、そんな …

佐川急便の保管中とは?早く届けてもらう対応方法は?

Amazonで買い物した後に、記載されていた配達日に荷物が届かないということがありました。 この時、佐川急便の追跡サービスで調べてみると「保管中」になっていました。 ということで「保管中」になって対応 …

no image

伊勢谷友介の歴代彼女は?結婚してる?DVや大麻を吸うよう洗脳の話も

2020年9月8日に俳優の伊勢谷友介が大麻取締法違反の疑いで逮捕されました。 彼女に対してのDV疑惑などが言われていましたが、ついに大麻で逮捕! さらに「彼女を大麻を吸うよう洗脳」という話も! これが …

no image

石垣のりこ議員の炎上発言は今回だけじゃなかった!病気を癖と投稿

立憲民主党の石垣のりこ参議院議員がTwitterで行った投稿が炎上しています。 他の立憲民主党の議員でも、心配するような発言をしている中で、この発言はかなり異常だと思います。 しかも石垣のりこ議員は、 …

no image

高菜、食べてしまったんですか?で有名な看板のないラーメン屋「博多元気一杯」のカップラーメン発売

何年か前に「高菜、食べてしまったんですか?」というのが話題になり、いまだにコピペで以下の文章をみかける 「高菜、食べてしまったんですか!!!!????」。多分、僕の口の周りに微妙に唐辛子の味噌がついて …