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

Вход

Регистрация

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

 

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

Результаты поиска
krosav4ig Дата: Четверг, 15.11.2018, 15:01 | Сообщение № 661 | Тема: Вставка текста из txt на лист - начиная с опред. ячейки
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
еще вариант[vba]
Код
Sub xx()
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = False
        Open ActiveWorkbook.Path & "\8037208.txt" For Input As #1
        With GetObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
            .SetText Input$(LOF(1), 1)
            .PutInClipboard
        End With
        Close #1
        With [C5:F5]
            Range(.Cells, .End(xlDown)).ClearContents
            .Cells(1).PasteSpecial xlPasteAll
            .Copy
        End With
        .CutCopyMode = 0
        .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1
    End With
End Sub
[/vba]
К сообщению приложен файл: 6625847.xls (42.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениееще вариант[vba]
Код
Sub xx()
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = False
        Open ActiveWorkbook.Path & "\8037208.txt" For Input As #1
        With GetObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
            .SetText Input$(LOF(1), 1)
            .PutInClipboard
        End With
        Close #1
        With [C5:F5]
            Range(.Cells, .End(xlDown)).ClearContents
            .Cells(1).PasteSpecial xlPasteAll
            .Copy
        End With
        .CutCopyMode = 0
        .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 15.11.2018 в 15:01
krosav4ig Дата: Среда, 14.11.2018, 22:35 | Сообщение № 662 | Тема: Подсчёт суммы с несколькими условиями.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Добрый вечер
для желтой ячейки
Код
=МИН(СУММ(B3:E3);100)
для зеленой
Код
=СУММ(B3:E3)-F3


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДобрый вечер
для желтой ячейки
Код
=МИН(СУММ(B3:E3);100)
для зеленой
Код
=СУММ(B3:E3)-F3

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

Excel 2007,2010,2013
Добрый вечер.
[vba]
Код
Private Sub CommandButton1_Click()
    Dim var As Variant, sel As Range, s%
    Set sel = Selection.Range
    Application.ScreenUpdating = False
    s = ActiveDocument.Windows(1).VerticalPercentScrolled
    For Each var In Array("Текст1", "ТекстМ2", "Текст3К")
        With Selection.Find
            .ClearFormatting
            .Wrap = wdFindContinue
            .Text = var
            .Execute
            Do
                Selection.Collapse wdCollapseEnd
                Selection.Range.Paragraphs(1).Style = ActiveDocument.Styles(-2)
                .Execute
            Loop Until Not .Found
        End With
    Next
    sel.Select
    ActiveDocument.Windows(1).VerticalPercentScrolled = s
    Application.ScreenUpdating = True
End Sub
[/vba]
в части кода [vba]
Код
ActiveDocument.Styles(-2)
[/vba] -2=-1-УровеньЗаголовка
К сообщению приложен файл: 9819401.doc (43.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДобрый вечер.
[vba]
Код
Private Sub CommandButton1_Click()
    Dim var As Variant, sel As Range, s%
    Set sel = Selection.Range
    Application.ScreenUpdating = False
    s = ActiveDocument.Windows(1).VerticalPercentScrolled
    For Each var In Array("Текст1", "ТекстМ2", "Текст3К")
        With Selection.Find
            .ClearFormatting
            .Wrap = wdFindContinue
            .Text = var
            .Execute
            Do
                Selection.Collapse wdCollapseEnd
                Selection.Range.Paragraphs(1).Style = ActiveDocument.Styles(-2)
                .Execute
            Loop Until Not .Found
        End With
    Next
    sel.Select
    ActiveDocument.Windows(1).VerticalPercentScrolled = s
    Application.ScreenUpdating = True
End Sub
[/vba]
в части кода [vba]
Код
ActiveDocument.Styles(-2)
[/vba] -2=-1-УровеньЗаголовка

Автор - krosav4ig
Дата добавления - 14.11.2018 в 19:43
krosav4ig Дата: Среда, 14.11.2018, 18:32 | Сообщение № 664 | Тема: Генерация артикулов. 8 переменных
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
sboy, а если [vba]
Код
o=1
For Each p In Array(r, w, e, x, t, y, u, i)
    arr(q, o) = p
    o = o + 1
Next
[/vba]


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

Сообщение отредактировал krosav4ig - Среда, 14.11.2018, 18:33
 
Ответить
Сообщениеsboy, а если [vba]
Код
o=1
For Each p In Array(r, w, e, x, t, y, u, i)
    arr(q, o) = p
    o = o + 1
Next
[/vba]

Автор - krosav4ig
Дата добавления - 14.11.2018 в 18:32
krosav4ig Дата: Среда, 14.11.2018, 03:49 | Сообщение № 665 | Тема: Калькуляция меню в школьной столовой
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[offtop]ух тыж, какая вкуснявая пюрешка по рецепту получится. :D А школьники-то как обрадуются... :D


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение[offtop]ух тыж, какая вкуснявая пюрешка по рецепту получится. :D А школьники-то как обрадуются... :D

Автор - krosav4ig
Дата добавления - 14.11.2018 в 03:49
krosav4ig Дата: Воскресенье, 11.11.2018, 17:04 | Сообщение № 666 | Тема: Проверка массива данных на наличие повторов
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Добрый день.
в столбце 7 формула [vba]
Код
=СЧЁТЕСЛИМН(Таблица6[[#Заголовки];[3]]:[@3];[@3];Таблица6[[#Заголовки];[4]]:[@4];[@4];Таблица6[[#Заголовки];[5]]:[@5];[@5];Таблица6[[#Заголовки];[6]]:[@6];[@6])
[/vba] и числовой формат [=1]x;
в столбце 8 формула
Код
=[@7]
и числовой формат [>1]x;
К сообщению приложен файл: -Microsoft_Exce.xlsx (11.8 Kb)


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

Сообщение отредактировал krosav4ig - Воскресенье, 11.11.2018, 17:06
 
Ответить
СообщениеДобрый день.
в столбце 7 формула [vba]
Код
=СЧЁТЕСЛИМН(Таблица6[[#Заголовки];[3]]:[@3];[@3];Таблица6[[#Заголовки];[4]]:[@4];[@4];Таблица6[[#Заголовки];[5]]:[@5];[@5];Таблица6[[#Заголовки];[6]]:[@6];[@6])
[/vba] и числовой формат [=1]x;
в столбце 8 формула
Код
=[@7]
и числовой формат [>1]x;

Автор - krosav4ig
Дата добавления - 11.11.2018 в 17:04
krosav4ig Дата: Четверг, 08.11.2018, 19:23 | Сообщение № 667 | Тема: надстройка excel связи
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
для того, чтобы использовать серверную версию надстройки достаточно подключить ее через параметры Excel (без копирования в папку, предварительно удалив файл надстройки из %appdata%\microsoft\AddIns и %appdata%\microsoft\excel\xlstart)
или можно использовать такой макрос
[vba]
Код
On Error Resume Next
Set excelapp = GetObject(, "excel.application")
If excelapp Is Nothing Then
    Err.Clear
    Set excelapp = CreateObject("excel.application")
    excelapp.Workbooks.Add
End If
With excelapp
    with .AddIns
        .Add "\\Server\общая\Program Files\Microsoft Office\ADDINS\md5.xlam", False
        .Item("md5").Installed = true
    End With
    If Err = 0 Then MsgBox "надстройка md5 установлена успешно"
    if not excelapp.visible then excelapp.quit
end with
[/vba]
К сообщению приложен файл: 2686763.vbs (0.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениедля того, чтобы использовать серверную версию надстройки достаточно подключить ее через параметры Excel (без копирования в папку, предварительно удалив файл надстройки из %appdata%\microsoft\AddIns и %appdata%\microsoft\excel\xlstart)
или можно использовать такой макрос
[vba]
Код
On Error Resume Next
Set excelapp = GetObject(, "excel.application")
If excelapp Is Nothing Then
    Err.Clear
    Set excelapp = CreateObject("excel.application")
    excelapp.Workbooks.Add
End If
With excelapp
    with .AddIns
        .Add "\\Server\общая\Program Files\Microsoft Office\ADDINS\md5.xlam", False
        .Item("md5").Installed = true
    End With
    If Err = 0 Then MsgBox "надстройка md5 установлена успешно"
    if not excelapp.visible then excelapp.quit
end with
[/vba]

Автор - krosav4ig
Дата добавления - 08.11.2018 в 19:23
krosav4ig Дата: Четверг, 08.11.2018, 06:03 | Сообщение № 668 | Тема: Формула поиска нескольких ключевых слов одновременно
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Цитата АлексейАльтман, 08.11.2018 в 03:43, в сообщении № 6 ()
почему в одном случае формула срабатывает, а в другом нет ?
потому, что гладиолус так совпало. Вы перенесите значение из ячейки D19 в C19 или(и) из C20 в D20 и в ячейке G19 будет 0
для двух столбцов в G7 должно быть что-то типа этого
Код
=Ч(СЧЁТ(ПОИСК(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(G$4;"+";ПОВТОР(" ";99));СТОЛБЕЦ($A7:ИНДЕКС(7:7;1+ДЛСТР(G$4)-ДЛСТР(ПОДСТАВИТЬ(G$4;"+";))))*99-98;99));C7:C9&D7:D9))>ДЛСТР(G$4)-ДЛСТР(ПОДСТАВИТЬ(G$4;"+";)))

или этого %)
Код
=Ч(СЧЁТ(ПОИСК(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(G$4;"+";ПОВТОР(" ";99));СТОЛБЕЦ($A7:ИНДЕКС(7:7;1+ДЛСТР(G$4)-ДЛСТР(ПОДСТАВИТЬ(G$4;"+";))))*99-98;99));ИНДЕКС(C7:D9;Ч(ИНДЕКС(ОКРВВЕРХ(СТРОКА(A$1:ИНДЕКС(A:A;ЧСТРОК(C7:D9)*ЧИСЛСТОЛБ(C7:D9)))/ЧИСЛСТОЛБ(C7:D9);1);0));Ч(ИНДЕКС(ОСТАТ(СТРОКА(A$1:ИНДЕКС(A:A;ЧСТРОК(C7:D9)*ЧИСЛСТОЛБ(C7:D9)))-1;ЧИСЛСТОЛБ(C7:D9))+1;0)))))>ДЛСТР(G$4)-ДЛСТР(ПОДСТАВИТЬ(G$4;"+";)))


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

Сообщение отредактировал krosav4ig - Четверг, 08.11.2018, 06:04
 
Ответить
Сообщение
Цитата АлексейАльтман, 08.11.2018 в 03:43, в сообщении № 6 ()
почему в одном случае формула срабатывает, а в другом нет ?
потому, что гладиолус так совпало. Вы перенесите значение из ячейки D19 в C19 или(и) из C20 в D20 и в ячейке G19 будет 0
для двух столбцов в G7 должно быть что-то типа этого
Код
=Ч(СЧЁТ(ПОИСК(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(G$4;"+";ПОВТОР(" ";99));СТОЛБЕЦ($A7:ИНДЕКС(7:7;1+ДЛСТР(G$4)-ДЛСТР(ПОДСТАВИТЬ(G$4;"+";))))*99-98;99));C7:C9&D7:D9))>ДЛСТР(G$4)-ДЛСТР(ПОДСТАВИТЬ(G$4;"+";)))

или этого %)
Код
=Ч(СЧЁТ(ПОИСК(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(G$4;"+";ПОВТОР(" ";99));СТОЛБЕЦ($A7:ИНДЕКС(7:7;1+ДЛСТР(G$4)-ДЛСТР(ПОДСТАВИТЬ(G$4;"+";))))*99-98;99));ИНДЕКС(C7:D9;Ч(ИНДЕКС(ОКРВВЕРХ(СТРОКА(A$1:ИНДЕКС(A:A;ЧСТРОК(C7:D9)*ЧИСЛСТОЛБ(C7:D9)))/ЧИСЛСТОЛБ(C7:D9);1);0));Ч(ИНДЕКС(ОСТАТ(СТРОКА(A$1:ИНДЕКС(A:A;ЧСТРОК(C7:D9)*ЧИСЛСТОЛБ(C7:D9)))-1;ЧИСЛСТОЛБ(C7:D9))+1;0)))))>ДЛСТР(G$4)-ДЛСТР(ПОДСТАВИТЬ(G$4;"+";)))

Автор - krosav4ig
Дата добавления - 08.11.2018 в 06:03
krosav4ig Дата: Среда, 07.11.2018, 17:35 | Сообщение № 669 | Тема: Формула поиска нескольких ключевых слов одновременно
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а вдрг пригодится...
Код
=СЧЁТ(1/(МУМНОЖ(ИНДЕКС(МУМНОЖ(ЕСЛИОШИБКА(ПОИСК(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(G4;"+";ПОВТОР(" ";99));СТОЛБЕЦ(A1:ИНДЕКС(1:1;1+ДЛСТР(G4)-ДЛСТР(ПОДСТАВИТЬ(G4;"+";))))*99-98;99));D7:D33)^0;);ТРАНСП(СТОЛБЕЦ(A1:ИНДЕКС(1:1;1+ДЛСТР(G4)-ДЛСТР(ПОДСТАВИТЬ(G4;"+";)))))^0);Ч(ИНДЕКС(СТРОКА(A1:ИНДЕКС(A:A;ЧСТРОК(D7:D33)/3))*3-3+{1;2;3};;)));{1:1:1})>ДЛСТР(G4)-ДЛСТР(ПОДСТАВИТЬ(G4;"+";))))
К сообщению приложен файл: 3917363.xlsx (14.3 Kb)


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

Сообщение отредактировал krosav4ig - Среда, 07.11.2018, 17:36
 
Ответить
Сообщениеа вдрг пригодится...
Код
=СЧЁТ(1/(МУМНОЖ(ИНДЕКС(МУМНОЖ(ЕСЛИОШИБКА(ПОИСК(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(G4;"+";ПОВТОР(" ";99));СТОЛБЕЦ(A1:ИНДЕКС(1:1;1+ДЛСТР(G4)-ДЛСТР(ПОДСТАВИТЬ(G4;"+";))))*99-98;99));D7:D33)^0;);ТРАНСП(СТОЛБЕЦ(A1:ИНДЕКС(1:1;1+ДЛСТР(G4)-ДЛСТР(ПОДСТАВИТЬ(G4;"+";)))))^0);Ч(ИНДЕКС(СТРОКА(A1:ИНДЕКС(A:A;ЧСТРОК(D7:D33)/3))*3-3+{1;2;3};;)));{1:1:1})>ДЛСТР(G4)-ДЛСТР(ПОДСТАВИТЬ(G4;"+";))))

Автор - krosav4ig
Дата добавления - 07.11.2018 в 17:35
krosav4ig Дата: Среда, 07.11.2018, 03:44 | Сообщение № 670 | Тема: надстройка excel связи
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
как исправить?

ну дык, если надстройка правильно подключена, она открывается при запуске excel, просто удалить путь к файлу из формул


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
как исправить?

ну дык, если надстройка правильно подключена, она открывается при запуске excel, просто удалить путь к файлу из формул

Автор - krosav4ig
Дата добавления - 07.11.2018 в 03:44
krosav4ig Дата: Вторник, 06.11.2018, 06:36 | Сообщение № 671 | Тема: Пропуск пустых ячеек в цикле
Группа: Друзья
Ранг: Старожил
Сообщений: 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
krosav4ig Дата: Воскресенье, 04.11.2018, 21:08 | Сообщение № 672 | Тема: Посчитать кол-во уникальных значений в заданном диапазоне
Группа: Друзья
Ранг: Старожил
Сообщений: 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 Дата: Суббота, 03.11.2018, 22:40 | Сообщение № 673 | Тема: Учет ячеек в заданном диапазоне при вычислении ср. значения
Группа: Друзья
Ранг: Старожил
Сообщений: 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 Дата: Понедельник, 29.10.2018, 21:35 | Сообщение № 674 | Тема: Скачать (Сохранить) файл с Яндекс-диска макросом 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 Дата: Четверг, 18.10.2018, 16:37 | Сообщение № 675 | Тема: Преобразовать "текст" в "время"
Группа: Друзья
Ранг: Старожил
Сообщений: 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 Дата: Вторник, 16.10.2018, 19:46 | Сообщение № 676 | Тема: Формула для преобразование даты в краткий формат.
Группа: Друзья
Ранг: Старожил
Сообщений: 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 Дата: Пятница, 05.10.2018, 02:43 | Сообщение № 677 | Тема: Тип данных, возвращаемый методом 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 Дата: Среда, 03.10.2018, 23:33 | Сообщение № 678 | Тема: Подсчет значений если значение ячейки - "текст ссылки"
Группа: Друзья
Ранг: Старожил
Сообщений: 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 Дата: Среда, 03.10.2018, 16:35 | Сообщение № 679 | Тема: Изменить время напоминания в Задаче 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 Дата: Вторник, 02.10.2018, 23:09 | Сообщение № 680 | Тема: Удаление соединительных линий между 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
Поиск:

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