CELLNETS Excel開発の専門会社

Excel64ビット非対応コンパイルエラー!?

Excel64ビット版とは

Excelマクロ起動時に、突然の「コンパイルエラー」
このコンパイルエラーについて、回避策をまとめました。

コンパイルエラー:

「このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります。Declareステートメントの確認および更新を行い、次にDeclareステートメントに、PtrSafe属性を設定してください。」
 
という内容でエラーが表示される場合の対処法についてご紹介したいと思います。
 
Office 32ビット版の環境でExcelマクロを利用していたが、最近、Office365導入により、新たなパソコン環境で当該エラーに遭遇するケースがありますが、VBAソースへの部分改修などで対応が可能です。

Excel には、[32ビット版]と[64ビット版]が存在する?

Microsoft Excel アプリケーションは、[32ビット版]と[64ビット版]が存在します。
 
Excelをインストールする際に、これまでは、「32ビット版」が規定値だったのですが、現在では、「64ビット版」が規定値に変わりました。
 
あまり気にすることなく、規定値のままインストールする、という方が多いと思いますが、お使いのExcelが64ビット版であり、Excelマクロ内で、PtrSafe宣言なしで、WindowsAPIを使用している場合、このエラーが表示されますので、この場合は、APIステートメント内での宣言が必要です。

Excel 32ビット/64ビットはどこで確認できる?

Excelを起動>ファイルメニュー>アカウント>Excelのバージョン情報
 
で32ビット版/64ビット版いずれかのエディションが確認できるので、まずは、確認してみましょう。
 
こちらが64ビット版の場合、必要に応じて、Excelマクロツール内の宣言の部分修正が必要です。

「Declare」ステートメントの後に「PtrSafe」付与

【64bit対応①】
たとえば、以下のような「Declare」ステートメントが使われている場合は、「Declare」の直後に「PtrSafe」付与が必要です。

‘////////////////////////////////////////////////////////////////////////////////////////

‘/ 64ビット版【対応その1】:「Declare」ステートメントの後に「PtrSafe」付与

‘////////////////////////////////////////////////////////////////////////////////////////

‘——————–【ネットワークへの参照アクセスを可能に

Declare PtrSafe Function SetCurrentDirectory Lib “kernel32” Alias “SetCurrentDirectoryA” (ByVal CurrentDir As String) As Long

 

‘——————–【Path存在チェックを可能に

Declare PtrSafe Function PathFileExists Lib “shlwapi” Alias “PathFileExistsA” (ByVal lpszPath As String) As Double

「#If VBA7 Then」分岐のソースを追記

【64bit対応②】

‘////////////////////////////////////////////////////////////////////////////////////////

‘/ 64ビット版【対応その2】「#If VBA7 Then」分岐のソースを追記

‘////////////////////////////////////////////////////////////////////////////////////////

#If VBA7 Then

Private Declare PtrSafe Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As LongPtr)

#Else

Private Declare  Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)

#End If

ExcelVBAバージョンの確認

ExcelVBAバージョンの確認は、Excelを起動し、[開発タブ]からExcelVBEを表示し、「バージョン情報」で確認ができます。

CSVデータ取込で、Excelメモリ不足って?

ご利用のExcelが32ビット版の場合で、大量なデータをExcelに取り込むような場合、例えば、膨大なCSVデータをインポートしてみた場合、次のエラーに遭遇。

「この操作を完了するにはメモリが不足しています。扱うデータ量を減らすか、他のアプリケーションを終了してください。使用できるメモリを増やすには、以下を検討してください。
-64ビット版のMicrosoft Excel を使う。」
 
よっぽど大きなFileサイズでない限り、このエラーに遭遇することも少ないのですが、この場合は、十分に検討して、Excel[64ビット版]に移行する必要があります。32ビットでしが動作しないプラグインなどもあるため、主流は64ビットに移行してゆくと思われますが、32ビットで動作するならその方が安心かもしれません。
 
但し、Fileサイズが直接要因の場合、それでも取込ができないケースもありますので、「手間をかけて64ビット版に移行したものの、結局、32ビット版に戻す…」というのは避けたいものですので、十分に、必要性を検討する必要があるかもしれません。

関連する記事

関連記事

Excelシステム開発

Excelを複数人で共同編集できるExcel for the webとは?Excelオンラインの共有手順と業務改善事例

更新日:2026年9月25日

Excelシステム開発

システム開発の依頼ガイド|費用相場・流れ・会社の選び方と「作りすぎない」判断軸

更新日:2026年9月24日

Excelシステム開発

予約システムの開発依頼にかかる費用相場|小規模店舗は100万円以下で作れる

更新日:2026年9月24日

Excelシステム開発

CRMシステム開発の外注費用は?依頼先の選び方と100万円以下に抑える考え方

更新日:2026年9月24日

Excelシステム開発

勤怠管理システム開発の外注費用相場|100万円以下で作る方法とプラン別料金【2026年版】

更新日:2026年9月24日

Excelシステム開発

SFAシステム開発の依頼相場は?高額SaaSに払い続ける前に知るべき「安く作る」現実解

更新日:2026年9月24日

Excelシステム開発

業務システム開発の依頼はいくら?費用相場と「100万円以下」で頼む方法

更新日:2026年9月24日

Excelシステム開発

受発注システム開発の費用相場は?外注料金の内訳と安く抑える方法を解説

更新日:2026年9月24日

Excelシステム開発

販売管理はエクセルで十分?売上管理表・発注管理表の作り方と「限界」の乗り越え方

更新日:2026年9月5日

newsite