2017-07-18 51 views
0

私は32ビットで書かれたかなり大きいExcelマクロを持っていますので、変換する必要があります。この変換を行う簡単な方法はありますか? 大きなマクロであり、行単位で変換することはできません。Excelのマクロを32ビットから64ビットに変換する

以下のコードの一部が含まれています。

'32-bit API declarations 
Declare Function SHGetPathFromIDList Lib "shell32.dll" _ 
    Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long 

Declare Function SHBrowseForFolder Lib "shell32.dll" _ 
    Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long 

Sub DisplayDirectoryDialogBox() 
    Dim Msg As String 
    FileCount = 0 
    Msg = "Select a location containing the files you want to list." 
    SelectedDir = GetDirectory(Msg) 
    If SelectedDir = "" Then End 
    With Application 
     .StatusBar = "WAIT..." 
     .ScreenUpdating = False 
+0

すべての宣言に手動で 'PtrSafe'を追加します。 'LongPtr'へのポインタを表す宣言中の全ての' Long'を手動で変換します(コード内では 'pidl'だけです)。これらのパラメータとして渡された手続き中の 'Long'変数の宣言を' LongPtr'に手動で更新します。他の方法はありません。置き換えをある程度自動化する可能性のあるリファクタリングツール/アドインを調べようとするかもしれません。 – GSerg

+0

ありがとうございます。私はこれを試み、あなたに知らせるでしょう。 –

+0

@GSergはうまくいくようです。回答欄に入れておきます。ありがとう。 –

答えて

0

Gsergにクレジット:

手動ですべての宣言にPtrSafeを追加します。 LongPtrsへのポインタを表す宣言内のすべてのLongを手動で変換します(コード内ではpidlのみになります)。これらのパラメータとしてLongPtrに渡されるプロシージャのLong変数の宣言を手動で更新します。他の方法はありません。置き換えをある程度自動化する可能性のあるリファクタリングツール/アドインを調べようとするかもしれません。 - GSerg Jul 18 at 8:55

関連する問題