DECODEURL 함수 :: 사용자 지정 함수 (VBA)
| 예제파일 |
요약
DECODEURL 함수는 URL주소를 한글 또는 영문으로 변환하는 함수입니다.
설명
DECODEURL 함수는 URL 주소를 기존의 한글 또는 영문주소로 변환하는 함수입니다. 한글이나 영문을 URL주소로 인코딩하려면 ENCODEURL (VBA) 함수를 사용할 수 있습니다.

반환값
URL주소를 디코딩된 한글 또는 영문 주소로 반환합니다.
인수
| URL주소 | 한글 또는 영문으로 변환할 URL 주소입니다. |
| [출력여부] | 결과값을 출력할지 여부를 결정합니다. 기본값은 TRUE 입니다. |
VBA 코드
Function DECODEURL(varText As Variant, Optional blnEncode = True) '############################################################ '한글/영문 텍스트를 URL 주소로 변경합니다. 'https://www.oppadu.com/vba-decodeurl-함수/ '############################################################ Static objHtmlfile As Object If objHtmlfile Is Nothing Then Set objHtmlfile = CreateObject("htmlfile") With objHtmlfile.parentWindow .execScript "function decode(s) {return decodeURIComponent(s)}", "jscript" End With End If If blnEncode Then DECODEURL = objHtmlfile.parentWindow.decode(varText) End If End Function
세부내용
1. objHtmlFile 이라는 HtmlFile 개체를 변수로 생성합니다.
Static objHtmlfile As Object If objHtmlfile Is Nothing Then Set objHtmlfile = CreateObject("htmlfile") End If
2. 생성한 HTML 개체에 decodeURIComponent 함수를 사용해 decode 라는 또다른 모듈내부의 함수를 생성합니다.
decodeURIComponent 함수에 대한 Javascript 함수 설명은 Mozilla 공식 홈페이지 관련 링크를 참고하세요.
With objHtmlfile.parentWindow .execScript "function decode(s) {return decodeURIComponent(s)}", "jscript" End With
3. [출력여부] 인수 값이 True면, 함수의 결과값으로 디코딩된 한글/영문 주소를 반환합니다.
If blnEncode Then DECODEURL = objHtmlfile.parentWindow.decode(varText) End If


다행히 설명에 코드는 Decode로 돼 있어서 수정했네요.
이제 코드가 좀 보이기 시작하네요.
고맙습니다.
DECODEURL 사용시 엑셀 시트에서 사용하면 정상적으로 되지만 VBA 내에서 사용시 "5-1. 现代电力" 을 DECODEURL 해보면 "5-1. ?代?力" 이렇게 변환이 됩니다. 중국어 뿐만 아니라 중동등 몇몇국가 언어가 제대로 DECODE가 되지 않습니다. 어떻게 해야 할까요?
말씀하신 문제는 사용중인 윈도우의 시스템 언어 충돌로 인해 발생하는 것으로 보입니다.
아래 링크를 참고하셔서, 시스템 로캘 설정을 변경 후 다시 실행해보시겠어요?
https://www.oppadu.com/question/?mod=document&uid=18143
감사합니다.