【问题标题】:Toggle Windows Explorer "Work Online" mode via Excel VBA通过 Excel VBA 切换 Windows 资源管理器“在线工作”模式
【发布时间】:2015-01-31 03:05:31
【问题描述】:

我编写了几个访问 Intranet 网络位置的 VBA 宏。当用户位于现场时,它们运行良好。但是,当他们在异地并通过 VPN 访问网络时,这些网络位置不可用,除非他们通过 Windows 资源管理器手动导航到它们并选择资源管理器窗口顶部的“在线工作”选项。

我已经可以通过程序验证它们是否通过 VPN 连接。

我需要的是能够通过 Excel VBA 执行相当于激活“在线工作”模式的操作。

蜂巢思维有什么建议吗?

没有通过 Google 或现有的 SO 帖子取得任何成功。

【问题讨论】:

  • 我希望可以,但宏记录器的范围仅在 Excel 应用程序上下文中,因此不会捕获切换 Windows 资源管理器的“在线工作”按钮。
  • 是否有可以触发该选项的 SendKey?
  • 我可能有一些想法,但我不熟悉我们的“在线工作”选项。你能链接到它所在位置的屏幕截图吗?可能有一个与 Shell 对象或 WinAPI 关联的命令会为您执行此操作。
  • 或者,您是否尝试过使用 UNC 路径导航到文件?这可能在命名路径不起作用的地方起作用。

标签: vba excel


【解决方案1】:

最简单的方法是在无法访问文件夹时捕获错误,显示消息框以通知用户所需的选项,然后使用Shell 命令打开 Windows 资源管理器:

Dim Foldername As String
Foldername = "\\UNCPATH\TO\NETWORK_DRIVE\"

Shell "C:\WINDOWS\explorer.exe """ & Foldername & "", vbNormalFocus

或者,您也许可以让这个工作,虽然我做不到,作为评论发布太长了,所以我将在此处包含该过程:

Sub fnOfflineStatusVB()
    Dim objShell   As Object 'IShellDispatch5
    Dim objFolder As Object 'Folder3

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace("\\UNCPATH\TO\NETWORK_DRIVE\")

    If (Not objFolder Is Nothing) Then
        Dim nReturn As Integer

        nReturn = objFolder.OfflineStatus()
    End If

    Set objFolder = Nothing
    Set objShell = Nothing
End Sub

找到它here

【讨论】:

    【解决方案2】:

    找到可以通过 CMD 成功执行的 PowerShell 命令。剩下的障碍是将这些集成到批处理文件中。

    这些 CMD 命令在手动输入时有效:

    powershell.exe -noexit "$oWMI=[wmiclass]""\\localhost\root\cimv2:win32_offlinefilescache"""
    $oWMI.TransitionOnline("<path here>")
    

    尖括号中的“此处的路径”是我网络上的 UNC 路径。但是,到目前为止,在批处理文件中执行它们并不成功。

    代码如下:

    @ECHO ON
    
    ::Move to non UNC Path directory
    cd /D "C:\"
    
    powershell -NoExit -Command "& {'$oWMI=[wmiclass]''\\localhost\root\cimv2:win32_offlinefilescache';$oWMI.TransitionOnline('<Path here>')}"
    
    :: Pause CMD window to give user confirmation that execution has occurred
    PAUSE
    

    如果有人对此问题有任何建议,我们将不胜感激。 由于 IT 设置的组策略,不允许直接运行 PowerShell 脚本,这就是这种迂回方法的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多