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

Вход

Регистрация

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

 

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

Результаты поиска
krosav4ig Дата: Вторник, 15.01.2019, 21:31 | Сообщение № 1741 | Тема: Трансформировать таблицу в другой вид
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
до кучи, массивная гипер-монстро-формула
Код
=ЕСЛИОШИБКА(ЕСЛИ(СТРОКА()=3;ВЫБОР(ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1});{1;2;3});ИНДЕКС(Table;$C$1;СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1-1)&"";ИНДЕКС($E$1:ИНДЕКС($1:$1;$C$1+4);СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1)&"";ЕСЛИ(СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1>$D$1;"";ЕСЛИ($D$1>1;ЕСЛИОШИБКА(ЕСЛИ(ИНДЕКС(ИНДЕКС(Table;1;$B$1+1):ИНДЕКС(Table;$C$1;ЧИСЛСТОЛБ(Table));$C$1;1)=ИНДЕКС(ИНДЕКС(Table;1;$B$1+1):ИНДЕКС(Table;$C$1;ЧИСЛСТОЛБ(Table));$C$1;$D$1+1);ИНДЕКС(ИНДЕКС(Table;1;$B$1+1):ИНДЕКС(Table;$C$1;ЧИСЛСТОЛБ(Table));$C$1;ОСТАТ(СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1-1;$D$1)+1);СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1);СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1);ЕСЛИ(СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1-1;"";"Значение")))&"");ВЫБОР(ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1});{1;2;3});ИНДЕКС(ИНДЕКС(Table;$C$1+1;1):ИНДЕКС(Table;ЧСТРОК(Table);$B$1);ОТБР((СТРОКА(A1)-2)/ЧИСЛСТОЛБ(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table)))*$D$1)+1;СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1-1);ЕСЛИ(ДЛСТР(ИНДЕКС(ИНДЕКС(Table;$C$1+1;1):ИНДЕКС(Table;ЧСТРОК(Table);$B$1);ОТБР((СТРОКА(A1)-2)/ЧИСЛСТОЛБ(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table)))*$D$1)+1;1));ИНДЕКС(ИНДЕКС(Table;1;$B$1+1):ИНДЕКС(Table;$C$1;ЧИСЛСТОЛБ(Table));СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1;ОСТАТ((СТРОКА(A1)-2);ЧИСЛСТОЛБ(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table)))/$D$1)*$D$1+1);"");ЕСЛИ(СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1>$D$1;"";ИНДЕКС(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table));ОТБР((СТРОКА(A1)-2)/ЧИСЛСТОЛБ(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table)))*$D$1)+1;ОСТАТ((СТРОКА(A1)-2);ЧИСЛСТОЛБ(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table)))/$D$1)*$D$1+СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1))));"")

В файле 6988119-3.xlsx большая часть этой формулы заныкано в диспетчер имен, в таблице формула
Код
=ЕСЛИОШИБКА(ЕСЛИ(СТРОКА()=3;ВЫБОР(nn;h_1&"";h_2&"";h_3);ВЫБОР(nn;f_1;f_2;f_3));"")
К сообщению приложен файл: 6988119-2.xlsx (27.3 Kb) · 6988119-3.xlsx (22.8 Kb)


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

Сообщение отредактировал krosav4ig - Вторник, 15.01.2019, 21:44
 
Ответить
Сообщениедо кучи, массивная гипер-монстро-формула
Код
=ЕСЛИОШИБКА(ЕСЛИ(СТРОКА()=3;ВЫБОР(ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1});{1;2;3});ИНДЕКС(Table;$C$1;СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1-1)&"";ИНДЕКС($E$1:ИНДЕКС($1:$1;$C$1+4);СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1)&"";ЕСЛИ(СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1>$D$1;"";ЕСЛИ($D$1>1;ЕСЛИОШИБКА(ЕСЛИ(ИНДЕКС(ИНДЕКС(Table;1;$B$1+1):ИНДЕКС(Table;$C$1;ЧИСЛСТОЛБ(Table));$C$1;1)=ИНДЕКС(ИНДЕКС(Table;1;$B$1+1):ИНДЕКС(Table;$C$1;ЧИСЛСТОЛБ(Table));$C$1;$D$1+1);ИНДЕКС(ИНДЕКС(Table;1;$B$1+1):ИНДЕКС(Table;$C$1;ЧИСЛСТОЛБ(Table));$C$1;ОСТАТ(СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1-1;$D$1)+1);СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1);СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1);ЕСЛИ(СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1-1;"";"Значение")))&"");ВЫБОР(ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1});{1;2;3});ИНДЕКС(ИНДЕКС(Table;$C$1+1;1):ИНДЕКС(Table;ЧСТРОК(Table);$B$1);ОТБР((СТРОКА(A1)-2)/ЧИСЛСТОЛБ(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table)))*$D$1)+1;СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1-1);ЕСЛИ(ДЛСТР(ИНДЕКС(ИНДЕКС(Table;$C$1+1;1):ИНДЕКС(Table;ЧСТРОК(Table);$B$1);ОТБР((СТРОКА(A1)-2)/ЧИСЛСТОЛБ(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table)))*$D$1)+1;1));ИНДЕКС(ИНДЕКС(Table;1;$B$1+1):ИНДЕКС(Table;$C$1;ЧИСЛСТОЛБ(Table));СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1;ОСТАТ((СТРОКА(A1)-2);ЧИСЛСТОЛБ(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table)))/$D$1)*$D$1+1);"");ЕСЛИ(СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1>$D$1;"";ИНДЕКС(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table));ОТБР((СТРОКА(A1)-2)/ЧИСЛСТОЛБ(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table)))*$D$1)+1;ОСТАТ((СТРОКА(A1)-2);ЧИСЛСТОЛБ(ИНДЕКС(Table;$C$1+1;$B$1+1):ИНДЕКС(Table;ЧСТРОК(Table);ЧИСЛСТОЛБ(Table)))/$D$1)*$D$1+СТОЛБЕЦ()-ПРОСМОТР(СТОЛБЕЦ();МУМНОЖ(ЕСЛИ({1:2:3}>={1;2;3};$A$1:$C$1*{0;1;1}+{0;1;0};);{1:1:1}))+1))));"")

В файле 6988119-3.xlsx большая часть этой формулы заныкано в диспетчер имен, в таблице формула
Код
=ЕСЛИОШИБКА(ЕСЛИ(СТРОКА()=3;ВЫБОР(nn;h_1&"";h_2&"";h_3);ВЫБОР(nn;f_1;f_2;f_3));"")

Автор - krosav4ig
Дата добавления - 15.01.2019 в 21:31
krosav4ig Дата: Среда, 16.01.2019, 16:37 | Сообщение № 1742 | Тема: Медленно обрабатывается массив данных
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Sancho, если уж и делать умную таблицу, то и в сводной лучше заменить источник данных на Таблица1[#Все]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеSancho, если уж и делать умную таблицу, то и в сводной лучше заменить источник данных на Таблица1[#Все]

Автор - krosav4ig
Дата добавления - 16.01.2019 в 16:37
krosav4ig Дата: Среда, 16.01.2019, 22:47 | Сообщение № 1743 | Тема: Копирование файлов из одной папки в другую по условию
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
fso.GetFileName(fil.Path)

For Each iFile In Folder.Files

[vba]
Код
If iFile.Name Like "*+*.xls*" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
fso.GetFileName(fil.Path)

For Each iFile In Folder.Files

[vba]
Код
If iFile.Name Like "*+*.xls*" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
[/vba]

Автор - krosav4ig
Дата добавления - 16.01.2019 в 22:47
krosav4ig Дата: Среда, 16.01.2019, 22:58 | Сообщение № 1744 | Тема: Перенос итоговой суммы по столбцам при формировании отчета
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
parovoznik, замените ; на , и диапазон в [] всуньте
[vba]
Код
.Cells(LR + 1, 6)=Application.WorksheetFunction.VLookup("Итого*",[реестр!$B$3:$I$99],4,0)
[/vba]


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

Сообщение отредактировал krosav4ig - Среда, 16.01.2019, 23:00
 
Ответить
Сообщениеparovoznik, замените ; на , и диапазон в [] всуньте
[vba]
Код
.Cells(LR + 1, 6)=Application.WorksheetFunction.VLookup("Итого*",[реестр!$B$3:$I$99],4,0)
[/vba]

Автор - krosav4ig
Дата добавления - 16.01.2019 в 22:58
krosav4ig Дата: Среда, 16.01.2019, 23:04 | Сообщение № 1745 | Тема: Перенос итоговой суммы по столбцам при формировании отчета
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
parovoznik, дописАл в посте выше, не заметил сразу


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

Автор - krosav4ig
Дата добавления - 16.01.2019 в 23:04
krosav4ig Дата: Среда, 16.01.2019, 23:15 | Сообщение № 1746 | Тема: Копирование файлов из одной папки в другую по условию
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
это были не рекомендации, а цитаты из серии "найди 2 отличия" :)
у вас в коде [vba]
Код
For Each iFile In Folder.Files
[/vba] задана переменная iFile, а внутри цикла почему-то пишете fil (видимо, не заметили при копировании из другого макроса)
вам нужно было просто заменить в вашем макросе 8 строку на ту, что я написал
[vba]
Код
If iFile.Name Like "*+*.xls*" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
[/vba]

[p.s.]Получение списка файлов в папке и подпапках средствами VBA


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

Сообщение отредактировал krosav4ig - Среда, 16.01.2019, 23:18
 
Ответить
Сообщениеэто были не рекомендации, а цитаты из серии "найди 2 отличия" :)
у вас в коде [vba]
Код
For Each iFile In Folder.Files
[/vba] задана переменная iFile, а внутри цикла почему-то пишете fil (видимо, не заметили при копировании из другого макроса)
вам нужно было просто заменить в вашем макросе 8 строку на ту, что я написал
[vba]
Код
If iFile.Name Like "*+*.xls*" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
[/vba]

[p.s.]Получение списка файлов в папке и подпапках средствами VBA

Автор - krosav4ig
Дата добавления - 16.01.2019 в 23:15
krosav4ig Дата: Среда, 16.01.2019, 23:53 | Сообщение № 1747 | Тема: Перенос итоговой суммы по столбцам при формировании отчета
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
parovoznik, ну дык вы ж в одну ячейку эти итоги пишете, а макрос все правильно считает, ровно то что ему написано


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

Автор - krosav4ig
Дата добавления - 16.01.2019 в 23:53
krosav4ig Дата: Пятница, 18.01.2019, 00:08 | Сообщение № 1748 | Тема: Копирование файлов из одной папки в другую по условию
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
Option Explicit
Sub test()
    Dim sInPath$, sOutPath$, oFSO As Object
    
    sInPath = "C:\Users\Мвидео\Desktop\Откуда"
    sOutPath = "C:\Users\Мвидео\Desktop\Куда"
    
    Set oFSO = CreateObject("scripting.filesystemobject")
    
    CopyRecursive oFSO, sInPath, sOutPath, "*.xls*"
        
    Set oFSO = Nothing
End Sub
Private Sub CopyRecursive(ByRef oFSO As Object, sCopyFrom$, sCopyTo$, sMask$)
    Dim oFile As Object, oFolder As Object
    Set oFolder = oFSO.GetFolder(sCopyFrom)
    For Each oFile In oFolder.Files
        If oFile.Name Like "*+*.xls*" Then oFile.Copy sCopyTo & "\" & oFile.Name
    Next
    For Each oFolder In oFolder.SubFolders
        CopyRecursive oFSO, oFolder.Path, sCopyTo, sMask
    Next
    Set oFile = Nothing
    Set oFolder = Nothing
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение[vba]
Код
Option Explicit
Sub test()
    Dim sInPath$, sOutPath$, oFSO As Object
    
    sInPath = "C:\Users\Мвидео\Desktop\Откуда"
    sOutPath = "C:\Users\Мвидео\Desktop\Куда"
    
    Set oFSO = CreateObject("scripting.filesystemobject")
    
    CopyRecursive oFSO, sInPath, sOutPath, "*.xls*"
        
    Set oFSO = Nothing
End Sub
Private Sub CopyRecursive(ByRef oFSO As Object, sCopyFrom$, sCopyTo$, sMask$)
    Dim oFile As Object, oFolder As Object
    Set oFolder = oFSO.GetFolder(sCopyFrom)
    For Each oFile In oFolder.Files
        If oFile.Name Like "*+*.xls*" Then oFile.Copy sCopyTo & "\" & oFile.Name
    Next
    For Each oFolder In oFolder.SubFolders
        CopyRecursive oFSO, oFolder.Path, sCopyTo, sMask
    Next
    Set oFile = Nothing
    Set oFolder = Nothing
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 18.01.2019 в 00:08
krosav4ig Дата: Пятница, 18.01.2019, 01:15 | Сообщение № 1749 | Тема: Как удалить из txt-файла все строки кроме первой?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
    Dim var0 As String: var0 = "C:\........."
    Dim s As String
    With New ADODB.Stream
        .Type = 2: .Mode = 3: .Charset = "utf-8": .LineSeparator = -1:
        .Open: .LoadFromFile var0: s = .ReadText(-2): .Close
        .Open: .WriteText s: .SaveToFile var0, 2: .Close
    End With
[/vba]


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

Сообщение отредактировал krosav4ig - Пятница, 18.01.2019, 01:21
 
Ответить
Сообщение[vba]
Код
    Dim var0 As String: var0 = "C:\........."
    Dim s As String
    With New ADODB.Stream
        .Type = 2: .Mode = 3: .Charset = "utf-8": .LineSeparator = -1:
        .Open: .LoadFromFile var0: s = .ReadText(-2): .Close
        .Open: .WriteText s: .SaveToFile var0, 2: .Close
    End With
[/vba]

Автор - krosav4ig
Дата добавления - 18.01.2019 в 01:15
krosav4ig Дата: Пятница, 18.01.2019, 18:25 | Сообщение № 1750 | Тема: Копирование файлов из одной папки в другую по условию
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
пробуйте так[vba]
Код
Option Explicit
Sub test()
    Dim sInPath$, sOutPath$, oFSO As Object, sUser$, sPass$
    
    sUser = "ИмяПользователя": sPass = "Пароль" 'нужно ввести учетные данные на обменнике
    sInPath = "\\10.**.***.*\папка\подпапка"
    sOutPath = "F:\PQ\Копирование между папками\Куда"
    
    With CreateObject("WScript.Network")
        .MapNetworkDrive "", sInPath, False, sUser, sPass
        
        Set oFSO = CreateObject("scripting.filesystemobject")
        CopyRecursive oFSO, sInPath, sOutPath, "*.xls*"
        Set oFSO = Nothing
        
        .RemoveNetworkDrive sInPath, True, False
    End With
    
End Sub
Private Sub CopyRecursive(ByRef oFSO As Object, sCopyFrom$, sCopyTo$, sMask$)
    Dim oFile As Object, oFolder As Object
    Set oFolder = oFSO.GetFolder(sCopyFrom)
    For Each oFile In oFolder.Files
        If oFile.Name Like "*+*.xls*" Then oFile.Copy sCopyTo & "\" & oFile.Name
    Next
    For Each oFolder In oFolder.SubFolders
        CopyRecursive oFSO, oFolder.Path, sCopyTo, sMask
    Next
    Set oFile = Nothing
    Set oFolder = Nothing
End Sub
[/vba]


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

Сообщение отредактировал krosav4ig - Пятница, 18.01.2019, 18:26
 
Ответить
Сообщениепробуйте так[vba]
Код
Option Explicit
Sub test()
    Dim sInPath$, sOutPath$, oFSO As Object, sUser$, sPass$
    
    sUser = "ИмяПользователя": sPass = "Пароль" 'нужно ввести учетные данные на обменнике
    sInPath = "\\10.**.***.*\папка\подпапка"
    sOutPath = "F:\PQ\Копирование между папками\Куда"
    
    With CreateObject("WScript.Network")
        .MapNetworkDrive "", sInPath, False, sUser, sPass
        
        Set oFSO = CreateObject("scripting.filesystemobject")
        CopyRecursive oFSO, sInPath, sOutPath, "*.xls*"
        Set oFSO = Nothing
        
        .RemoveNetworkDrive sInPath, True, False
    End With
    
End Sub
Private Sub CopyRecursive(ByRef oFSO As Object, sCopyFrom$, sCopyTo$, sMask$)
    Dim oFile As Object, oFolder As Object
    Set oFolder = oFSO.GetFolder(sCopyFrom)
    For Each oFile In oFolder.Files
        If oFile.Name Like "*+*.xls*" Then oFile.Copy sCopyTo & "\" & oFile.Name
    Next
    For Each oFolder In oFolder.SubFolders
        CopyRecursive oFSO, oFolder.Path, sCopyTo, sMask
    Next
    Set oFile = Nothing
    Set oFolder = Nothing
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 18.01.2019 в 18:25
krosav4ig Дата: Суббота, 19.01.2019, 19:02 | Сообщение № 1751 | Тема: Ускорить простановку гиперссылок
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте. И вас с праздником!
пробуйте так [vba]
Код
Public Sub creategyperlinks(ByVal sheetname As String, ByVal colname2 As String, ByVal colname As String, ByVal startrow As Integer, ByVal path As String)
    Dim sMask As Variant, sFile As Variant, c As Range, Addr$      'объявление переменных
    Dim iMaxRowCount1 As Integer
    
    iMaxRowCount1 = getrowCounts(colname2, startrow)
    
     For Each sMask In Array("*.pdf", "*.7z")
        For Each sFile In FilenamesCollection(path, sMask, 5)
            With Sheets(sheetname).Range(colname & startrow & ":" & colname & iMaxRowCount1)
                sName = Mid(sFile, InStrRev(sFile, "\") + 1, Len(sFile))
                Set c = Range.Find(Mid(sName, 1, InStrRev(sName, ".") - 1), , xlValues, xlWhole, , , False, , False)
                If Not c Is Nothing Then
                    Addr = c.Address
                    Do
                        If c.Hyperlinks.Count = 0 Then
                            c.Hyperlinks.Add c, sFile, , , c.Text
                        End If
                        Set r = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> Addr
                End If
            End With
        Next sFile
    Next sMask
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте. И вас с праздником!
пробуйте так [vba]
Код
Public Sub creategyperlinks(ByVal sheetname As String, ByVal colname2 As String, ByVal colname As String, ByVal startrow As Integer, ByVal path As String)
    Dim sMask As Variant, sFile As Variant, c As Range, Addr$      'объявление переменных
    Dim iMaxRowCount1 As Integer
    
    iMaxRowCount1 = getrowCounts(colname2, startrow)
    
     For Each sMask In Array("*.pdf", "*.7z")
        For Each sFile In FilenamesCollection(path, sMask, 5)
            With Sheets(sheetname).Range(colname & startrow & ":" & colname & iMaxRowCount1)
                sName = Mid(sFile, InStrRev(sFile, "\") + 1, Len(sFile))
                Set c = Range.Find(Mid(sName, 1, InStrRev(sName, ".") - 1), , xlValues, xlWhole, , , False, , False)
                If Not c Is Nothing Then
                    Addr = c.Address
                    Do
                        If c.Hyperlinks.Count = 0 Then
                            c.Hyperlinks.Add c, sFile, , , c.Text
                        End If
                        Set r = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> Addr
                End If
            End With
        Next sFile
    Next sMask
End Sub
[/vba]

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

Excel 2007,2010,2013
vikttur, бежать можно и окольными путями, не отрывая каждый, [vba]
Код
adodb.Connection.OpenSchema(adSchemaColumns)
[/vba],например


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеvikttur, бежать можно и окольными путями, не отрывая каждый, [vba]
Код
adodb.Connection.OpenSchema(adSchemaColumns)
[/vba],например

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

Excel 2007,2010,2013
[vba]
Код
Option Explicit
Sub AdjustColmns()
    Dim con As Object, ColFiles As Collection, AL As Object
    Dim wb As Workbook, sh As Worksheet, r As Range
    Dim sFilePath As Variant, sColName As Variant
    Dim sFolderPath$, c$, ver$, i&, calc&, b As Boolean
    
    With Application.FileDialog(4)
        .AllowMultiSelect = False
        .InitialFileName = CreateObject("Shell.Application").Namespace(5).self.Path & "\"
        .Title = "Выберите папку с файлами"
sel:    If .Show = False Then
            If MsgBox("Ничего не выбрано. Повторить?", vbYesNo) = vbYes Then
                GoTo sel
            Else
                Exit Sub
            End If
        End If
        sFolderPath = .SelectedItems(1) & "\"
    End With
    
    Set AL = CreateObject("system.collections.arraylist")
    Set con = CreateObject("adodb.Connection")
    Set ColFiles = FilenamesCollection(sFolderPath, "*.xls*")
    With Application
        For Each sFilePath In ColFiles
            On Error Resume Next
            .Workbooks(Replace(sFilePath, sFolderPath, "")).Save
            On Error GoTo 0
            Select Case Right(sFilePath, 1)
                Case "s": ver = "8.0"
                Case "x": ver = "12.0 xml"
                Case "m": ver = "12.0 macro"
                Case "b": ver = "12.0"
            End Select
            con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
                sFilePath & ";Mode=Read;Extended Properties=""excel " & ver & ";HDR=YES;IMEX=1;"";"
            For Each sColName In con.OpenSchema(4).getrows(, , 3)
                c = Replace(sColName, "$", "")
                If Not AL.contains(c) Then AL.Add c
            Next
            con.Close
        Next
        AL.Sort
        .ScreenUpdating = 0: .EnableEvents = 0: calc = .Calculation: .Calculation = xlCalculationManual
        For Each sFilePath In ColFiles
            On Error Resume Next
            Set wb = .Workbooks(Replace(sFilePath, sFolderPath, ""))
            On Error GoTo 0
            If wb Is Nothing Then
                Set wb = .Workbooks.Open(sFilePath)
            Else
                b = True
            End If
            With wb
                For Each sh In .Sheets
                    i = 1
                    For Each sColName In AL
                        With sh.Rows(1)
                            Set r = .Find(sColName, , , xlWhole, , , False, , False)
                            If r Is Nothing Then
                    .End(xlToRight).Offset(, 1) = sColName
                    Set r = .End(xlToRight)
                            End If
                            If r.Column <> i Then
                    r.EntireColumn.Cut
                    .Columns(i).Insert Shift:=xlToRight
                            End If
                            i = i + 1
                        End With
                Next sColName, sh
                If Not b Then .Close True
            End With
            Set wb = Nothing
        Next
        .ScreenUpdating = 1: .EnableEvents = 1: .Calculation = calc
    End With
    Set AL = Nothing: Set con = Nothing: Set r = Nothing: Set ColFiles = Nothing
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение[vba]
Код
Option Explicit
Sub AdjustColmns()
    Dim con As Object, ColFiles As Collection, AL As Object
    Dim wb As Workbook, sh As Worksheet, r As Range
    Dim sFilePath As Variant, sColName As Variant
    Dim sFolderPath$, c$, ver$, i&, calc&, b As Boolean
    
    With Application.FileDialog(4)
        .AllowMultiSelect = False
        .InitialFileName = CreateObject("Shell.Application").Namespace(5).self.Path & "\"
        .Title = "Выберите папку с файлами"
sel:    If .Show = False Then
            If MsgBox("Ничего не выбрано. Повторить?", vbYesNo) = vbYes Then
                GoTo sel
            Else
                Exit Sub
            End If
        End If
        sFolderPath = .SelectedItems(1) & "\"
    End With
    
    Set AL = CreateObject("system.collections.arraylist")
    Set con = CreateObject("adodb.Connection")
    Set ColFiles = FilenamesCollection(sFolderPath, "*.xls*")
    With Application
        For Each sFilePath In ColFiles
            On Error Resume Next
            .Workbooks(Replace(sFilePath, sFolderPath, "")).Save
            On Error GoTo 0
            Select Case Right(sFilePath, 1)
                Case "s": ver = "8.0"
                Case "x": ver = "12.0 xml"
                Case "m": ver = "12.0 macro"
                Case "b": ver = "12.0"
            End Select
            con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
                sFilePath & ";Mode=Read;Extended Properties=""excel " & ver & ";HDR=YES;IMEX=1;"";"
            For Each sColName In con.OpenSchema(4).getrows(, , 3)
                c = Replace(sColName, "$", "")
                If Not AL.contains(c) Then AL.Add c
            Next
            con.Close
        Next
        AL.Sort
        .ScreenUpdating = 0: .EnableEvents = 0: calc = .Calculation: .Calculation = xlCalculationManual
        For Each sFilePath In ColFiles
            On Error Resume Next
            Set wb = .Workbooks(Replace(sFilePath, sFolderPath, ""))
            On Error GoTo 0
            If wb Is Nothing Then
                Set wb = .Workbooks.Open(sFilePath)
            Else
                b = True
            End If
            With wb
                For Each sh In .Sheets
                    i = 1
                    For Each sColName In AL
                        With sh.Rows(1)
                            Set r = .Find(sColName, , , xlWhole, , , False, , False)
                            If r Is Nothing Then
                    .End(xlToRight).Offset(, 1) = sColName
                    Set r = .End(xlToRight)
                            End If
                            If r.Column <> i Then
                    r.EntireColumn.Cut
                    .Columns(i).Insert Shift:=xlToRight
                            End If
                            i = i + 1
                        End With
                Next sColName, sh
                If Not b Then .Close True
            End With
            Set wb = Nothing
        Next
        .ScreenUpdating = 1: .EnableEvents = 1: .Calculation = calc
    End With
    Set AL = Nothing: Set con = Nothing: Set r = Nothing: Set ColFiles = Nothing
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 20.01.2019 в 23:07
krosav4ig Дата: Понедельник, 21.01.2019, 01:37 | Сообщение № 1754 | Тема: сортировка 2х документов для изменения одного из них
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
как правильно сделать
тут написано


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

Автор - krosav4ig
Дата добавления - 21.01.2019 в 01:37
krosav4ig Дата: Понедельник, 21.01.2019, 17:40 | Сообщение № 1755 | Тема: Копирование файлов из одной папки в другую по условию
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
но для локальных путей макорс из 30 поста будет выдавать ошибку
Не найден сетевой путь

[vba]
Код
Option Explicit
Sub test()
          Dim sInPath$, sOutPath$, oFSO As Object, sUser$, sPass$, sFolder As Variant
10    sUser = "ИмяПользователя": sPass = "Пароль" 'нужно ввести учетные данные на обменнике
20    On Error GoTo ErrHandler
30    With Application.FileDialog(4)
40        .AllowMultiSelect = False
50        .InitialFileName = "\\10.**.***.*\папка\подпапка\"
60        .Title = "Выберите папку с файлами"
70        GoSub sel
80        sInPath = .SelectedItems(1)
90        .InitialFileName = "F:\PQ\Копирование между папками\Куда\"
100       .Title = "Выберите папку назначения"
110 sel:  If .Show = False Then
120           If MsgBox("Ничего не выбрано. Повторить?", vbYesNo) = vbYes Then
130               Resume sel
140           Else
150               Exit Sub
160           End If
170       End If
180       On Error Resume Next
190       Return
200       On Error GoTo ErrHandler
210   End With

220   With CreateObject("WScript.Network")
230       For Each sFolder In Array(sInPath, sOutPath)
240           If Left(sFolder, 2) = "\\" Then .MapNetworkDrive "", sFolder, False, sUser, sPass
250       Next

260       Set oFSO = CreateObject("scripting.filesystemobject")
270       CopyRecursive oFSO, sInPath, sOutPath, "*.xls*"
280       Set oFSO = Nothing

290       For Each sFolder In Array(sInPath, sOutPath)
300           If Left(sFolder, 2) = "\\" Then .RemoveNetworkDrive sFolder, True, False
310       Next
320   End With
330   Exit Sub
ErrHandler:
340   MsgBox "Произошла ошибка " & Err.Number & "(" & Err.Description & _
          ") в модуле " & Application.VBE.ActiveCodePane.codemodule.Name & _
          " в процедуре test() на строке " & Erl
End Sub
Private Sub CopyRecursive(ByRef oFSO As Object, sCopyFrom$, sCopyTo$, sMask$)
          Dim oFile As Object, oFolder As Object
10    On Error GoTo ErrHandler
20    Set oFolder = oFSO.GetFolder(sCopyFrom)
30    For Each oFile In oFolder.Files
40        If oFile.Name Like "*+*.xls*" Then oFile.Copy sCopyTo & "\" & oFile.Name
50    Next
60    For Each oFolder In oFolder.SubFolders
70        CopyRecursive oFSO, oFolder.Path, sCopyTo, sMask
80    Next
90    Set oFile = Nothing
100   Set oFolder = Nothing
110   Exit Sub
ErrHandler:
120   MsgBox "Произошла ошибка " & Err.Number & "(" & Err.Description & _
          ") в модуле " & Application.VBE.ActiveCodePane.codemodule.Name & _
          " в процедуре CopyRecursive() на строке " & Erl
End Sub
[/vba]


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

Сообщение отредактировал krosav4ig - Понедельник, 21.01.2019, 17:43
 
Ответить
Сообщениено для локальных путей макорс из 30 поста будет выдавать ошибку
Не найден сетевой путь

[vba]
Код
Option Explicit
Sub test()
          Dim sInPath$, sOutPath$, oFSO As Object, sUser$, sPass$, sFolder As Variant
10    sUser = "ИмяПользователя": sPass = "Пароль" 'нужно ввести учетные данные на обменнике
20    On Error GoTo ErrHandler
30    With Application.FileDialog(4)
40        .AllowMultiSelect = False
50        .InitialFileName = "\\10.**.***.*\папка\подпапка\"
60        .Title = "Выберите папку с файлами"
70        GoSub sel
80        sInPath = .SelectedItems(1)
90        .InitialFileName = "F:\PQ\Копирование между папками\Куда\"
100       .Title = "Выберите папку назначения"
110 sel:  If .Show = False Then
120           If MsgBox("Ничего не выбрано. Повторить?", vbYesNo) = vbYes Then
130               Resume sel
140           Else
150               Exit Sub
160           End If
170       End If
180       On Error Resume Next
190       Return
200       On Error GoTo ErrHandler
210   End With

220   With CreateObject("WScript.Network")
230       For Each sFolder In Array(sInPath, sOutPath)
240           If Left(sFolder, 2) = "\\" Then .MapNetworkDrive "", sFolder, False, sUser, sPass
250       Next

260       Set oFSO = CreateObject("scripting.filesystemobject")
270       CopyRecursive oFSO, sInPath, sOutPath, "*.xls*"
280       Set oFSO = Nothing

290       For Each sFolder In Array(sInPath, sOutPath)
300           If Left(sFolder, 2) = "\\" Then .RemoveNetworkDrive sFolder, True, False
310       Next
320   End With
330   Exit Sub
ErrHandler:
340   MsgBox "Произошла ошибка " & Err.Number & "(" & Err.Description & _
          ") в модуле " & Application.VBE.ActiveCodePane.codemodule.Name & _
          " в процедуре test() на строке " & Erl
End Sub
Private Sub CopyRecursive(ByRef oFSO As Object, sCopyFrom$, sCopyTo$, sMask$)
          Dim oFile As Object, oFolder As Object
10    On Error GoTo ErrHandler
20    Set oFolder = oFSO.GetFolder(sCopyFrom)
30    For Each oFile In oFolder.Files
40        If oFile.Name Like "*+*.xls*" Then oFile.Copy sCopyTo & "\" & oFile.Name
50    Next
60    For Each oFolder In oFolder.SubFolders
70        CopyRecursive oFSO, oFolder.Path, sCopyTo, sMask
80    Next
90    Set oFile = Nothing
100   Set oFolder = Nothing
110   Exit Sub
ErrHandler:
120   MsgBox "Произошла ошибка " & Err.Number & "(" & Err.Description & _
          ") в модуле " & Application.VBE.ActiveCodePane.codemodule.Name & _
          " в процедуре CopyRecursive() на строке " & Erl
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 21.01.2019 в 17:40
krosav4ig Дата: Понедельник, 21.01.2019, 18:47 | Сообщение № 1756 | Тема: Редактирование ячеек из другого файла xls.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
Если оба файла в одной папке. В коде замените имя файла на свое
[vba]
Код
Sub find_()
    Dim r As Range
    With GetObject(ThisWorkbook.Path & "\3259948.xls")
        Set r = .Sheets("Лист3").Cells.Find([E11], , , xlPart, , , False, , False)
        [F10:F11].ClearContents
        If r Is Nothing Then
            Exit Sub
        Else
            [F10] = r.Address(, , , 1)
            [F11] = r.Value
        End If
        .Close False
    End With
End Sub
Sub rewrite()
    Dim r As Range
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = 0
        With GetObject(ThisWorkbook.Path & "\3259948.xls")
            Set r = .Sheets("Лист3").Cells.Find([E11], , , xlPart, , , False, , False)
            If r Is Nothing Then
                Exit Sub
            Else
                Range([F10]) = [F11]
            End If
            .Windows(1).Visible = True
            .Close True
        End With
        .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1
    End With
End Sub
[/vba]
К сообщению приложен файл: 6688351.xls (47.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
Если оба файла в одной папке. В коде замените имя файла на свое
[vba]
Код
Sub find_()
    Dim r As Range
    With GetObject(ThisWorkbook.Path & "\3259948.xls")
        Set r = .Sheets("Лист3").Cells.Find([E11], , , xlPart, , , False, , False)
        [F10:F11].ClearContents
        If r Is Nothing Then
            Exit Sub
        Else
            [F10] = r.Address(, , , 1)
            [F11] = r.Value
        End If
        .Close False
    End With
End Sub
Sub rewrite()
    Dim r As Range
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = 0
        With GetObject(ThisWorkbook.Path & "\3259948.xls")
            Set r = .Sheets("Лист3").Cells.Find([E11], , , xlPart, , , False, , False)
            If r Is Nothing Then
                Exit Sub
            Else
                Range([F10]) = [F11]
            End If
            .Windows(1).Visible = True
            .Close True
        End With
        .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 21.01.2019 в 18:47
krosav4ig Дата: Понедельник, 21.01.2019, 19:22 | Сообщение № 1757 | Тема: Вращение 3D диаграм
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
может [vba]
Код
sh1.Chart.ChartArea.Format.ThreeD.RotationX = (360 + sb_Hor) Mod 360
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеможет [vba]
Код
sh1.Chart.ChartArea.Format.ThreeD.RotationX = (360 + sb_Hor) Mod 360
[/vba]

Автор - krosav4ig
Дата добавления - 21.01.2019 в 19:22
krosav4ig Дата: Вторник, 22.01.2019, 02:13 | Сообщение № 1758 | Тема: Напоминание о приближении даты
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте [vba]
Код
Option Explicit
Sub Auto_open()
    Dim wb As Workbook, bClosed As Boolean, ar As Range, c As Range, dtRazn%, s$, msg$
    On Error Resume Next
    Set wb = Workbooks("Карточка учета.xlsm")
    On Error GoTo 0
    If wb Is Nothing Then
        Application.ScreenUpdating = False
        Set wb = Workbooks.Open("C:\Учет страховых полисов\Карточка учета.xlsm")
        wb.Windows(1).Visible = 0
        Application.ScreenUpdating = True
        bClosed = True
    End If
    
    For Each ar In ['[Карточка учета.xlsm]ОСАГО'!D:D].SpecialCells(2, 1).Areas
        For Each c In ar.Cells
            dtRazn = c - Date
            s = ""
            Select Case dtRazn
                Case Is < 0: s = "На " & Abs(dtRazn) & "дн. просрочен "
                Case 0: s = "Сегодня заканчивается "
                Case Is <= 5: s = "Через " & dtRazn & " дн. заканчивается "
            End Select
            If s <> "" Then msg = msg & IIf(msg <> "", vbCrLf, "") & s & _
                "страховой полис ОСАГО на автомобиль " & c.Offset(, -2) & _
                " регистрационный номер " & c.Offset(, -3)
        Next
    Next
    If msg <> "" Then MsgBox msg: Debug.Print msg
    If bClosed Then wb.Close False
End Sub
[/vba]
К сообщению приложен файл: 1331619.xlsm (16.7 Kb)


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

Сообщение отредактировал krosav4ig - Вторник, 22.01.2019, 23:29
 
Ответить
СообщениеЗдравствуйте [vba]
Код
Option Explicit
Sub Auto_open()
    Dim wb As Workbook, bClosed As Boolean, ar As Range, c As Range, dtRazn%, s$, msg$
    On Error Resume Next
    Set wb = Workbooks("Карточка учета.xlsm")
    On Error GoTo 0
    If wb Is Nothing Then
        Application.ScreenUpdating = False
        Set wb = Workbooks.Open("C:\Учет страховых полисов\Карточка учета.xlsm")
        wb.Windows(1).Visible = 0
        Application.ScreenUpdating = True
        bClosed = True
    End If
    
    For Each ar In ['[Карточка учета.xlsm]ОСАГО'!D:D].SpecialCells(2, 1).Areas
        For Each c In ar.Cells
            dtRazn = c - Date
            s = ""
            Select Case dtRazn
                Case Is < 0: s = "На " & Abs(dtRazn) & "дн. просрочен "
                Case 0: s = "Сегодня заканчивается "
                Case Is <= 5: s = "Через " & dtRazn & " дн. заканчивается "
            End Select
            If s <> "" Then msg = msg & IIf(msg <> "", vbCrLf, "") & s & _
                "страховой полис ОСАГО на автомобиль " & c.Offset(, -2) & _
                " регистрационный номер " & c.Offset(, -3)
        Next
    Next
    If msg <> "" Then MsgBox msg: Debug.Print msg
    If bClosed Then wb.Close False
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 22.01.2019 в 02:13
krosav4ig Дата: Вторник, 22.01.2019, 08:14 | Сообщение № 1759 | Тема: Группировка отчета по двум столбцам формулой
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте. Сводная подойдет?
К сообщению приложен файл: 8686992-1-.xlsx (14.0 Kb)


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

Автор - krosav4ig
Дата добавления - 22.01.2019 в 08:14
krosav4ig Дата: Вторник, 22.01.2019, 08:32 | Сообщение № 1760 | Тема: Напоминание о приближении даты
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
VitLO, забыл кавычки, исправил в своем посте, должно быть так [vba]
Код
For Each ar In ['[Карточка учета.xlsm]ОСАГО'!D:D].SpecialCells(2, 1).Areas
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеVitLO, забыл кавычки, исправил в своем посте, должно быть так [vba]
Код
For Each ar In ['[Карточка учета.xlsm]ОСАГО'!D:D].SpecialCells(2, 1).Areas
[/vba]

Автор - krosav4ig
Дата добавления - 22.01.2019 в 08:32
Поиск:

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