首页 > 解决方案 > 不重复 - 从 IE 下载文件后如何在 Window Explorer 中设置文件路径

问题描述

VBA 单击另存为后,出现窗口,我希望能够设置文件路径。我已经尝试过 ChDir() 并使用 winhttp 直接下载,但两者都不起作用。我的代码来源是:https ://www.mrexcel.com/forum/excel-questions/502298-need-help-regarding-ie-automation-using-vba-3.html

我假设在文件资源管理器的顶部窗口(路径窗口)中确定如何设置文件路径的任何帮助都会有所帮助。

***这不是一个重复的问题。WINHTTP 下载将无法在本网站上运行。

以下是我目前正在尝试的,但不会更改文件资源管理器窗口中的文件路径,而只是在文件名窗口中添加文件路径,这不会更改文件的保存位置。

Private Sub Save_As_Set_Filename(ByRef ZipfileName)
    Dim hwnd As Long
    Dim timeout As Date
    Dim fullFilename As String

    'Find the Save As window, waiting a maximum of 10 seconds for it to appear
    timeout = Now + TimeValue("00:00:10")
    Do
        hwnd = FindWindow("#32770", "Save As")
        DoEvents
        Sleep 300
    Loop Until hwnd Or Now > timeout

    If hwnd Then
        SetForegroundWindow hwnd
        'Find the child DUIViewWndClassName window
       hwnd = FindWindowEx(hwnd, 0, "DUIViewWndClassName", vbNullString)
    End If

    If hwnd Then
        SetForegroundWindow hwnd
        'Find the child DirectUIHWND window
        hwnd = FindWindowEx(hwnd, 0, "DirectUIHWND", "")
    End If

    If hwnd Then
        'Find the child FloatNotifySink window
        hwnd = FindWindowEx(hwnd, 0, "FloatNotifySink", "")
    End If

    If hwnd Then
        'Find the child ComboBox window
        hwnd = FindWindowEx(hwnd, 0, "ComboBox", "")
    End If

    If hwnd Then
        'Find the child Edit window
        hwnd = FindWindowEx(hwnd, 0, "Edit", "")
    End If

    If hwnd Then
        ZipfileName = Get_Window_Text(hwnd)

        'If specified, ensure folder ends with \
        folder = Environ("USERPROFILE") & "\Downloads\"
        If folder <> "" And Right(folder, 1) <> "\" Then folder = folder & "\"
        fullFilename = folder & ZipfileName 

        'Populate the Edit window with the full file name
        Sleep 300
        SetForegroundWindow hwnd
        SendMessageByString hwnd, WM_SETTEXT, Len(fullFilename ), fullFilename 
    End If

End Sub

标签: excelvba

解决方案


推荐阅读