Excel VBA에서 WinHTTP 를 이용하여 input:file POST 전송시 기본 문자열은 Unicode(UTF-8)로 됨.

참조: [VBA] Excel 현재 Sheet의 데이터를 웹페이지에 업로드하기


하지만 만약 서버가 EUC-KR(CP949)로 인코딩 된 파일만 받아들일 경우, 보낼 때 데이터를 변경해줘야 함.

아래처럼 Byte 배열을 하나 만들고 원본 문자열을 StrConv를 이용하여 시스템 기본 코드페이지(vbFromUnicode)로 변경해서 전송하면 OK.


Dim PostData As String
' PostData에 전송할 데이터를 넣었다고 가정하고

' 시스템 기본 코드페이지로 변환
Dim PostBody() As Byte    
PostBody = StrConv(PostData, vbFromUnicode)

'전송
Set WinHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1")
WinHTTP.Open "POST", "http://DOMAIN.com/excel_upload.php"
WinHTTP.SetRequestHeader "Content-Type", "multipart/form-data; boundary=----" & BoundaryStr
WinHTTP.Send PostBody









Posted by bloodguy
,