2014-10-17 3 views
1

Я работаю над кодом в Excel VBA, где пользователь может выбрать маршрут по умолчанию для файла, если он не по умолчанию.excel vba file filtering to "original filename"

Я бы хотел отфильтровать его, чтобы убедиться, что он не выберет неправильный файл.

Моя идея - как-то отфильтровать его, чтобы проверить, является ли «исходное имя файла» (которое вы можете видеть в свойствах -> подробностях) такое же, как и то, которое я даю. Таким образом, он будет работать, даже если конкретный файл будет переименован.

Моя проблема в том, что я не знаю, как сослаться на нее.

Редактировать

Благодаря ЗАТ, фактический код выглядит следующим образом:

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, это не сработает, поэтому мне нужно получить свойство «original filename».

И потому, что мне нравится работать фантазии :-)

+0

что оригинальное имя файла: название свойства или название книги? что такое path1 и path2 и temppath? расширение вашего файла .exe? – ZAT

+0

так? это даже возможно? – Divin3

ответ

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 
+0

было использовано пространство, потому что exe открывается с дополнительной информацией. Например, «C: \ Program Files \ RealVNC \ VNC Viewer \ vncviewer.exe 172.21.1.1» это приведет к подключению vnc к данному ip-адресу. Я попробую это как можно скорее! Спасибо! – Divin3

+0

@ Divin3, если цель подана вверх и/или отметка в качестве ответа, чтобы закрыть ее. – ZAT

+0

Я даю вам upvote, потому что это решило большинство проблем, но все же оно проверяет только имя файла, а не «оригинальное имя файла». Это означает, что если я переименую файл, то в "vncviewerrrrr.exe" он не будет работать. Вот почему я спросил, есть ли способ проверить свойство «original filename». Благодарим за помощь – Divin3