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
- 我應該處理的文件作爲二進制文件或其他類型的文件?
- 我可以在文件仍然打開時上傳文件嗎(我想上傳VBA運行的文件)?
我不知道我是否在正確的軌道上。 我也不確定標題和表單字段應該是什麼。
Thx尋求幫助。
嗨,從您的代碼中,您只是將文件名發送到服務器。你需要以某種方式將文件轉換爲二進制文件並將它們包含在POST消息中。 – Larry 2013-03-14 09:33:18
嗨,我可以看到,該文件必須作爲二進制文件上傳。我使用[這裏]的代碼(http://wqweto.wordpress.com/2011/07/12/vb6-using-wininet-to-post-binary-file/)。它也似乎我不需要複製。我現在的問題是,我需要發送一些文本的帖子。這是一個單獨的請求,或者我可以用第一個包含它嗎?對不起,如果我看起來多餘,但這是我第一次與這個話題。 – Albertus 2013-03-14 10:53:39
你必須模擬一個瀏覽器組裝一個POST請求和base64編碼你的文件,這可以完成,但有點乏味。另一種選擇是運行[curl](http://curl.haxx.se/),它只需要文件名和上傳表單參數(curl可執行文件可以從vba運行)。 – collapsar 2013-03-15 19:37:05