HelloWorld_Peng666 2024-04-25 15:05 采纳率: 69.2%
浏览 12
已结题

VBA shell explorer.exe打开文件夹时,如果没有权限会自动打开“我的文档”

VBA shell explorer.exe打开文件夹时,如果没有权限会自动打开“我的文档”,怎么不让VBA打开文件夹时候,如果路径没有访问权限时,就弹出msgbox提示一下就行,不打开“我的文档”,谢谢

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-25 15:05
    关注

    引自免费微信小程序:皆我百晓生

    在VBA中,你可以通过调用Shell函数来启动一个外部程序,例如explorer.exe并指定要打开的文件夹路径。为了实现当没有权限打开指定文件夹时显示消息框的功能,你需要在尝试打开文件夹之前检查其访问权限。

    首先,我们需要一个辅助函数来检查文件夹的访问权限。这个功能在Windows系统中通常由操作系统本身处理,但我们可以借助Python的psutil库来实现。安装这个库的命令是:pip install psutil

    然后,我们将创建一个Python脚本(命名为check_access.py)来执行此操作:

    import os
    import psutil
    
    
    def check_folder_access(path):
        try:
            proc = psutil.Popen(['cmd', '/c', 'dir', path], stdout=psutil.PIPE, stderr=psutil.PIPE)
            _, _ = proc.communicate()
            return True
        except (FileNotFoundError, PermissionError):
            return False
    

    接下来,在VBA中引用这个Python脚本,并在尝试打开文件夹前调用它。以下是完整的VBA代码:

    Sub OpenFolderWithPermissionCheck(folderPath As String)
        Dim pythonScript As String
        Dim result As Boolean
        
        ' 定义Python脚本路径
        pythonScript = "C:\path\to\your\check_access.py" ' 请替换为实际路径
        
        ' 调用Python脚本检查文件夹权限
        result = CheckPythonScript(pythonScript, folderPath)
        
        If result Then
            ' 如果有权限,使用Shell函数打开文件夹
            Shell "explorer.exe """ & folderPath & """", vbNormalFocus
        Else
            ' 如果无权限,显示消息框
            MsgBox "没有足够的权限打开文件夹,请联系管理员。"
        End If
    End Sub
    
    
    ' VBA函数,用于调用Python脚本
    Function CheckPythonScript(scriptPath As String, folderPath As String) As Boolean
        Dim pythonCmd As String
        pythonCmd = "python " & scriptPath & " " & folderPath
        
        ' 执行Python脚本并获取结果
        On Error Resume Next
        With CreateObject("WScript.Shell")
            CheckPythonScript = (.Exec(pythonCmd).StdOut.ReadAll Like "*True*")
        End With
        On Error GoTo 0
    End Function
    

    确保将pythonScript变量中的路径更改为包含check_access.py的实际路径。这段代码首先会调用Python脚本来检查给定的文件夹路径是否有访问权限,如果有权限则打开文件夹,否则显示消息框。

    请注意,这种方法依赖于Python环境以及psutil库的可用性。如果你的环境中没有这些,可能需要额外配置。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 6月19日
  • 已采纳回答 6月11日
  • 创建了问题 4月25日

悬赏问题

  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误