Ігор Гончаренко, нужно через image (используется на форме). Андрей VG, Да действительно не блокируется, однако выяснилось что дело вовсе не в
Код
LoadPicture()
а в
Код
Application.GetOpenFilename.
Он блокировал не файл, а папку, а мне как раз нужно было переименование папки где был файл. Решение было взято
Код
ChDir "D:\"
после выбора в диалоге.
Код
Private Sub UserForm_Initialize()
X = Application.GetOpenFilename _
("Image files(*.jpg*),*.jpg*", 1, "Выбрать файл", , False)
If TypeName(X) = "Boolean" Then
MsgBox "Файл не выбран!"
Exit Sub
End If
'X = Application.FileDialog(msoFileDialogFilePicker).Show 'Выводит диалоговое окно
' Если нажата кнопка отмена возвращается значение x = 0.. если выбран, то x=-1
'If X = -1 Then
' Y = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1) ' Возвращает выбранный путь к файлу (если включен мультиселект то .SelectedItems.Count - количество выбранных файлов, для каждого свой индекс начиная с единицы)
'MsgBox y
'End If
ChDir "D:\"
Image1.Picture = LoadPicture(X)
'Image1.Picture = LoadPicture("")
'Image1.Picture = LoadPicture(vbNullString)
ImageNameBf = X
'Image1.Picture = Nothing
End Sub
Возможно не самое лучшее решение, готов увидеть и другие варианты. Ну наверно напрашивается использование других диалогов, но не знаю если они тоже не блокируют (
Код
Application.FileDialog()
тоже блокирует).
Модераторам, тему по сути нужно изменить на Application.GetOpenFilename и Application.FileDialog() блокирует папку после выбора файла.
Не вижу блокировки при переименовании выбранной папки для Application.FileDialog.
Код
Sub test()
Dim fDialog As FileDialog, folder As Object, fso As Object, fName As String
Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
With fDialog
If .Show = 0 Then Exit Sub
fName = .SelectedItems(1)
End With
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.getFolder(fName)
folder.Name = "Folder_New"
Set folder = Nothing
Set fso = Nothing
End Sub
Понятно. Директория по умолчанию (default directory or folder) всегда блокируется от удаления и переименования. Это не связано с особенностями объекта FileDialog (который "виноват" лишь в смене текущей директории).
То же произойдет, если Вы выполните Chdir (как в #4) и попытаетесь переименовать вновь установленную директорию по умолчанию.