папку, обычно, открывают с какой-то целью: - выбрать папку - выбрать файл - сохранить как... так вот, если понимать что нужно, то открываем соотв. диалог предварительно указан путь по умолчанию вроде, как-то так...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Игорь, самоцель - выполнить указанное действие. По аналогии кнопки в Скайпе, или менеджере закачек браузера. ThisWorkbook.Path - просто для примера. Но это может быть любой файл. И дальнейшие действия тоже. А как открыть файл Excel, используя соответствующий диалог, я знаю.
Похоже, в примере не совсем удачно. Имеем файл fileJpg = ThisWorkbook.Path & "\1.jpg" Нужно открыть папку, и выделить этот файл
ShellExecute(<File>,<Arguments>,<Directory>,<Operation>,<Show>) <Operation> - строка (необязательный). Действие ("глагол"), которое необходимо выполнить. Если не указан, используется действие по умолчанию.
Но никакого действия с файлом кодом выполнять не нужно.
bedvit, ну да Shell "explorer.exe /select,""" & ThisWorkbook.FullName & """" я правда за неуправляемость SHELL VBA недолюбливаю, ни тебе подождать, ни ….
Function ShowInFolder(s As String) As Boolean
If Dir(s) = "" Then
ShowInFolder = False
Else
CreateObject("Wscript.Shell").Run ("explorer /select, " & s)
ShowInFolder = True
End If
End Function
Sub test()
Dim s$, ss$
s = "D:\!XXXX\01.jpg"
x = ShowInFolder(s)
ss = "D:\!XXXX\1.jpg"
xx = ShowInFolder(ss)
End Sub
RAN, Андрей, хорошо что все получилось, но: 1. пробел после запятой должен вредить, синтаксис вроде не позволял такое, сейчас проверил, работает, хотя странно. 2. а вот кавычки экранирующие лучше поставить, если появится пробел в полном имени файла, то могут возникнуть проблемы.
Function ShowInFolder(s As String) As Boolean
If Len(Dir(s)) Then CreateObject("Wscript.Shell").Run ("explorer /select,""" & s & """"): ShowInFolder = True
End Function
RAN, Андрей, к стати вспомнил про пока еще действующее ограничением в 260 символов. Как поведет себя конструкция при превышении и что откроет - надо проверять. Может открыть снова избранное :-) По сему лучше сразу проверить и ….. ну тут по задаче.
Доброе время суток. Запущено как-то всё у Microsoft с Shell.Application. Некоторое приближение к решению задачи. И по идее, ещё нужно искать - по nextWindow.HWND то ли окно мы нашли, в том смысле, что для одной и той же папки может быть открыто несколько экземпляров проводника. Надо брать верхнюю.
Код
Public Sub test()
Dim pShell As New Shell32.Shell, nextWindow As Object
Dim nextView As Object, pFolderItem As Object
pShell.Open "c:\windows"
Application.Wait Time + 1.15740740740741E-05
For Each nextWindow In pShell.Windows
Set nextView = nextWindow.Document
If TypeOf nextView Is Shell32.ShellFolderView Then
If LCase$(nextView.Folder.Self.Path) = "c:\windows" Then
Set pFolderItem = nextView.Folder.Items.Item("notepad.exe")
nextView.SelectItem pFolderItem, 1
Exit For
End If
End If
Next
End Sub