Excel VBA 64bit 버전의 "Declare 문"오류를 해결하는 방법

소개



Windows 10으로 교체하여 Excel도 64bit 버전을 설치했습니다.
특히 문제 없을 것이다…라고 고를 묶고 있었습니다만, 32bit판으로부터 수정하지 않으면 움직이지 않는 VBA가 나왔으므로, 후학을 위해서도 써 남겨 두고 싶습니다.

문제가 발생한 매크로는 어떤 내용?



Win32API URLDownloadToFile에서 파일을 다운로드하는 매크로였습니다.
그럼~Win32API라는 이름이니까 32bit 전용이군요~
64bit용으로 수정하지 않으면 움직이지 않네요~💦

Declare 문 확인 및 업데이트 오류



오류 메시지를 캡처합니다.


Declare Functio를 Declare PtrSafe Function으로 수정



오류 메시지에 모든 답변이 작성되었습니다.
* 수정 전

  • 수정 후


  • Function 앞에 PtrSafe를 덧붙여서 깔끔한 오류가 사라졌습니다.
    이것으로 매크로를 실행할 수 있다~라고 생각했는데, 이번에는 다른 에러가 발생!

    컴파일 오류 형식이 일치하지 않습니다.





    유형이 다르다고? 아이에에에! 닌자!? 닌자 난데!?
    어떻게 봐도 정수로 좋을 것입니다만(# ゚Д゚) 아직 아이가 먹고 있을 것입니다만!

    Long형을 LongLong형으로 수정



    아무래도 64bit가 되어 취급할 수 있는 수치가 늘어났기 때문에 대용량의 상자로 할 필요가 있는 것 같습니다.
  • 수정 후



  • 그 만마 Long을 덧붙인다는, 무려 장난 쓰는 방법일까?
    하지만 알기 쉽고 좋은!
    ※추기
    코멘트가 고마운 정보를 받았습니다.
    LongLong으로 하면 64bit 전용이 되어 버리기 때문에, 이번은 32bit로 움직이지 않게 된다는 것. 32비트와 64비트 환경을 양립해야 하는 경우 LongLong이 아닌 LongPtr로 수정하십시오.

    LongLong형에 대한 자세한 설명은 아래를 참조하십시오.

    cpprefjp - C++ 일본어 참조
    htps : // cpp fjp. 기주 b. 이오/ぁg/cp11/ぉんg_ぉg_tyぺ. HTML

    요약


  • 32bit용의 API등을 사용하고 있었을 경우는,PtrSafe를 붙인다.
  • 정수는 LongLong 형으로 선언한다. (32비트와 64비트 환경을 양립시키는 경우는 LongLong이 아닌 LongPtr에서 선언한다)

  • 프로그램에 익숙한 분이라면 당연히 너무 남겨두는 사람은 없을지도 모릅니다만,
    나 같은 독학 폰코 투어 머그래머는 훌륭하게 빠져 버렸기 때문에,
    비슷한 사건으로 어려움이있는 분의 도움이되면 다행입니다.

    좋은 웹페이지 즐겨찾기