VBA_ Convert from 32bit to 64bit VBA7, Win64, PtrSafe, LongPtr
엑셀 2016버전 이전에 작성된 VBA CODE를 재사용 하려다보면 32bit로 작성되어 64bit 엑셀에서는 일부 오류가 발생합니다.
일단 가장 먼저 해볼 수 있는 것은 위 MS문서에 따라서 64bit 사용에 따른 문구수정입니다.
최근 엑셀은 VBA7로 간주하고 작업하면 무리가 없습니다.VBA6버전은 한참 오래 전 버전입니다.
#If VBA7 Then
로 표현되는 64bit 구문에서는 상황에 따라 Declare PtrSafe
로 PtrSafe 단어를 추가하고 Long >> LongPtr
로 변환해 주는 작업을 해야 합니다. 이는 코드를 보고 판별해야 해서 항상 정해진 규칙이 있는 것이 아닙니다.
1 | #if VBA7 then |
예를 들어보면 기존에는 1줄로 작성된 부분이 있다고 가정합니다.
코드는 아래 줄입니다.
Private Declare Function GetCurrentProceessID ….
이 부분을 VBA7일 때와 아닐 때로 구분하여 #If / #Else 문구로 구분작성을 해주는 것입니다.