Excel的x86巨集不能在x64上使用了,救命

版上的高手們,小弟需要你們的協助

目前工作上開的Excel是離職的前輩寫好的
之前也不需要做更改,就是開了直接匯入檔案然後跑表

但現在用X64的Excel開啟後,會出現下列錯誤訊息
Excel的x86巨集不能在x64上使用了,救命

稍微研究了一下,似乎要加入「Ptrsafe」的指令,才能正常啟動
於是我把程式碼給加了上去
Excel的x86巨集不能在x64上使用了,救命

加上去後,是可以執行了
Excel的x86巨集不能在x64上使用了,救命

可是我點檔案路徑選取,他卻不會跳出視窗讓我選檔案
請問,是少了哪一段程式碼呢!?

原始程式碼:

'取得檔案存在性相關函數:
Public Declare Function FindFirstFile Lib "kernel32" _
Alias "FindFirstFileA" _
(ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindClose Lib "kernel32" _
(ByVal hFindFile As Long) As Long

Public Const MAX_PATH As Long = 260
Public Const INVALID_HANDLE_VALUE = -1

Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

'??????:
Declare Function aht_apiGetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (OFN As tagOPENFILENAME) As Boolean

Declare Function aht_apiGetSaveFileName Lib "comdlg32.dll" _
Alias "GetSaveFileNameA" (OFN As tagOPENFILENAME) As Boolean
Declare PtrSafe Function CommDlgExtendedError Lib "comdlg32.dll" () As Long

修改程式碼:

'取得檔案存在性相關函數:
Public Declare PtrSafe Function FindFirstFile Lib "kernel32" _
Alias "FindFirstFileA" _
(ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare PtrSafe Function FindClose Lib "kernel32" _
(ByVal hFindFile As Long) As Long

Public Const MAX_PATH As Long = 260
Public Const INVALID_HANDLE_VALUE = -1

Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

'??????:
Declare PtrSafe Function aht_apiGetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (OFN As tagOPENFILENAME) As Boolean

Declare PtrSafe Function aht_apiGetSaveFileName Lib "comdlg32.dll" _
Alias "GetSaveFileNameA" (OFN As tagOPENFILENAME) As Boolean
Declare PtrSafe Function CommDlgExtendedError Lib "comdlg32.dll" () As Long
2013-01-04 13:05 發佈

aerwkimo wrote:
版上的高手們,小弟需...(恕刪)

微軟的說明
要一一修改需要時間,建議先換回x86的Excel,等修改測試ok再一起更新版本..

nwcs wrote:
微軟的說明要一一修改...(恕刪)


我可以說回不去了嗎...

這幾天一直在修程式碼...
前輩太強大了,參不透他是怎麼寫的

aerwkimo wrote:
我可以說回不去了嗎....(恕刪)

先備份原程式,把Declare 全部取代成 Declare PtrSafe...再把有問題的一一修正..
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?