Страницы: 1
RSS
Как разархивировать архив RAR через VBA
 
Написал хороший код для разархивации файлов, для zip файлов подходит идеально, но вот rar не читает. Буду благодарен если кто объяснит как ему скормить архивы RAR
Код
Option Explicit

Sub UnRar()
    Dim DownloadFolder As String
        DowloadFolder = "C:\Users\Менеджер\Documents\"
    Dim UnRar As New Shell32.Shell
    
    UnRar.Namespace(DowloadFolder).CopyHere _
        UnRar.Namespace(DowloadFolder & "Архив.zip").Items, 16
        'Unrar.Namespace(DowloadFolder &"Архив.rar").Items, 16
End Sub
 
Цитата
ne.bla.bla написал:
Буду благодарен если кто объяснит как ему скормить архивы RAR
убедить Microsoft сделать поддержку RAR архивов на уровне системы.

Да и это
Код
DowloadFolder = "C:\Users\Менеджер\Documents\"
превращает код из хорошего в очень плохой.
Изменено: БМВ - 24.09.2022 19:20:24
По вопросам из тем форума, личку не читаю.
 
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=148354
 
Архивация/Извлечение из архива через VBA
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Да и это  
Код
    [URL=#]?[/URL]       1      DowloadFolder = "C:\Users\Менеджер\Documents\"   
   превращает код из хорошего в очень плохой.
Почему?
 
Цитата
ne.bla.bla написал:
Почему?
потому что привязываетесь к конкретной учетной записи. На другом ПК такой учетки может не быть.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Вместо
Код
DowloadFolder = "C:\Users\Менеджер\Documents\"
Лучше использовать
Код
DowloadFolder = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\"
 
МатросНаЗебре, Оооооо годно спасибо
 
ne.bla.bla,
Код
DowloadFolder = Environ("USERPROFILE") & "\Documents"
 
Цитата
Лучше использовать
Код
DowloadFolder = CreateObject(  "WScript.Shell"  ).SpecialFolders(  "MyDocuments"  ) & "\"   
 
не работает, в чем ошибка ?
Код
Const DownloadFolder As String = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
Изменено: ne.bla.bla - 28.09.2022 12:29:47
 
Цитата
ne.bla.bla написал:
в чем ошибка
в том, что VBA работает так, как он создан, а не как Вам вдруг захотелось :)
Константы не могут быть динамическими. Вам надо в таком случае использовать просто переменную и присваивать значение :
Код
Dim DownloadFolder As String
'эту процедуру можно вызвать из события Workbook_Open или первой строкой макроса, в котором используется DownloadFolder
Sub InitVars()
DownloadFolder = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,
Все равно выдает ошибку
Код
    Dim DownloadFolder As String
    DownloadFolder = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")

invalide outside procedure пишет
 
Может уже хоть какую-то теорию прочтете? Я привел конкретный код, где есть Sub, в которой и присваивается значение переменной. А Вы её куда дели? Еще раз повторю: VBA работает не так как Вы хотите, а так, как он написан.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,
Так блин за дурака полного принимать меня не надо, читал определенную информацию. Да не все знаю.

Я ставил переменную вверх модуля option explicit и там она выдает ошибку, переменная используется в 20+ процедурах, в sub переместил и ошибку перестал выдавать
Код
Sub b()
    Dim DownloadFolder As String
    DownloadFolder = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
    Debug.Print DownloadFolder
End Sub
Изменено: ne.bla.bla - 28.09.2022 15:38:07
 
Цитата
ne.bla.bla написал:
Я ставил переменную вверх модуля option explicit
а нам это откуда знать? Вы что написали? Посмотрите на свое сообщение и скажите - можно 100% угадать причину ошибки? По Вашему сообщению видно, что переменная без всяких Sub задана и сообщение соответствующее - задание параметра вне процедуры. Притом что я несколько иной код предоставил - там все корректно задается.
А это и есть азы - назначение значений переменным...
Цитата
ne.bla.bla написал:
за дурака полного принимать меня не надо
так Вы вопросы не задавайте такие, чтобы Вас не пришлось принимать за совершенно не понимающего в кодах человека. Я ж  тоже не от себя придумал, что Вы ошибки лепите в азах  ;)
Изменено: Дмитрий(The_Prist) Щербаков - 28.09.2022 15:55:17
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Мне код из #11 не удалось исковеркать до ошибки из #12.
 
Дмитрий(The_Prist) Щербаков,
В любом случае спасибо
 
Дмитрий(The_Prist) Щербаков, Возникает проблема иногда, этот код разархивирует файл, но он появляется только после обновления папки, а дальнейший код его не видит и выдает ошибку, как это исправить?
 
ne.bla.bla, отбой, проблема была в другом
Страницы: 1
Наверх