本ページはプロモーションが含まれています。

OFFICE2019から64ビット版のインストールがデフォルトに!365も同様 明示的に32ビット版をインストールする方法 マクロの挙動には注意が必要

先日、何気なくマクロを利用したエクセルファイルを開くと、コンパイルエラーが。

コンパイルエラー

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

目次

知らない間にOffice365が64ビット版になっていた

そういえば最近、Officeをアンインストールして再インストールしました。そのときにOffice365が64ビット版になっていたんですね。

「Microsoft Teams」も復活していました。

そもそも、MicrosoftはOfficeは32ビットを推奨していたのですが、調べてみるとOffice2019からは明示的に選択をしないと64ビット版がインストールされるようになったようです(それにともない365も64ビット版がデフォルトでインストールされるようになりました)。

Office2016まではデフォルトで32ビット版がインストールされていた

Office2016までは、Microsoftでは32ビット版を推奨していました。

インストール プロセスを始める前に、明示的に 64 ビット版を選択しなければ、32 ビット版の Office が自動的にインストールされます。

64 ビット版または 32 ビット版の Office を選択する(Office 2016)

ところが、「新しいバージョン」(オフィス2019・365)では、デフォルトでは64ビット版がインストールされるように変更されました。

インストール プロセスを始める前に、明示的に 32 ビット版を選択しなければ、64 ビット版の Office が自動的にインストールされます。

64 ビット版または 32 ビット版の Office を選択する 新しいバージョン

古いパソコンではまだまだ32ビット版のWindows10を利用されている方も多いと思いますが、その場合はWindows10に合わせて32ビット版がデフォルトでインストールされます。

ところが、Windows10 64ビット版を利用されている方は、そのままOffice2019または365をインストールすると64ビット版Officeがインストールされます。

インストールされているOfficeが64ビット版か32ビット版か確かめる方法

インストールされているOfficeが64ビット版か32ビット版かを確かめる方法は簡単です。

エクセルなどのアプリから「ファイル」「アカウント」「Excel のバージョン情報」をクリックします。

「ファイル」「アカウント」「Excel のバージョン情報」

すると、「エクセルのバージョン情報」が表示され、末尾に「32ビット」または「64ビット」が表示されます。

Microsoft Excel for Office 365 のバージョン情報

明示的に32ビット版Officeをインストールするには

すでに64ビット版Officeがインストールされている場合は、一旦アンインストールする必要があります。その後、再び32ビット版Officeを再インストールします。

Officeのアンインストール中

自分はOffice2019を持っていないのですが、Office365とほぼ同様に選択をすることが可能です。

Office365の場合は、「portal.office.com」にアクセスして、「Officeのインストール」の前に「その他のインストールオプション」をクリックします。

その他のインストールオプション

インストール情報が表示されますので、「バージョン」から必要なビット数を選択してから「Office のインストール」をクリックすればインストールしたいバージョンを選択することができます。

明示的に64ビットと32ビットが選択できる

64ビット版Officeでのトラブルは今のところマクロだけ

今のところ、自分の環境では64ビット版Officeでのトラブルは最初にお伝えした「コンパイルエラー」だけです。

64ビット版ではコンパイルエラーになる

冒頭でもお伝えしたように、エラーメッセージは「このプロジェクトのコードは、64 ビット システムで使用するために更新する必要があります。Declare ステートメントの確認および更新を行い、次にDeclare ステートメントに PtrSafe 属性を設定してください。」でしたから、マクロを下記のように、64ビット版の場合と32ビット版で「#If」関数で条件分岐するだけです。

「VBA7」「Win64」(64ビット版エクセル)のときは、Declareの後に「PtrSafe」を追加し、そうでなければ#Elseで従来のDeclareステートメント(32ビット版)を実行しています。

下図では、#Else以下が赤字になっていますが、32ビット版でも64ビット版でも問題なく動作します。

条件分岐で64ビットと32ビットに対応

Microsoftは今後64ビット版Officeを推奨してくる

今後、MicrosoftはOfficeも64ビット版を推奨してきます。いずれOfficeの32ビット版が消滅する恐れもあります。

64 ビット版を選択する理由
一般に、64 ビット版の Windows を実行しているコンピューターでは、従来の 32 ビット版と比べて、処理能力やメモリなどのリソースがより豊富です。 また、64 ビット アプリケーションは、32 ビット アプリケーションよりも多くのメモリにアクセスできます (最大 1,840 万ペタバイト)。 このため、シナリオに大きなファイルや大きなデータ セットの操作が含まれており、かつ、お使いのコンピューター上で 64 ビット版の Windows が実行されている場合、次のようなケースでは、64 ビット版が適しています。

64 ビット版または 32 ビット版の Office を選択する

上記のサイトでは、64ビット版を利用する際の確認事項がいくつか紹介されています。

今回のマクロのエラーについては下記のように記されていました。

VBA コードで Declare ステートメントを使用する ほとんどの VBA コードは、64 ビット版と 32 ビット版を使用する場合、変更する必要はありません。ただし、ポインターやハンドル用に、Long のような 32 ビット データ型を使用して、Declare ステートメントで Windows API を呼び出す場合は、変更が必要です。 ほとんどの場合、PtrSafe を Declare に追加して、Long を LongPtr に置換すると、Declare ステートメントは 32 ビット版と 64 ビット版の両方に対応します。 ただしこれは、まれなケースで Declare する 64 ビット版 API が存在しない場合は、実行できません。 64 ビット版の Office で実行できるように、変更する必要がある VBA の内容の詳細については、「64 ビット Visual Basic for Applications の概要」を参照してください。

64 ビット版または 32 ビット版の Office を選択する

今後、次のバージョンOffice 2022?が販売されるまでの間に、64ビット版Officeを利用して、過去の資産を少しずつ64ビット版で対応できるように準備をしておく必要があるかもしれません。

関連コンテンツ

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次