首先,我承认这应该很容易,但我只是没有看到答案。
我正在从我无法控制的网站获取信息。在页面上选择一些选项后,网站将下载一个CSV文件。我已经准备好了下载之前的所有内容。
dim IE as InternetExplorer
dim doc as HTMLDoc
' setup the page
' get page to generate CSV
' now i need to go find the file and read it in
' Where is it?
我知道我可以创建一个对话框并要求用户导航到该文件。但是,我正在与不懂计算机的人打交道,并要求他们查找文件效果不佳。
我知道 %homedir %homepath \downloads 应该是正确的,但我忘记了如何基于这些变量创建路径。另外,我并不肯定这总是正确的,所以我想要一种方法来询问浏览器它将在哪里存储文件。
接受的答案不正确。
仅当 IE(7,9,11)->设置->查看下载->选项->默认下载位置未更改默认下载位置时,它才是正确的。
接受的答案甚至不提供 Windows 下载位置或浏览器下载位置(根据主题标题中的要求。
此外,HomeDrive和用户Home Drive可能不是一回事
从下面的输出中可以看出,Windows下载文件夹与IE下载文件夹不同,并且主驱动器不同从用户主驱动器(配置文件):
首先预定义此函数:
Public Function RegKeyRead(s_RegKey As String) As String
Dim myWS As Object
On Error Resume Next
Set myWS = CreateObject("WScript.Shell") 'access Windows scripting
RegKeyRead = myWS.RegRead(s_RegKey) 'read key from registry
End Function
在 VBA 中立即测试 (Ctrl + G)
print Environ("HomeDrive") 'C:
print Environ("UserProfile") 'C:UsersUserName
print RegKeyRead("HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMainDefault Download Directory") 'D:TmpStorageIEDownLoads
print RegKeyRead("HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders{374DE290-123F-4565-9164-39C4925E467B}") '%UserProfile%Downloads
的版本:
' Recherche le répertoire de téléchargement pour IE. Si pas trouvée : on récupère la clée "User Shell Folders"
With CreateObject("WScript.Shell")
On Error GoTo erreur_registre
CheminTelecharge = .RegRead("HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMainDefault Download Directory")
GoTo suite_registre
erreur_registre:
CheminTelecharge = .RegRead("HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders{374DE290-123F-4565-9164-39C4925E467B}")
suite_registre:
CheminTelecharge = Replace(CheminTelecharge, "%USERPROFILE%", Environ("userprofile"))
On Error GoTo 0
End With
Environ("HOMEDRIVE")& Environ("HOMEPATH") & "Downloads"
这在Windows 7上对我有用。您可能需要编写一些内容来检查Windows版本并相应地更改格式。
这取决于下载内容保存在该用户的默认"下载"文件夹中。