【问题标题】:excel vba file filtering to "original filename"excel vba文件过滤到“原始文件名”
【发布时间】:2014-12-13 04:24:43
【问题描述】:

我正在编写 Excel VBA 中的代码,如果文件不在默认路径上,用户可以在其中选择文件的默认路径。

我想过滤它,以确保他们不会选择错误的文件。

我的想法是以某种方式过滤它以检查“原始文件名”(您可以在属性 -> 详细信息中看到)是否与我给出的相同。这样,即使特定文件被重命名,它也可以工作。

我的问题是,我不知道如何引用它。

编辑

感谢 ZAT,实际代码如下所示:

Private Sub vncexe(vncexe As String)

Dim vncpath1 As String
Dim vncpath2 As String
Static temppath As String
vncpath1 = "C:\Program Files\RealVNC\VNC Viewer\vncviewer.exe"
vncpath2 = "C:\Program Files\RealVNC\VNC4\vncviewer.exe"

Dim opt As String
ob opt

If opt = "ob1" Then
    If Dir(vncpath1) <> "" Then
        vncexe = vncpath1
    ElseIf Dir(vncpath2) <> "" Then
        vncexe = vncpath2
    ElseIf temppath <> "" Then
        vncexe = temppath
    Else
        MsgBox "VNC viewer exe not on default path"
start:
        With Application.FileDialog(msoFileDialogFilePicker)
            .Title = "Please select VNC viewer"
            .InitialView = msoFileDialogViewSmallIcons
            .AllowMultiSelect = False
            .Filters.Clear
            .Filters.Add "VNCviewer.exe", "*.exe"
            .Show
                If .SelectedItems.Count <> 1 Then 'here should the "OR <> [original filename]" be
                    End
                Else
                    vncexe = .SelectedItems(1)
                    strVNC = Right(vncexe, 13)
                        If strVNC = "vncviewer.exe" Then
                            temppath = vncexe
                        Else
                            MsgBox "wrong file selected"
                            temppath = ""
                            GoTo start
                        End If
                End If
        End With

        End If
    End If

End Sub

原始文件路径已设置为默认的“vncpath1”和“vncpath2”。

temppath 是一个字符串,如果在 "vncpath1" 和 "vncpath2" 上找不到文件,它会获取我们在此处手动设置的新路径

但我的问题是,如果有办法,获取所选 exe 的“原始文件名”并对其进行过滤,因此它只有在(在这种情况下)“vncviewer.exe”时才有效

所以即使我重命名文件,“原始文件名”属性仍然是“vncviewer.exe”

再次感谢 ZET,现在代码的唯一问题是如果 vncviewer.exe 被重命名为 vnc.exe,它将无法工作,这就是我需要获取“原始文件名”属性的原因。

因为我喜欢花哨的工作:-)

【问题讨论】:

  • 什么是原始文件名:标题属性或工作簿名称? path1 和 path2 和 temppath 是什么?您的文件扩展名为 .exe?
  • 所以?这甚至可能吗?

标签: excel filtering file-properties vba


【解决方案1】:

试试这个:

Sub filefilterdf()
Dim strVNC As String, vncexe As String
Dim vncpath1 As String
Dim vncpath2 As String
Static temppath As String
vncpath1 = "C:\Program Files\RealVNC\VNC Viewer\vncviewer.exe"
vncpath2 = "C:\Program Files\RealVNC\VNC4\vncviewer.exe"

'If Dir(vncpath1) <> "" Then
'    vncexe = vncpath1 & " "
'ElseIf Dir(vncpath2) <> "" Then
'    vncexe = vncpath2 & " "
'ElseIf temppath <> "" Then
'    vncexe = temppath
'Else
'    MsgBox "VNC viewer exe not on default path"
'End If
''''Adjust placement of below code within above loop as per your need.


start:
With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Please select VNC viewer"
    .InitialView = msoFileDialogViewSmallIcons
    .AllowMultiSelect = False
    .Filters.Clear
    .Filters.Add "VNCviewer.exe", "*.exe"
    .Show
        If .SelectedItems.Count <> 1 Then 'here should the "OR <> [original filename]" be
            End
        Else
            vncexe = .SelectedItems(1) '& " "       'dont know why you used space here
            strVNC = Right(vncexe, 13)              'this is the key part
            'MsgBox strVNC
                If strVNC = "vncviewer.exe" Then
                    temppath = vncexe
                    'MsgBox temppath
                Else
                    MsgBox "wrong file selected"
                    temppath = ""
                    GoTo start
                End If
        End If
End With
End Sub

【讨论】:

  • 空间已被使用,因为 exe 打开时带有附加信息。例如“C:\Program Files\RealVNC\VNC Viewer\vncviewer.exe 172.21.1.1”这将使 vnc 连接到给定的 IP 地址。我会尽快试试这个!谢谢!
  • @Divin3 如果目的提供了支持和/或标记为关闭它的答案。
  • 我给你一个赞成票,因为这解决了大部分问题,但它仍然只检查文件名,而不是“原始文件名”。这意味着如果我将文件重命名为“vncviewerrrrr.exe”,它将无法正常工作。这就是为什么我问是否有办法检查“原始文件名”属性。感谢您的帮助
  • 当您将文件名更改为 vncviewerrrr.exe 时,您是否应该不相应地更改过滤器?如果是,那么您也可以使用它来相应地更改 strVNC 字符串。而且,您指的是什么属性名称?右键单击任何文件>属性>详细信息后,我看不到任何名称。
  • 我无法添加屏幕截图,因为我公司的政策不允许我这样做,而且我目前正在工作,但我所说的是当您右键单击文件时,而不是属性 - > 详细信息 -> 描述中的最后一个详细信息是“原始文件名”,这是我想引用的,因为即使我们更改文件名,它仍然保持不变。
猜你喜欢
  • 2015-07-04
  • 1970-01-01
  • 2015-03-31
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 2021-12-11
相关资源
最近更新 更多