2013-03-14 5 views
2

VBA에서 Excel xlsm 파일을 PHP 스크립트에 업로드하고 싶습니다.VBA를 사용하여 Excel xlsm 파일을 PHP 스크립트에 업로드

Dim WinHttpReq As Object 
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") 

Dim strURL As String 
Dim StrFileName As String 
Dim FormFields As String 
Dim path As String 
Dim name As String 

    StrFileName = "c:\temp\ctc1output.xls" 
    strURL = "http://www.tri-simulation.com/P3/" 


    WinHttpReq.Open "POST", strURL, False 


    ' Set the header 
    WinHttpReq.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" 


    FormFields = """fileulp=" & StrFileName & """" 
    FormFields = FormFields + "&" 
    FormFields = FormFields + """sfpath=P3""" 

    WinHttpReq.Send FormFields 


    ' Display the status code and response headers. 
    MsgBox WinHttpReq.GetAllResponseHeaders 
    MsgBox WinHttpReq.ResponseText 
  1. 내가 바이너리 파일이나 파일의 다른 형식으로 파일을 처리해야 : 나는 다음과 같은 코드를 발견?
  2. 파일이 아직 열려있는 상태에서 업로드 할 수 있습니까? (VBA를 실행하는 파일을 업로드하고 싶습니다)?

나는 올바른 길을 가고 있는지 잘 모르겠습니다. 헤더와 양식 필드가 무엇인지에 대해서도 확신하지 못합니다.

도움이 필요하면 Thx.

+1

안녕하세요, 코드에서 서버로 파일 이름 만 보내고 있습니다. 어떻게 든 파일을 바이너리로 변환하고 POST 메시지에 포함시켜야합니다. – Larry

+0

안녕하세요, 파일을 이진 파일로 업로드해야 볼 수 있습니다. 나는 [여기] (http://wqweto.wordpress.com/2011/07/12/vb6-using-wininet-to-post-binary-file/)의 코드를 사용하고있다. 그것은 또한 사본을 만들 필요가없는 것 같습니다. 이제 내 문제는 게시물과 함께 텍스트를 보내야한다는 것입니다. 그것은 별도의 요청이 될 것인가? 아니면 어떻게 든 첫 번째 질문에 포함시킬 수 있습니까? 미안하지만 중복 된 것처럼 보이지만이 주제에 대한 첫회입니다. – Albertus

+2

POST 요청을 어셈블하는 브라우저를 시뮬레이트해야하고 파일을 base64 인코딩해야합니다.하지만 약간 지루합니다. 또 다른 옵션은 [curl] (http://curl.haxx.se/)을 실행하여 파일 이름과 업로드 양식 매개 변수 만 필요합니다 (컬 실행 파일은 vba에서 실행할 수 있음). – collapsar

답변

0

아무 것도 base64 인코딩 할 필요가 없습니다. 따르 sample code you have found 그러나 다만 NameValue가 설계 이름입니다이

sPostData = sPostData & "--" & STR_BOUNDARY & vbCrLf & _ 
    "Content-Disposition: form-data; name=""" & Name & """" 
sPostData = sPostData & vbCrLf & vbCrLf & _ 
    pvToUtf8(Value) & vbCrLf 

... 같은 다른 텍스트 (폼 항목)을 추가 ('전에 --- 몸 코멘트 준비) 파일을 준비 전 서비스 요청에 포함시킬 실제 텍스트 pvToUtf8 구현의 경우 this Google Cloud Print service connector을 살펴보십시오. 위의 발췌 문장은 동일한 커넥터의 pvRestAddParam 기능에서 가져온 것입니다.