Страницы: 1
RSS
VBA. Скачивание файла с google.drive → размер через код - меньше.Ошибка, Использую собственную надстройку, нужно автообновление для коллег
 
Друзья, всем снова привет!

Вводные:
У меня есть 2 надстройки
- New One.xlam (- служит для всех макросов)
- AutoUpdate.xlam (только для обновления New One.xlam)

Самостоятельно разобраться в автообновлении не смог, поэтому сделал по кнопке.

Как работало: Скачанный гугл диск - автообновление файла New One.xlam на нем из папки Addins (синхронизация папки) - кнопка прожимается у коллеги - отключается надстройка - скачивается файл с гугл диска - добавляется в надстройки - включается. Процесс завершен

Сейчас же происходит очень неприятная история: файл с гугл диска загружается битым. Его вес ~152кб, а загружается через макрос → вес в 2кб. Причины понять не могу.


Скачиваю по ссылке из макроса, вставляя ее в браузер - все нормально вес ~152кб, VBA не ругается.
Других способов автообновления собственной надстройки не знаю.

Ссылка на файл https://docs.google.com/spreadsheets/d/1-_XQWIJVgMUFU253id1d_dn8PlHfb5X-/edit?usp=drive_link&...
Ссылка на этот же файл прямая для скачивания https://drive.google.com/uc?export=download&id=1-_XQWIJVgMUFU253id1d_dn8PlHfb5X-
Код по которому скачиваю и обновляю файл с заменой:
Код
Sub DownloadAndInstallAddInW()
    ' Your code here to download the latest Add-In version
    Dim downloadURL As String

    
    'Application.AddIns("New One").Installed = False
    downloadURL = "https://drive.google.com/uc?export=download&id=1-_XQWIJVgMUFU253id1d_dn8PlHfb5X-" ' Replace with the actual download URL

    ' Specify the local path for saving the downloaded Add-In
    Dim localPath As String
    localPath = Environ("USERPROFILE") & "\Desktop\New One.xlam" ' Replace with your desired local path

    ' Download the Add-In
    DownloadFileW downloadURL, localPath
    
    'Call Add_AddinW
    
    MsgBox "Надстройка успешно обновлена!"
End Sub

' Function to download a file from a URL
Sub DownloadFileW(url As String, localPath As String)
    Dim WinHttpReq As Object
    Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")

    WinHttpReq.Open "GET", url, False
    WinHttpReq.Send

    If WinHttpReq.Status = 200 Then
        Dim oStream As Object
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open
        oStream.Type = 1
        oStream.Write WinHttpReq.ResponseBody
        oStream.SaveToFile localPath, 2 ' 1 = no overwrite, 2 = overwrite
        oStream.Close
    Else
        MsgBox "Failed to download the Add-In. Status: " & WinHttpReq.Status
    End If
End Sub




Sub Add_AddinW()

If Application.AddIns("New One").Installed = True Then

Application.AddIns("New One").Installed = False

With Application
    .AddIns.Add Environ("USERPROFILE") & "\Desktop\New One.xlam", True

End With
End If
If Application.AddIns("New One").Installed = False Then
Application.AddIns("New One").Installed = True
End If
End Sub

В чем может быть причина?
Может можно как-то оптимизировать автообновление?
Как лечить подобную ситуацию и с чем вообще возникает проблема?
Заранее спасибо гуру за советы
Изменено: Wadee - 13.02.2024 14:01:34
 
У вас не файл загружается, а текст с сообщением об ошибке / какой-то HTML код
Вот этот скачанный файл размером 2кБ откройте в Блокноте, и посмотрите что там написано.

а написано там вот что:
Цитата
<!DOCTYPE html><html><head><title>Google Диск: Квота превышена</title>...

Сейчас вы не можете просматривать и скачивать этот файл.

В последнее время этот файл слишком часто просматривался или скачивался. Повторите попытку позже. Если файл очень большой или доступен большому числу пользователей, возможен отказ в доступе к нему в течение ближайших суток. Если через 24 часа ситуация не изменится, обратитесь к администратору домена.
 
Цитата
написал:
У вас не файл загружается, а текст с сообщением об ошибке / какой-то HTML кодВот этот скачанный файл размером 2кБ откройте в Блокноте, и посмотрите что там написано.
Ага, вот где собака зарыта...
Значит, надо искать обходной вариант гугл диска...
Пока что нет представления, где можно разместить файл, чтобы сделать автообновление. VBA может забрать только с прямой ссылки для скачивания, насколько осведомлен... DropBox  в России неисправен, Yandex-Disk  не дает прямых ссылок, OneDrive теперь тоже нельзя так использовать... Уже начал терять надежду :(
 
Wadee, попробуйте прогу HFS, может быть, помню раньше была эта прога, там можно было расшаривать свои файлы в веб (как-то через внешний серер), если не ошибаюсь. Но я не специалист, каеш сразу говорю.. )
 
Цитата
написал:
попробуйте прогу HFS
Спасибо. Покурю документацию по нему, пока что при первом знакомстве он юзается как стандартный файлообменник
 
В общем, пока что только гугл с периодическими отваливаниями =(
Если у кого-то есть еще жизнеспособные варианты, будет отлично. Насколько помню, у Николая Павлова надстройка сама понимает какая версия. Кто знает, как это чудо реализовано? Хотелось бы иметь такую же возможность - проверка версии, если есть более новая - скачивает
Страницы: 1
Наверх