Как правильно скормить путь "Этот компьютер\ZTE\Телефон" функции Dir, чтобы она не вызывала ошибку?
Хочу, как обычно, запустить рекурсивно функцию VBA Dir, чтобы получить список всех папок и файлов. Так вот: на "C:\" всё работает, а на подключённом к компу по USB-кабелю смартфоне функция Dir выдаёт ошибку. Понимаю, что вместо "Этот компьютер..." надо писать что-то другое, только вот что именно?
Если ОС определяет его как некое сетевое устройство или устройство, для работы с которым нужны сторонние драйверы, то Dir может глючить. Наблюдал такое. Можно попробовать применить FSO.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
sokol92 написал: Запишите макрорекордером открытие любого файла на "таинственном" устройстве.
Записал. Получил пустой макрос. Все дальнейшие действия записываются, а открытие - нет. Пытался записать макрорекордером сохранение файла туда. Получаю ошибку - Файл не найден - см. скриншот. MS Office Pro plus 2019, Excel версия 1911.
Юрий М написал: А как в Проводнике виден телефон? Ведь без "Этот компьютер"?
В проводнике виден как "ZTE BLADE V9 VITA". Пробовал ChDrive "ZTE BLADE V9 VITA" - не помогает (Device unavailable).
Обычно я открываю исследуемую папку проводником, делаю "Копировать путь как текст" и вставляю в макрос. Отсюда и взялся "Этот компьютер". Без "Этот компьютер" тоже пробовал. Разницы никакой.
и Excel открывает уже её в режиме для чтения. Отсюда напрашивается вывод. Если нет прямого USB подключения (что когда-то было на Android) в режиме флешки, то вы не сможете указать файл ни Dir, ни FileSystemObject.
Почитал, спасибо, познавательно. LOCALAPPDATA естественно начинается с "C:\". Получается, средствами VBA невозможно получить перечень файлов на телефоне?
На этом форуме такие высказывания, обычно, ложны. Пока более квалифицированные участники доедают остатки от праздничного стола, распечатаем список всех папок (файлов) верхнего уровня мобильного телефона "Galaxy A5 (2017)".
Код
Option Explicit
Sub ShowPhoneFolders()
Dim f As Object, f2 As Object
Set f = FindFolder("Galaxy A5 (2017)").GetFolder.ParseName("Phone").GetFolder
For Each f2 In f.items()
Debug.Print f2
Next f2
End Sub
' Поиск папки из "Мой компьютер"
Function FindFolder(ByVal FolderName As String) As Object
Dim oShellApp, f
Set oShellApp = CreateObject("Shell.Application")
For Each f In oShellApp.Namespace("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}").items()
If StrComp(f, FolderName, vbTextCompare) = 0 Then
Set FindFolder = f
Exit For
End If
Next f
Set oShellApp = Nothing
End Function
В условиях #5 строка 5 будет такой:
Код
Set f = FindFolder("ZTE BLADE V9 VITA").GetFolder.ParseName("Телефон").GetFolder