确定浏览器将要下载文件,excel和VBA的位置
首先我承认这应该很容易,但我只是没有看到答案。
我从一个我不能控制的网站获取信息。 该网站在select页面上的某些选项后,将下载一个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?
我知道我可以创build一个对话框,并要求用户导航到文件。 然而,我正在处理那些没有电脑知识的人,并要求他们find一个文件不能很好地工作。
我知道%homedir%homepath \ downloads应该是正确的,但我已经忘记了如何创build一个基于这些variables的path。 另外我不是积极的,总是正确的,所以我想要一个方法来问问浏览器它将存储文件。
Environ("HOMEDRIVE")& Environ("HOMEPATH") & "\Downloads"
这在Windows 7上适用于我。您可能需要编写一些内容来检查Windows版本并相应地更改格式。
这是依赖于下载被保存在该用户的默认下载文件夹。
接受的答案是不正确的。
只有在IE(7,9,11) – >设置 – >查看下载 – >选项 – >默认下载位置中,默认的下载位置没有改变,才会正确。
接受的答案甚至不提供Windows下载位置或浏览器下载位置(按主题标题中的要求)。
此外,HomeDrive和用户主页驱动器可能不是一回事
从下面的输出中可以看到,Windows下载文件夹与IE下载文件夹不同,主驱动器与用户主驱动器(configuration文件)不同:
VBA(即时)
打印Environ(“HomeDrive”)
H:\
打印Environ(“UserProfile”)
C:\ Users \用户名
打印RegKeyRead(“HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main \ Default下载目录”)
d:\ TmpStorage \ IEDownLoads
打印RegKeyRead(“HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folders {374DE290-123F-4565-9164-39C4925E467B}”)
%USERPROFILE%\下载
当然预先定义这个function:
Public Function RegKeyRead(i_RegKey As String) As String Dim myWS As Object On Error Resume Next 'access Windows scripting Set myWS = CreateObject("WScript.Shell") 'read key from registry RegKeyRead = myWS.RegRead(i_RegKey) End Function