気になる話題

「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

「TOKIO×嵐」から「関ジャニ∞村上」へ!日テレ2021元旦はDASH→夜ふかし!放送時間や内容は?

2020年まで10年間つづいていた元日恒例番組【TOKIO×嵐】 「ザ!鉄腕!DASH!!」→「嵐にしやがれ」 ですが、2020で嵐が活動を休止するということで「嵐にしやがれ」も終了します。 というこ …

no image

タスクスケジューラでネットワークドライブからファイルをコピーするバッチが実行できない

ネットワークドライブの割り当てで使用しているフォルダ内にあるファイルをコピーするバッチファイルを作成して、定期的に実行するためにタスクスケジューラに登録しました。 バッチを直接実行した場合は問題なく処 …

no image

上田桃子の結婚相手は元バスケ選手でお金持ち?出会いや馴れ初めを調査!

女子プロゴルファー上田桃子さんが、2021年6月15日(自身の35歳の誕生日)に結婚することが明らかになりました! 2021年6月15日は、天赦日と一粒万倍日が重なった最高の日ということです。 ところ …

no image

iPhoneSE発表!価格とスペックは?iPhone8との違いは?買いなの?

以前から待たれていた2020年版新型「iPhoneSE」がやっと発表されました。 今までの情報通り「iPhone SE」ではなく「iPhone8」の後継機種といった内容ですね。 予約開始:4月17日2 …

no image

「洋服の青山」就活用のリクルートスーツレンタルサービス!内容や使用方法・料金も調査!

「洋服の青山」が就活の学生ようにリクルートスーツのレンタルサービスを開始したそうです。 就職活動を行う学生にとってリクルートスーツは必需品ですが、就活以外に使用するわけでも無く買うのはもったいない感も …