Приветствую всех! Друзья, помогите советом, как можно (и можно ли вообще) обратиться к папке, созданной на Яндекс-диске, из макроса книги Excel? Есть ли возможность как-то прописать путь к такой папке, скачать из неё файлы, а потом после обработки сохранить в ту же папку под другим именем?
Подробнее: есть проект, в котором открывается шаблон Excel (.xlt), соответственно, создаётся новая книга, в ней заполняются данные, отрабатывают разные макросы, в том числе, создаются документы Word на основе опять-таки шаблонов (.dot) и сохраняются в отдельную папку. Проект рабочий, но у клиента возникла идея хранить шаблоны и сформированные документы на Яндекс-диске. Хотелось бы услышать ваше мнение об этой идее, насколько она вообще реализуема? Пришла к выводу, что непосредственно запускать шаблоны с Яндекса не получится. То есть надо скачивать куда-то во временную папку. Но как??!! [p.s.]Если нужны файлы, могу сочинить примеры[/p.s.]
Приветствую всех! Друзья, помогите советом, как можно (и можно ли вообще) обратиться к папке, созданной на Яндекс-диске, из макроса книги Excel? Есть ли возможность как-то прописать путь к такой папке, скачать из неё файлы, а потом после обработки сохранить в ту же папку под другим именем?
Подробнее: есть проект, в котором открывается шаблон Excel (.xlt), соответственно, создаётся новая книга, в ней заполняются данные, отрабатывают разные макросы, в том числе, создаются документы Word на основе опять-таки шаблонов (.dot) и сохраняются в отдельную папку. Проект рабочий, но у клиента возникла идея хранить шаблоны и сформированные документы на Яндекс-диске. Хотелось бы услышать ваше мнение об этой идее, насколько она вообще реализуема? Пришла к выводу, что непосредственно запускать шаблоны с Яндекса не получится. То есть надо скачивать куда-то во временную папку. Но как??!! [p.s.]Если нужны файлы, могу сочинить примеры[/p.s.]Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Элементарно Ватсон. так получаем ссылку на файл для закачки.С обратной операцией дела не имел. [vba]
Код
Function GetyanURU() As String Dim RRz As String GetyanURU = "" UU = "https://yadi.sk/i/W-RyKT4o32K3PG" UU = Replace(UU, "/", "%2F") UU = Replace(UU, ":", "%3A") url = "https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key=" & UU On Error Resume Next Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP") With oXMLHTTP .Open "GET", url, False .send sHTML = .responseText Set RegExp = CreateObject("VBScript.RegExp") RegExp.Pattern = Chr(34) & "(https(.+?))" & Chr(34)
Set oMatches = RegExp.Execute(sHTML) If oMatches.Count > 0 Then GetyanURU = oMatches(0).subMatches(0) End If End With Set oXMLHTTP = Nothing End Function
Элементарно Ватсон. так получаем ссылку на файл для закачки.С обратной операцией дела не имел. [vba]
Код
Function GetyanURU() As String Dim RRz As String GetyanURU = "" UU = "https://yadi.sk/i/W-RyKT4o32K3PG" UU = Replace(UU, "/", "%2F") UU = Replace(UU, ":", "%3A") url = "https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key=" & UU On Error Resume Next Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP") With oXMLHTTP .Open "GET", url, False .send sHTML = .responseText Set RegExp = CreateObject("VBScript.RegExp") RegExp.Pattern = Chr(34) & "(https(.+?))" & Chr(34)
Set oMatches = RegExp.Execute(sHTML) If oMatches.Count > 0 Then GetyanURU = oMatches(0).subMatches(0) End If End With Set oXMLHTTP = Nothing End Function
Андрей, спасибо за ответ. Была мысль о сетевом диске, но не сообразила, как обратиться к Яндексу. Следуя инструкциям по ссылке, сетевой диск создала. Но почему-то не удаётся использовать путь Z:\ в макросе, вернее, не всегда удаётся, буду ещё экспериментировать.
Саня, твой вариант тоже попробовала, установила программу, в общем понравилось, путь прописывается в макросе, как обычно, всё запускается, создаётся, сохраняется, причём достаточно быстро. И папку можно сделать общедоступной при необходимости. Спасибо!
Сергей, с помощью Вашего макроса у меня получилось закачать файл с Яндекс-диска, спасибо! Не знаю только вот, как отправить созданные документы обратно
Сегодня пообщаюсь с клиентом, обрисую ситуацию, пусть решает, может ещё передумает) Ещё раз всем большое спасибо!
Андрей, спасибо за ответ. Была мысль о сетевом диске, но не сообразила, как обратиться к Яндексу. Следуя инструкциям по ссылке, сетевой диск создала. Но почему-то не удаётся использовать путь Z:\ в макросе, вернее, не всегда удаётся, буду ещё экспериментировать.
Саня, твой вариант тоже попробовала, установила программу, в общем понравилось, путь прописывается в макросе, как обычно, всё запускается, создаётся, сохраняется, причём достаточно быстро. И папку можно сделать общедоступной при необходимости. Спасибо!
Сергей, с помощью Вашего макроса у меня получилось закачать файл с Яндекс-диска, спасибо! Не знаю только вот, как отправить созданные документы обратно
Сегодня пообщаюсь с клиентом, обрисую ситуацию, пусть решает, может ещё передумает) Ещё раз всем большое спасибо!Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
У меня на работе иногда тоже не ловится прямая ссылка на z (у меня он не z, а f) - f:\Дальше_какой-то_путь А вот так всегда работает - вставить гиперссылкой путь f:\Дальше_какой-то_путь, пройти по этой ГС - откроется Проводник и в нем уже в пути (наверху который пишется) вместо f пишется нормальное название этого диска. Вот его и копируем
У меня на работе иногда тоже не ловится прямая ссылка на z (у меня он не z, а f) - f:\Дальше_какой-то_путь А вот так всегда работает - вставить гиперссылкой путь f:\Дальше_какой-то_путь, пройти по этой ГС - откроется Проводник и в нем уже в пути (наверху который пишется) вместо f пишется нормальное название этого диска. Вот его и копируем_Boroda_
Спасибо, Саш. Но всё равно не получается создать документ на основе шаблона из вложенной папки templates. Хотя путь вроде видит, создаёт по нему папку, сохраняет в ней файл. Видимо, это уже дело не в пути, а в чём-то другом. Будем искать)
Спасибо, Саш. Но всё равно не получается создать документ на основе шаблона из вложенной папки templates. Хотя путь вроде видит, создаёт по нему папку, сохраняет в ней файл. Видимо, это уже дело не в пути, а в чём-то другом. Будем искать)Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ребята, может быть я что-то в ТЗ не понял, но почему нельзя использовать синхронизацию ЯД с локальной директорией на своём компе? А нужную папку на ЯД расшарьте для конкретных пользователей. И работайте спокойно с файлами на своём компе. Создавайте/удаляйте файлы, папки… Всё, что Вы сделаете у себя, отзеркалится на ЯД. В чём проблема-то? Зачем брать файл с ЯД, когда можно юзать его локальную копию?
Ребята, может быть я что-то в ТЗ не понял, но почему нельзя использовать синхронизацию ЯД с локальной директорией на своём компе? А нужную папку на ЯД расшарьте для конкретных пользователей. И работайте спокойно с файлами на своём компе. Создавайте/удаляйте файлы, папки… Всё, что Вы сделаете у себя, отзеркалится на ЯД. В чём проблема-то? Зачем брать файл с ЯД, когда можно юзать его локальную копию?Alex_ST
И, к стати, юзая одновременно на работе и дома Гугл.Диск (на Я.Д Мэйл.Диск и Дропбокс с работы не пускают собаки-сисадмины), я часто использую очень удобную штуку - Link Shell Extension Это расширение позволяет создавать в Форточках симлинки, аналогичные Линуксово-Андроидным. Для тех файлов, с которыми мне удобно работать на компе в одной директории, а реально они разбросаны по многим папкам, включая и сетевые, я просто создаю симлинки и кладу их все в одну папочку. Комп будет думать, что работает с файлами, лежащими в этой папке, а физически они могут быть разбросаны где угодно. Я через симлинки даже пытался зеркалить файлы с ГД на МД через домашний комп. Результат, к сожалению, не стабильный - некоторые файлы зеркалятся в Облако, а некоторые нет (М.Д почему-то сильно озадачивается, пытаясь скопировать к себе в Облако файл с моего компа по некоторым симлинкам, а некоторые глотает спокойно)
И, к стати, юзая одновременно на работе и дома Гугл.Диск (на Я.Д Мэйл.Диск и Дропбокс с работы не пускают собаки-сисадмины), я часто использую очень удобную штуку - Link Shell Extension Это расширение позволяет создавать в Форточках симлинки, аналогичные Линуксово-Андроидным. Для тех файлов, с которыми мне удобно работать на компе в одной директории, а реально они разбросаны по многим папкам, включая и сетевые, я просто создаю симлинки и кладу их все в одну папочку. Комп будет думать, что работает с файлами, лежащими в этой папке, а физически они могут быть разбросаны где угодно. Я через симлинки даже пытался зеркалить файлы с ГД на МД через домашний комп. Результат, к сожалению, не стабильный - некоторые файлы зеркалятся в Облако, а некоторые нет (М.Д почему-то сильно озадачивается, пытаясь скопировать к себе в Облако файл с моего компа по некоторым симлинкам, а некоторые глотает спокойно)Alex_ST
Нарисовал функции для скачивания/выгрузки на ЯДиск скачивание проходит нормально, а вот с выгрузкой чего-то не так. В корень вообще не загружает, в папки грузит мягко говоря, через раз, может чего лишнего понаписал или не те объекты использовал [vba]
Код
Private Const Login$ = "Логин", Pwd$ = "Пароль" Private Const Host$ = "https://webdav.yandex.ru:443/" Public Function DownloadFile(RemoteFilePath$, SaveTo$) Dim FileContents() As Byte, LocalFilePath$ SaveTo = IIf(Right(SaveTo, 1) = "\", SaveTo, SaveTo & "\") With CreateObject("MSXML2.XMLHTTP") .Open "get", urlencode(Host & RemoteFilePath), False, Login, Pwd .setrequestheader "Host", "webdav.yandex.ru" .setrequestheader "Accept", "*/*" .setrequestheader "Authorization", "Basic " & Token .send FileContents = .responseBody End With LocalFilePath = SaveTo & StrReverse(Split(StrReverse(RemoteFilePath), "/")(0)) If Dir(LocalFilePath) <> "" Then Kill LocalFilePath Open LocalFilePath For Binary Access Write As #1 Put #1, 1, FileContents Close #1 DownloadFile = LocalFilePath End Function Public Sub UploadFile(LocalFilePath$, RemotePath$) Dim FileContents As Variant, FileName$ FileName = StrReverse(Split(StrReverse(LocalFilePath), "\")(0)) RemotePath = IIf(RemotePath <> "", RemotePath & "/", "") With CreateObject("ADODB.Stream") .Type = 1: .Open: .LoadFromFile LocalFilePath: FileContents = .Read: .Close End With With CreateObject("MSXML2.XMLHTTP") .Open "put", urlencode(Host & RemotePath & FileName), False, Login, Pwd .setrequestheader "Host", "webdav.yandex.ru" .setrequestheader "Accept", "*/*" .setrequestheader "Transfer-Encoding", "chunked" .setrequestheader "Etag", MD5(FileContents) .setrequestheader "Sha256", Sha256(FileContents) .setrequestheader "Expect", "100-continue" .setrequestheader "Content-Type", "application/binary" .setrequestheader "Authorization", "Basic " & Token .setrequestheader "Content-Length", UBound(FileContents) + 1 .send FileContents End With End Sub Private Function Str2Byte(str$) As Byte() Str2Byte = StrConv(str, vbFromUnicode) End Function Private Function urlencode$(url$) With CreateObject("scriptcontrol") .Language = "JavaScript" urlencode = .eval("encodeURI('" & url & "')") End With End Function Private Function MD5(ByVal bytes) As String Dim sTmp$, i%, byteArr() As Byte byteArr = bytes With CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider") byteArr = .ComputeHash_2(byteArr) End With For i = 0 To UBound(byteArr) sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2)) Next MD5 = sTmp End Function Private Function Sha256(ByVal bytes) As String Dim sTmp$, i%, byteArr() As Byte byteArr = bytes With CreateObject("System.Security.Cryptography.SHA256Managed") byteArr = .ComputeHash_2(byteArr) End With For i = 0 To UBound(byteArr) sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2)) Next Sha256 = sTmp End Function Private Function Token() With CreateObject("MSXML2.DOMDocument").createElement("b64") .DataType = "bin.base64" .nodeTypedValue = Str2Byte(Login): Token = .Text & ":" .nodeTypedValue = Str2Byte(Pwd): Token = Token & .Text End With End Function
Sub test() 'открываем файл из папки 111 в ЯДиске Workbooks.Open DownloadFile("123/1.xlsm", "D:\") 'открываем файл из корня ЯДиска Workbooks.Open DownloadFile("123.xlsx", Environ("tmp")) 'выгружаем файл в папку 123 в ЯДиске UploadFile "D:\0.xlsm", "123" 'выгружаем файл в корень в ЯДиска не грузит UploadFile "D:\0.xlsm", "" End Sub
[/vba]
Нарисовал функции для скачивания/выгрузки на ЯДиск скачивание проходит нормально, а вот с выгрузкой чего-то не так. В корень вообще не загружает, в папки грузит мягко говоря, через раз, может чего лишнего понаписал или не те объекты использовал [vba]
Код
Private Const Login$ = "Логин", Pwd$ = "Пароль" Private Const Host$ = "https://webdav.yandex.ru:443/" Public Function DownloadFile(RemoteFilePath$, SaveTo$) Dim FileContents() As Byte, LocalFilePath$ SaveTo = IIf(Right(SaveTo, 1) = "\", SaveTo, SaveTo & "\") With CreateObject("MSXML2.XMLHTTP") .Open "get", urlencode(Host & RemoteFilePath), False, Login, Pwd .setrequestheader "Host", "webdav.yandex.ru" .setrequestheader "Accept", "*/*" .setrequestheader "Authorization", "Basic " & Token .send FileContents = .responseBody End With LocalFilePath = SaveTo & StrReverse(Split(StrReverse(RemoteFilePath), "/")(0)) If Dir(LocalFilePath) <> "" Then Kill LocalFilePath Open LocalFilePath For Binary Access Write As #1 Put #1, 1, FileContents Close #1 DownloadFile = LocalFilePath End Function Public Sub UploadFile(LocalFilePath$, RemotePath$) Dim FileContents As Variant, FileName$ FileName = StrReverse(Split(StrReverse(LocalFilePath), "\")(0)) RemotePath = IIf(RemotePath <> "", RemotePath & "/", "") With CreateObject("ADODB.Stream") .Type = 1: .Open: .LoadFromFile LocalFilePath: FileContents = .Read: .Close End With With CreateObject("MSXML2.XMLHTTP") .Open "put", urlencode(Host & RemotePath & FileName), False, Login, Pwd .setrequestheader "Host", "webdav.yandex.ru" .setrequestheader "Accept", "*/*" .setrequestheader "Transfer-Encoding", "chunked" .setrequestheader "Etag", MD5(FileContents) .setrequestheader "Sha256", Sha256(FileContents) .setrequestheader "Expect", "100-continue" .setrequestheader "Content-Type", "application/binary" .setrequestheader "Authorization", "Basic " & Token .setrequestheader "Content-Length", UBound(FileContents) + 1 .send FileContents End With End Sub Private Function Str2Byte(str$) As Byte() Str2Byte = StrConv(str, vbFromUnicode) End Function Private Function urlencode$(url$) With CreateObject("scriptcontrol") .Language = "JavaScript" urlencode = .eval("encodeURI('" & url & "')") End With End Function Private Function MD5(ByVal bytes) As String Dim sTmp$, i%, byteArr() As Byte byteArr = bytes With CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider") byteArr = .ComputeHash_2(byteArr) End With For i = 0 To UBound(byteArr) sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2)) Next MD5 = sTmp End Function Private Function Sha256(ByVal bytes) As String Dim sTmp$, i%, byteArr() As Byte byteArr = bytes With CreateObject("System.Security.Cryptography.SHA256Managed") byteArr = .ComputeHash_2(byteArr) End With For i = 0 To UBound(byteArr) sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2)) Next Sha256 = sTmp End Function Private Function Token() With CreateObject("MSXML2.DOMDocument").createElement("b64") .DataType = "bin.base64" .nodeTypedValue = Str2Byte(Login): Token = .Text & ":" .nodeTypedValue = Str2Byte(Pwd): Token = Token & .Text End With End Function
Sub test() 'открываем файл из папки 111 в ЯДиске Workbooks.Open DownloadFile("123/1.xlsm", "D:\") 'открываем файл из корня ЯДиска Workbooks.Open DownloadFile("123.xlsx", Environ("tmp")) 'выгружаем файл в папку 123 в ЯДиске UploadFile "D:\0.xlsm", "123" 'выгружаем файл в корень в ЯДиска не грузит UploadFile "D:\0.xlsm", "" End Sub
Как же всё сложно Моих способностей хватило только скопировать этот код и запустить. Скачать и открыть получается, а при сохранении ошибка загрузки указанного контента на строке [vba]
Код
.send FileContents
[/vba]
Думаю всё-таки остановиться на варианте с синхронизацией папок
Как же всё сложно Моих способностей хватило только скопировать этот код и запустить. Скачать и открыть получается, а при сохранении ошибка загрузки указанного контента на строке [vba]
Код
.send FileContents
[/vba]
Думаю всё-таки остановиться на варианте с синхронизацией папокPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Хотя далеко не факт, что получится. Я где-то с год-полтора назад в последний раз пробовал - не вышло. Потом погуглил и нашёл кучу ругани юзеров, что в бесплатных Облаках их владельцы объявляют возможность коннекта по WEBDAV , а реально это нигде не работает, т.к. тогда они потеряют на рекламе. Но попытка не пытка. Удачи!
Или попробовать по WEBDAV подключить как советовал krosav4ig
Хотя далеко не факт, что получится. Я где-то с год-полтора назад в последний раз пробовал - не вышло. Потом погуглил и нашёл кучу ругани юзеров, что в бесплатных Облаках их владельцы объявляют возможность коннекта по WEBDAV , а реально это нигде не работает, т.к. тогда они потеряют на рекламе. Но попытка не пытка. Удачи!Alex_ST
Private Const Login$ = "Логин", Pwd$ = "Пароль" Private Const Host$ = "https://webdav.yandex.ru:443/" Public Function DownloadFile(RemoteFilePath$, SaveTo) Dim FileContents() As Byte, LocalFilePath$ SaveTo = IIf(Right(SaveTo, 1) = "\", SaveTo, SaveTo & "\") With CreateObject("WinHttp.WinHttpRequest.5.1") .Open "GET", urlencode(Host & RemoteFilePath$), True .SetRequestHeader "Host", "webdav.yandex.ru" .SetRequestHeader "Accept", "*/*" .SetRequestHeader "Authorization", "Basic " & Token .send .WaitForResponse FileContents = .responseBody End With LocalFilePath = SaveTo & StrReverse(Split(StrReverse(RemoteFilePath), "/")(0)) If Dir(LocalFilePath) <> "" Then Kill LocalFilePath Open LocalFilePath For Binary Access Write As #1 Put #1, 1, FileContents Close #1 DownloadFile = LocalFilePath End Function Public Sub UploadFile(LocalFilePath$, RemotePath$) Dim FileContents As Variant, FileName$ FileName = StrReverse(Split(StrReverse(LocalFilePath), "\")(0)) RemotePath = IIf(RemotePath <> "", RemotePath & "/", "") With CreateObject("ADODB.Stream") .Type = 1: .Open: .LoadFromFile LocalFilePath: FileContents = .Read: .Close End With With CreateObject("WinHttp.WinHttpRequest.5.1") .Open "PUT", urlencode(Host & RemotePath & FileName), False .SetRequestHeader "Host", "webdav.yandex.ru" .SetRequestHeader "Accept", "*/*" .SetRequestHeader "Etag", MD5(FileContents) .SetRequestHeader "Sha256", Sha256(FileContents) .SetRequestHeader "Expect", "100-continue" .SetRequestHeader "Content-Type", "application/binary" .SetRequestHeader "Authorization", "Basic " & Token .SetRequestHeader "Content-Length", UBound(FileContents) + 1 .send FileContents .WaitForResponse Debug.Print "Файл "; IIf(.StatusText = "Created", "успешно загружен", "не загружен") End With End Sub Private Function Str2Byte(str$) As Byte() Str2Byte = StrConv(str, vbFromUnicode) End Function Private Function urlencode$(url$) With CreateObject("scriptcontrol") .Language = "JavaScript" urlencode = .eval("encodeURI('" & url & "')") End With End Function Private Function MD5(ByVal bytes) As String Dim sTmp$, i%, byteArr() As Byte byteArr = bytes With CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider") byteArr = .ComputeHash_2(byteArr) End With For i = 0 To UBound(byteArr) sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2)) Next MD5 = sTmp End Function Private Function Sha256(ByVal bytes) As String Dim sTmp$, i%, byteArr() As Byte byteArr = bytes With CreateObject("System.Security.Cryptography.SHA256Managed") byteArr = .ComputeHash_2(byteArr) End With For i = 0 To UBound(byteArr) sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2)) Next Sha256 = sTmp End Function Private Function Token() With CreateObject("MSXML2.DOMDocument").createElement("b64") .DataType = "bin.base64" .nodeTypedValue = Str2Byte(Login & ":" & Pwd): Token = .Text End With End Function
[/vba]
Исправил свой код, так должно работать [vba]
Код
Private Const Login$ = "Логин", Pwd$ = "Пароль" Private Const Host$ = "https://webdav.yandex.ru:443/" Public Function DownloadFile(RemoteFilePath$, SaveTo) Dim FileContents() As Byte, LocalFilePath$ SaveTo = IIf(Right(SaveTo, 1) = "\", SaveTo, SaveTo & "\") With CreateObject("WinHttp.WinHttpRequest.5.1") .Open "GET", urlencode(Host & RemoteFilePath$), True .SetRequestHeader "Host", "webdav.yandex.ru" .SetRequestHeader "Accept", "*/*" .SetRequestHeader "Authorization", "Basic " & Token .send .WaitForResponse FileContents = .responseBody End With LocalFilePath = SaveTo & StrReverse(Split(StrReverse(RemoteFilePath), "/")(0)) If Dir(LocalFilePath) <> "" Then Kill LocalFilePath Open LocalFilePath For Binary Access Write As #1 Put #1, 1, FileContents Close #1 DownloadFile = LocalFilePath End Function Public Sub UploadFile(LocalFilePath$, RemotePath$) Dim FileContents As Variant, FileName$ FileName = StrReverse(Split(StrReverse(LocalFilePath), "\")(0)) RemotePath = IIf(RemotePath <> "", RemotePath & "/", "") With CreateObject("ADODB.Stream") .Type = 1: .Open: .LoadFromFile LocalFilePath: FileContents = .Read: .Close End With With CreateObject("WinHttp.WinHttpRequest.5.1") .Open "PUT", urlencode(Host & RemotePath & FileName), False .SetRequestHeader "Host", "webdav.yandex.ru" .SetRequestHeader "Accept", "*/*" .SetRequestHeader "Etag", MD5(FileContents) .SetRequestHeader "Sha256", Sha256(FileContents) .SetRequestHeader "Expect", "100-continue" .SetRequestHeader "Content-Type", "application/binary" .SetRequestHeader "Authorization", "Basic " & Token .SetRequestHeader "Content-Length", UBound(FileContents) + 1 .send FileContents .WaitForResponse Debug.Print "Файл "; IIf(.StatusText = "Created", "успешно загружен", "не загружен") End With End Sub Private Function Str2Byte(str$) As Byte() Str2Byte = StrConv(str, vbFromUnicode) End Function Private Function urlencode$(url$) With CreateObject("scriptcontrol") .Language = "JavaScript" urlencode = .eval("encodeURI('" & url & "')") End With End Function Private Function MD5(ByVal bytes) As String Dim sTmp$, i%, byteArr() As Byte byteArr = bytes With CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider") byteArr = .ComputeHash_2(byteArr) End With For i = 0 To UBound(byteArr) sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2)) Next MD5 = sTmp End Function Private Function Sha256(ByVal bytes) As String Dim sTmp$, i%, byteArr() As Byte byteArr = bytes With CreateObject("System.Security.Cryptography.SHA256Managed") byteArr = .ComputeHash_2(byteArr) End With For i = 0 To UBound(byteArr) sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2)) Next Sha256 = sTmp End Function Private Function Token() With CreateObject("MSXML2.DOMDocument").createElement("b64") .DataType = "bin.base64" .nodeTypedValue = Str2Byte(Login & ":" & Pwd): Token = .Text End With End Function
может быть, но, чтобы решение было прям совсем готовое, нужно (имхо) его дополнить проверками на ошибки и хоть немного откомментировать, а на это у мну сейчас времени немного не хватает
может быть, но, чтобы решение было прям совсем готовое, нужно (имхо) его дополнить проверками на ошибки и хоть немного откомментировать, а на это у мну сейчас времени немного не хватает krosav4ig