确定浏览器将要下载文件,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