Приветствую всех! Друзья, помогите советом, как можно (и можно ли вообще) обратиться к папке, созданной на Яндекс-диске, из макроса книги 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
Лена, не надо подавать плохой пример начинающим. Если не знаешь точно размерности или необходимо раннее связывание, лучше уж не удалять определение переменной (терпеть не могу работать без Option Explicit ), а просто определить As Variant [vba]
Код
Dim dd
[/vba]
Лена, не надо подавать плохой пример начинающим. Если не знаешь точно размерности или необходимо раннее связывание, лучше уж не удалять определение переменной (терпеть не могу работать без Option Explicit ), а просто определить As Variant [vba]