2012-10-10 58 views
1

我想用excel,使用VBA,從互聯網上下載文件。該文件是一個包含員工列表信息的數據庫。我想保存在文件C:\用戶\「用戶名」 \ FCMMIS \vba下載並保存在C:用戶

這是一步一步的過程,我想實現:

  1. 使用VBA Excel中,下載一個文件來自指定的網址。
  2. * 下載的文件保存在C:\用戶\「的用戶名」 \ FCMMIS *
  3. 通過VBA下載的數據庫,以獲得可能需要的數據的Excel鏈接。

作爲另一個說明,有問題的excel文件將由不同的人使用筆記本電腦。我不確定是否可以將文件保存在「用戶」文件夾中,或者是否需要授予權限才能保存。

我知道有更好的解決方案,比如編寫完整的應用程序,但由於要求,我堅持使用excel和VBA。

EDIT(沿後進行與第3部分):

3.1:一旦數據庫被下載,然後將Excel文件被從僱員表中的記錄,並將它們打印在同一個新的工作表excel文件。

3.2:打印的數據然後用於工作表中的各種功能。

但是,我正在討論是否僅僅操縱數據庫本身的數據或者是否從創建的工作表中運行它是否高效。

+1

a)到目前爲止您嘗試了什麼? b)你認爲我們可以在第3部分提供什麼幫助 - 沒有範圍? – brettdj

+0

感謝您的回覆brettdj。我對第3部分想要做什麼有個基本概念: 3.1:一旦下載了數據庫,excel文件從employee表中獲取記錄,並將它們打印到同一個excel文件中的新工作表中。 3.2:打印的數據然後用於工作表中的各種功能。 但是,我在辯論是否僅僅操縱數據庫本身中的數據或者是否從創建的工作表中運行它是否高效。 –

回答

2

下面的代碼是從an article by Matt Vidas

來源,而且,等待你的回答到點3,無用武之地?

Function Download_File(ByVal vWebFile As String, ByVal vLocalFile As String) As Boolean 
    Dim oXMLHTTP As Object, i As Long, vFF As Long, oResp() As Byte 

    'You can also set a ref. to Microsoft XML, and Dim oXMLHTTP as MSXML2.XMLHTTP 
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP") 
    oXMLHTTP.Open "GET", vWebFile, False 'Open socket to get the website 
    oXMLHTTP.Send 'send request 

    'Wait for request to finish 
    Do While oXMLHTTP.readyState <> 4 
    DoEvents 
    Loop 

    oResp = oXMLHTTP.responseBody 'Returns the results as a byte array 

    'Create local file and save results to it 
    vFF = FreeFile 
    If Dir(vLocalFile) <> "" Then Kill vLocalFile 
    Open vLocalFile For Binary As #vFF 
    Put #vFF, , oResp 
    Close #vFF 

    'Clear memory 
    Set oXMLHTTP = Nothing 
End Function 



Sub Testing() 
    Download_File "http://example.org/yourDataBaseFile", "C:\Users\" & Environ("username") & "\yourDataBaseFile" 
End Sub 
+0

謝謝Larry以及brettdj關於第3部分的提示。 可能有一個實例,excel文件將在裝有Office 97-2003的Windows XP計算機上運行,​​因爲某些主管將使用其個人計算機而不是公司提供的。 我擔心的是MSXML2.XMLHTTP對象。這是本機還是缺少只包含在Office 2010安裝中的更好的術語? –

+0

@SanchoAlmeda 我的底層,只要用戶有IE6或以上 MSXML2.XMLHTTP對象來了。 對於point3,假設你的表大小不是那麼大,那麼也許你可以將某些表導出爲csv文件或excel文件。然後,您可以輕鬆下載並將它們加載到Excel電子表格中 – Larry

0

如果有問題的文件是一個工作簿中,你可以這樣做:

With Workbooks.Open("http://example.org/yourfile.xls") 
    .SaveAs "C:\Users\example\yourfile.xls" 
    .Close 
End With 
+1

嗨,我認爲你可以改變第二行爲 。保存爲「C:\ Users \」&environ(「username」)&「\ yourfile.xls」 – Larry

+0

感謝tyomitch的建議和Larry的follow-thru保存路徑。 這可能是我會考慮的一個選擇,因爲它可以實現相同的輸出。但是由於可能有太多我需要的信息,並且這些信息是由另一個系統存儲到數據庫中的,我相信獲取數據庫文件目前是個不錯的選擇。 –