Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Записи участника (krosav4ig) - Мир MS Excel

Результаты поиска
krosav4ig Дата: Воскресенье, 09.09.2018, 02:47 | Сообщение № 1641 | Тема: Передача данных из combobox в запрос, в условие WHERE
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
alexban65, поправьте тег, вы использовали тег формулы вместо тега VBA
Цитата
"SELECT * FROM Itog WHERE id1 LIKE '" & UserForm.ComboBox2.Text & "' AND [тут чего-то пропущено] IS NOT NULL ORDER BY 1"


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 09.09.2018, 02:47
 
Ответить
Сообщениеalexban65, поправьте тег, вы использовали тег формулы вместо тега VBA
Цитата
"SELECT * FROM Itog WHERE id1 LIKE '" & UserForm.ComboBox2.Text & "' AND [тут чего-то пропущено] IS NOT NULL ORDER BY 1"

Автор - krosav4ig
Дата добавления - 09.09.2018 в 02:47
krosav4ig Дата: Понедельник, 10.09.2018, 01:27 | Сообщение № 1642 | Тема: Передача значения переменной в условие WHERE в запросе
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
cntrl = "UserForm." & UserForm.ActiveControl.Name & ".Text"

А, собственно, чего вы этим пытаетесь добиться?


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
cntrl = "UserForm." & UserForm.ActiveControl.Name & ".Text"

А, собственно, чего вы этим пытаетесь добиться?

Автор - krosav4ig
Дата добавления - 10.09.2018 в 01:27
krosav4ig Дата: Понедельник, 10.09.2018, 12:58 | Сообщение № 1643 | Тема: Принудительное создание массивов
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Добрый день
Код
=МАКС(МУМНОЖ(ЕСЛИОШИБКА(ИНДЕКС(B:B;Ч(ИНДЕКС(A2:A11+{1;2;3};0;0))););{1:1:1}))/3


UPD.
чего-то я подтупливаю...
Код
=ПОИСКПОЗ(МАКС(МУМНОЖ(ИНДЕКС(B:B;Ч(ИНДЕКС(A2:A9+{1;2;3};;)));{1:1:1}));МУМНОЖ(ИНДЕКС(B:B;Ч(ИНДЕКС(A2:A9+{1;2;3};;)));{1:1:1});)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 10.09.2018, 16:45
 
Ответить
СообщениеДобрый день
Код
=МАКС(МУМНОЖ(ЕСЛИОШИБКА(ИНДЕКС(B:B;Ч(ИНДЕКС(A2:A11+{1;2;3};0;0))););{1:1:1}))/3


UPD.
чего-то я подтупливаю...
Код
=ПОИСКПОЗ(МАКС(МУМНОЖ(ИНДЕКС(B:B;Ч(ИНДЕКС(A2:A9+{1;2;3};;)));{1:1:1}));МУМНОЖ(ИНДЕКС(B:B;Ч(ИНДЕКС(A2:A9+{1;2;3};;)));{1:1:1});)

Автор - krosav4ig
Дата добавления - 10.09.2018 в 12:58
krosav4ig Дата: Воскресенье, 16.09.2018, 05:01 | Сообщение № 1644 | Тема: Макрос подгрузки шаблона Building Blocks
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Так как-то проще будет [vba]
Код
application.templates.loadbuildingblocks
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеТак как-то проще будет [vba]
Код
application.templates.loadbuildingblocks
[/vba]

Автор - krosav4ig
Дата добавления - 16.09.2018 в 05:01
krosav4ig Дата: Четверг, 20.09.2018, 19:19 | Сообщение № 1645 | Тема: МЕСЯЦ прописью
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
до кучи
Код
=ТЕКСТ(C1*30;"[$-419]ММММ")
Код
=ТЕКСТ(C1*30;"[$-f419]ММММ")


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Четверг, 20.09.2018, 19:20
 
Ответить
Сообщениедо кучи
Код
=ТЕКСТ(C1*30;"[$-419]ММММ")
Код
=ТЕКСТ(C1*30;"[$-f419]ММММ")

Автор - krosav4ig
Дата добавления - 20.09.2018 в 19:19
krosav4ig Дата: Суббота, 22.09.2018, 11:04 | Сообщение № 1646 | Тема: Список листов сторонних книг
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Добрый день
Посмотрите эту тему


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДобрый день
Посмотрите эту тему

Автор - krosav4ig
Дата добавления - 22.09.2018 в 11:04
krosav4ig Дата: Среда, 26.09.2018, 18:56 | Сообщение № 1647 | Тема: Получить значение togglebutton ActiveX с другого листа
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
wsGraph.OLEObjects("tbCollect").Object
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение[vba]
Код
wsGraph.OLEObjects("tbCollect").Object
[/vba]

Автор - krosav4ig
Дата добавления - 26.09.2018 в 18:56
krosav4ig Дата: Пятница, 28.09.2018, 20:35 | Сообщение № 1648 | Тема: Формула в дате для определения конкретного дня месяца
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
или так
Код
=КОНМЕСЯЦА(СЕГОДНЯ();СТРОКА()-1-(ДЕНЬ(СЕГОДНЯ())<20))+20


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Суббота, 29.09.2018, 11:24
 
Ответить
Сообщениеили так
Код
=КОНМЕСЯЦА(СЕГОДНЯ();СТРОКА()-1-(ДЕНЬ(СЕГОДНЯ())<20))+20

Автор - krosav4ig
Дата добавления - 28.09.2018 в 20:35
krosav4ig Дата: Пятница, 28.09.2018, 20:41 | Сообщение № 1649 | Тема: Не удается прописать диапозон
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
эксель ругается, говорит, что так нельзя

ну дык не научился он еще диапазон со строкой скрещивать :)
Код
'Журнал ИБ'!$B$5:ИНДЕКС('Журнал ИБ'!$B:$B;$L$4);$L$4)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Пятница, 28.09.2018, 20:43
 
Ответить
Сообщение
эксель ругается, говорит, что так нельзя

ну дык не научился он еще диапазон со строкой скрещивать :)
Код
'Журнал ИБ'!$B$5:ИНДЕКС('Журнал ИБ'!$B:$B;$L$4);$L$4)

Автор - krosav4ig
Дата добавления - 28.09.2018 в 20:41
krosav4ig Дата: Вторник, 02.10.2018, 22:31 | Сообщение № 1650 | Тема: Группировка данных из строк в столбцы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Доп. столбец с формулой
Код
=СЧЁТЕСЛИ($A$1:A2;A2)
и сводная
К сообщению приложен файл: 6116019.xlsx (49.4 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДоп. столбец с формулой
Код
=СЧЁТЕСЛИ($A$1:A2;A2)
и сводная

Автор - krosav4ig
Дата добавления - 02.10.2018 в 22:31
krosav4ig Дата: Вторник, 02.10.2018, 23:09 | Сообщение № 1651 | Тема: Удаление соединительных линий между 2 фигурами
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте. Как-то так
[vba]
Код
Sub Нарисовать()
Dim o1 As Shape, o2 As Shape
Set o1 = ActiveSheet.Shapes([E3])
Set o2 = ActiveSheet.Shapes([E6])
Dim x1!, y1!, r1!, x2!, y2!, r2!, xa!, ya!, xb!, yb!
GetParam o1, x1, y1, r1
GetParam o2, x2, y2, r2
Dim i&, j&, p#, l!, lmin!
Dim x1t!, y1t!, x2t!, y2t!, bc&, ec&
p = Atn(1)
lmin = [a65536].Top - [a1].Top
For i = 0 To 7
  x1t = x1 + Cos(p * i) * r1
  y1t = y1 - Sin(p * i) * r1
  For j = 0 To 7
    x2t = x2 + Cos(p * j) * r2
    y2t = y2 - Sin(p * j) * r2
    l = Sqr((x1t - x2t) ^ 2 + (y1t - y2t) ^ 2)
    If l < lmin Then
      lmin = l
      xa = x1t
      ya = y1t
      xb = x2t
      yb = y2t
      bc = i
      ec = j
    End If
  Next
Next
With ActiveSheet.Shapes.AddConnector(msoConnectorStraight, xa, ya, xb, yb)
    .ConnectorFormat.BeginConnect o1, (bc + 6) Mod 8 + 1
    .ConnectorFormat.EndConnect o2, (ec + 6) Mod 8 + 1
    .Name = [E3] & "|" & [E6]
End With
End Sub

Sub Удалить()
    On Error Resume Next
    ActiveSheet.Shapes([E3] & "|" & [E6]).Delete
    If Err = 0 Then Exit Sub
    Dim o1 As Shape, o2 As Shape, o3 As Shape, o4 As Shape
    Set o1 = ActiveSheet.Shapes([E3])
    Set o2 = ActiveSheet.Shapes([E6])
    For Each sh In ActiveSheet.Shapes
        If sh.Connector Then
            With sh.ConnectorFormat
                Set o3 = .BeginConnectedShape
                Set o4 = .EndConnectedShape
                If o1 Is o3 And o2 Is o4 Or o1 Is o4 And o2 Is o3 Then
                    sh.Delete
                    Exit For
                End If
            End With
        End If
    Next
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте. Как-то так
[vba]
Код
Sub Нарисовать()
Dim o1 As Shape, o2 As Shape
Set o1 = ActiveSheet.Shapes([E3])
Set o2 = ActiveSheet.Shapes([E6])
Dim x1!, y1!, r1!, x2!, y2!, r2!, xa!, ya!, xb!, yb!
GetParam o1, x1, y1, r1
GetParam o2, x2, y2, r2
Dim i&, j&, p#, l!, lmin!
Dim x1t!, y1t!, x2t!, y2t!, bc&, ec&
p = Atn(1)
lmin = [a65536].Top - [a1].Top
For i = 0 To 7
  x1t = x1 + Cos(p * i) * r1
  y1t = y1 - Sin(p * i) * r1
  For j = 0 To 7
    x2t = x2 + Cos(p * j) * r2
    y2t = y2 - Sin(p * j) * r2
    l = Sqr((x1t - x2t) ^ 2 + (y1t - y2t) ^ 2)
    If l < lmin Then
      lmin = l
      xa = x1t
      ya = y1t
      xb = x2t
      yb = y2t
      bc = i
      ec = j
    End If
  Next
Next
With ActiveSheet.Shapes.AddConnector(msoConnectorStraight, xa, ya, xb, yb)
    .ConnectorFormat.BeginConnect o1, (bc + 6) Mod 8 + 1
    .ConnectorFormat.EndConnect o2, (ec + 6) Mod 8 + 1
    .Name = [E3] & "|" & [E6]
End With
End Sub

Sub Удалить()
    On Error Resume Next
    ActiveSheet.Shapes([E3] & "|" & [E6]).Delete
    If Err = 0 Then Exit Sub
    Dim o1 As Shape, o2 As Shape, o3 As Shape, o4 As Shape
    Set o1 = ActiveSheet.Shapes([E3])
    Set o2 = ActiveSheet.Shapes([E6])
    For Each sh In ActiveSheet.Shapes
        If sh.Connector Then
            With sh.ConnectorFormat
                Set o3 = .BeginConnectedShape
                Set o4 = .EndConnectedShape
                If o1 Is o3 And o2 Is o4 Or o1 Is o4 And o2 Is o3 Then
                    sh.Delete
                    Exit For
                End If
            End With
        End If
    Next
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 02.10.2018 в 23:09
krosav4ig Дата: Среда, 03.10.2018, 16:35 | Сообщение № 1652 | Тема: Изменить время напоминания в Задаче VBA
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
до 9 утра следующего дня.
[vba]
Код
ReminderTime = Date + 33/24
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
до 9 утра следующего дня.
[vba]
Код
ReminderTime = Date + 33/24
[/vba]

Автор - krosav4ig
Дата добавления - 03.10.2018 в 16:35
krosav4ig Дата: Среда, 03.10.2018, 23:33 | Сообщение № 1653 | Тема: Подсчет значений если значение ячейки - "текст ссылки"
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
VladimirSK777, дело в том, что по умолчанию при вставке ссылки второй аргумент функции ГИПЕРССЫЛКА() заключается в кавычки, и, хоть там и написано число, на выходе получается текст


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеVladimirSK777, дело в том, что по умолчанию при вставке ссылки второй аргумент функции ГИПЕРССЫЛКА() заключается в кавычки, и, хоть там и написано число, на выходе получается текст

Автор - krosav4ig
Дата добавления - 03.10.2018 в 23:33
krosav4ig Дата: Пятница, 05.10.2018, 02:43 | Сообщение № 1654 | Тема: Тип данных, возвращаемый методом GetFolder
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Scripting.Folder или просто Folder
в Object browser можно проверить, при подключенном референсе Microsoft Scripting Runtime выбираем библиотеку Scripting, в поле поиска пишем getfolder и жмакаем Enter
ругается при запуске

в референсах случаем нету ничего с пометкой MISSING: ?
у мну так без ошибок отрабатывает[vba]
Код
Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
                             Optional ByVal SearchDeep As Long = 999) As Collection
    ' Получает в качестве параметра путь к папке FolderPath,
    ' маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением)
    ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
    ' Возвращает коллекцию, содержащую полные пути найденных файлов
    ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)

    Set FilenamesCollection = New Collection    ' создаём пустую коллекцию
    Dim FSO As New FileSystemObject       ' создаём экземпляр FileSystemObject
    GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep    ' поиск
    Set FSO = Nothing: Application.StatusBar = False    ' очистка строки состояния Excel
End Function

Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO As FileSystemObject, _
                    ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
    ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
    ' перебор папок осуществляется в том случае, если SearchDeep > 1
    ' добавляет пути найденных файлов в коллекцию FileNamesColl
    Dim curfold As Folder, sfol As Folder, fil As File
    Set curfold = FSO.GetFolder(FolderPath)
    If Not curfold Is Nothing Then    ' если удалось получить доступ к папке

        ' раскомментируйте эту строку для вывода пути к просматриваемой
        ' в текущий момент папке в строку состояния Excel
        Application.StatusBar = "Поиск в папке: " & FolderPath

        For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
            If fil.Name Like "*" & Mask Then FileNamesColl.Add fil.Path
        Next
        SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
        If SearchDeep Then    ' если надо искать глубже
            For Each sfol In curfold.SubFolders    ' ' перебираем все подпапки в папке FolderPath
                GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep
            Next
        End If
        Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
    End If
[/vba]
К сообщению приложен файл: 1209584.png (81.9 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеScripting.Folder или просто Folder
в Object browser можно проверить, при подключенном референсе Microsoft Scripting Runtime выбираем библиотеку Scripting, в поле поиска пишем getfolder и жмакаем Enter
ругается при запуске

в референсах случаем нету ничего с пометкой MISSING: ?
у мну так без ошибок отрабатывает[vba]
Код
Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
                             Optional ByVal SearchDeep As Long = 999) As Collection
    ' Получает в качестве параметра путь к папке FolderPath,
    ' маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением)
    ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
    ' Возвращает коллекцию, содержащую полные пути найденных файлов
    ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)

    Set FilenamesCollection = New Collection    ' создаём пустую коллекцию
    Dim FSO As New FileSystemObject       ' создаём экземпляр FileSystemObject
    GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep    ' поиск
    Set FSO = Nothing: Application.StatusBar = False    ' очистка строки состояния Excel
End Function

Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO As FileSystemObject, _
                    ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
    ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
    ' перебор папок осуществляется в том случае, если SearchDeep > 1
    ' добавляет пути найденных файлов в коллекцию FileNamesColl
    Dim curfold As Folder, sfol As Folder, fil As File
    Set curfold = FSO.GetFolder(FolderPath)
    If Not curfold Is Nothing Then    ' если удалось получить доступ к папке

        ' раскомментируйте эту строку для вывода пути к просматриваемой
        ' в текущий момент папке в строку состояния Excel
        Application.StatusBar = "Поиск в папке: " & FolderPath

        For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
            If fil.Name Like "*" & Mask Then FileNamesColl.Add fil.Path
        Next
        SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
        If SearchDeep Then    ' если надо искать глубже
            For Each sfol In curfold.SubFolders    ' ' перебираем все подпапки в папке FolderPath
                GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep
            Next
        End If
        Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
    End If
[/vba]

Автор - krosav4ig
Дата добавления - 05.10.2018 в 02:43
krosav4ig Дата: Вторник, 16.10.2018, 19:46 | Сообщение № 1655 | Тема: Формула для преобразование даты в краткий формат.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
до кучи
Код
=-ПРОСМОТР(;-ПОДСТАВИТЬ(ЛЕВБ(A1;{5;6})&ПРАВБ(A1;5);"ая";"ай"))


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениедо кучи
Код
=-ПРОСМОТР(;-ПОДСТАВИТЬ(ЛЕВБ(A1;{5;6})&ПРАВБ(A1;5);"ая";"ай"))

Автор - krosav4ig
Дата добавления - 16.10.2018 в 19:46
krosav4ig Дата: Четверг, 18.10.2018, 16:37 | Сообщение № 1656 | Тема: Преобразовать "текст" в "время"
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
еще вариант, массивная формула
Код
=СУММ(ЕСЛИОШИБКА(ПСТР(0&A4;ПОИСК({"h";"m";"s"};0&A4)-2;2)/24/60^{0;1;2};))


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениееще вариант, массивная формула
Код
=СУММ(ЕСЛИОШИБКА(ПСТР(0&A4;ПОИСК({"h";"m";"s"};0&A4)-2;2)/24/60^{0;1;2};))

Автор - krosav4ig
Дата добавления - 18.10.2018 в 16:37
krosav4ig Дата: Понедельник, 29.10.2018, 21:35 | Сообщение № 1657 | Тема: Скачать (Сохранить) файл с Яндекс-диска макросом Excel
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
А вы уверены, что в параметр RemotePath нужно сувать имя файла?
изменение имени файла реализовано не было, RemotePath предназначен для указания пути к папке в ЯДиске

что может значить значение ответа сервера Яндекс Диска:

.StatusText = "Conflict"
Видимо, то, что нет там папки с именем 777.mp3

[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$, Optional RemotePath$ = "/", Optional RemoteFilename$ = "")
    Dim FileContents As Variant, FileName$
    RemotePath = RemotePath & IIf(Right(RemotePath, 1) = "/", "", "/")
    RemoteFilename = IIf(Len(RemoteFilename), RemoteFilename, StrReverse(Split(StrReverse(LocalFilePath), "\")(0)))
    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 & RemoteFilename), 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 .statustext
        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]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеА вы уверены, что в параметр RemotePath нужно сувать имя файла?
изменение имени файла реализовано не было, RemotePath предназначен для указания пути к папке в ЯДиске

что может значить значение ответа сервера Яндекс Диска:

.StatusText = "Conflict"
Видимо, то, что нет там папки с именем 777.mp3

[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$, Optional RemotePath$ = "/", Optional RemoteFilename$ = "")
    Dim FileContents As Variant, FileName$
    RemotePath = RemotePath & IIf(Right(RemotePath, 1) = "/", "", "/")
    RemoteFilename = IIf(Len(RemoteFilename), RemoteFilename, StrReverse(Split(StrReverse(LocalFilePath), "\")(0)))
    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 & RemoteFilename), 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 .statustext
        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]

Автор - krosav4ig
Дата добавления - 29.10.2018 в 21:35
krosav4ig Дата: Суббота, 03.11.2018, 22:40 | Сообщение № 1658 | Тема: Учет ячеек в заданном диапазоне при вычислении ср. значения
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
kosa4evskiy, справа под вашим первым постом кнопка правка (листик с карандашиком)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеkosa4evskiy, справа под вашим первым постом кнопка правка (листик с карандашиком)

Автор - krosav4ig
Дата добавления - 03.11.2018 в 22:40
krosav4ig Дата: Воскресенье, 04.11.2018, 21:08 | Сообщение № 1659 | Тема: Посчитать кол-во уникальных значений в заданном диапазоне
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
на случай, если исходная таблица будет неотсортированниой, массивная формула
Код
=СУММ(ЕСЛИОШИБКА(1/СЧЁТЕСЛИМН(Лист1!$A$1:$A$36;Лист1!$A$1:$A$36;Лист1!$B$1:$B$36;C$1;Лист1!$C$1:$C$36;$B2);))
К сообщению приложен файл: 7405370.xlsx (12.1 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениена случай, если исходная таблица будет неотсортированниой, массивная формула
Код
=СУММ(ЕСЛИОШИБКА(1/СЧЁТЕСЛИМН(Лист1!$A$1:$A$36;Лист1!$A$1:$A$36;Лист1!$B$1:$B$36;C$1;Лист1!$C$1:$C$36;$B2);))

Автор - krosav4ig
Дата добавления - 04.11.2018 в 21:08
krosav4ig Дата: Вторник, 06.11.2018, 06:36 | Сообщение № 1660 | Тема: Пропуск пустых ячеек в цикле
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте [vba]
Код
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
    Dim result As String, arg, arr As Variant, rc As Variant
    For Each arg In Значения
        Select Case TypeName(arg)
        Case "Range"                     'это диапазон
            arr = IIf(arg.Count > 1, arg.Value, Array(arg.Value))
        Case "Variant()"                 'это массив
            arr = arg
        Case Else
            arr = Array(arg)
        End Select
        'цикл по всем значениям массива
        For Each rc In arr
            If Not IsEmpty(rc) And rc <> "" Then
                result = result & IIf(result <> "", Разделитель, "") & rc
            End If
    Next rc, arg
    ОбъединитьСРазделителем = result
End Function
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 06.11.2018, 06:46
 
Ответить
СообщениеЗдравствуйте [vba]
Код
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
    Dim result As String, arg, arr As Variant, rc As Variant
    For Each arg In Значения
        Select Case TypeName(arg)
        Case "Range"                     'это диапазон
            arr = IIf(arg.Count > 1, arg.Value, Array(arg.Value))
        Case "Variant()"                 'это массив
            arr = arg
        Case Else
            arr = Array(arg)
        End Select
        'цикл по всем значениям массива
        For Each rc In arr
            If Not IsEmpty(rc) And rc <> "" Then
                result = result & IIf(result <> "", Разделитель, "") & rc
            End If
    Next rc, arg
    ОбъединитьСРазделителем = result
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 06.11.2018 в 06:36
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!