Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
VBA - копирование и вставка видимых столбцов и строк
 
Всем привет.
Подскажите пожалуйста.
Код
objXls5.Sheets("Реестр").Range("A6:BE" & llastr).SpecialCells(12).Copy
objXls6.Sheets("Форма").Paste objXls6.Sheets("Форма").Range("B5")
Копирую только видимые ячейки и вставляю.
В указанном диапазоне есть скрытые строки и столбцы.
Но при вставке скрытые строки не вставляются, а вот скрытые столбцы вставляются.
Как этого избежать?
VBA - сравнение двух столбцов на уникальность ячеек
 
Доброго дня, прошу дать совет.
Есть эксель файлы с большими количествами информации.
В каждом из них есть столбец с уникальным номером позиции.
В одном сводном экселе под 100 тысяч строк, в других количество строк тоже исчисляется тысячами и таких экслей 12 штук .
Задача состоит в том, чтобы проверять по 12 экселям добавление новых уникальных номеров и добавлять в сводный эксель.
На текущий момент нашел выход только прогонять циклом каждую уникальную позицию из 12 экселей методом .Find в сводном экселе и если данной позиции в сводном нет, то добавить ее.
Это прям достаточно долгий процесс, хоть и рабочий. Может кто подскажет, как можно реализовать это быстрее?
VBA. Обойти ограничение на длину пути к файлу в 255 символов
 
Всем привет.
Прошу подсказать.
Формирую реестр информации в эксель на основе файлов на сетевом ресурсе.
Вроде бы всё не плохо - перебирает макрос папки, находит нужные файлы и добавляет информацию о них в реестр, кроме момента, что до файлов, которые имеют адрес длиной выше 255 символов, как случайно заметил, добраться не могу, то есть информации нет в реестре. Потом уже понял в чём дело.
Архив на сетевом ресурсе, перемещать, переименовывать ни папки, ни файлы не могу.
Как можно решить проблемку?
Код:
Код
Sub Реестр()
    SourceFolder = "\\lan\Архив\"
    Set fso = CreateObject("scripting.filesystemobject")
    Set curfold = fso.GetFolder(SourceFolder)
    
    If Not curfold Is Nothing Then
        For Each sfol_1 In curfold.SubFolders
            If sfol_1.Name Like "*Линия*" Then
                For Each sfol_2 In sfol_1.SubFolders
                    If sfol_2.Name Like "L*" Then
                        For Each sfol_3 In sfol_2.SubFolders
                             If sfol_3.Name Like "*-D-*" Then
                                 For Each sfol_4 In sfol_3.SubFolders
                                     If sfol_4.Name Like "*утвержден*" Then
                                         For Each fil In sfol_4.Files
                                            If fil.Name Like "*-D-*" Then
                                                
                                                'добавление информации в реестр на основе найденного файла
                                                
                                             End If
                                         Next
                                     End If
                                 Next
                             End If
                        Next
                    End If
                Next
            End If
        Next
    End If
    Set fil = Nothing: Set curfold = Nothing: Set fso = Nothing

End Sub
Изменено: Sanja - 03.12.2024 16:01:19 (Исправил название Темы. Учтите на будущее)
[ Закрыто] Условное форматирование
 
Всем привет.
Подскажите пожалуйста.
Делаю условное форматирование по формуле, к одной строке хорошо применяется (на скриншоте).
А если мне так к ста строкам нужно сделать, мне не сто правил ведь нужно создавать?
Можно ли как-то сделать проверку построчно одним правилом?
Вставка из буфера обмена
 
Всем привет.
Подскажите пожалуйста.
Я копирую значения с одного экселя следующим образом:
Код
objXls5.Sheets("Реестр").Range("W6:X" & llastr).SpecialCells(12).Copy
и вставляю в другой эксель следующим образом:
Код
objXls6.Sheets("Форма").Paste objXls6.Sheets("Форма").Range("H" & llastr2)
В общем смысле это работает, но так как у меня копируемые диапазоны находятся в разных местах Реестра, приходится последовательно их частями копировать и вставлять в Форму.
Раньше всё работало отлично, большой объем отрабатывал нормально, но не давно на рабочем ПК переустановили винду с 10ки на 11ю, офис остался также 2019, но начались проблемы. Иногда макрос может отработать хорошо полностью, а иногда выдает ошибку на методе вставки - Run-time error '1004': Метод Paste  из класса Worksheet завершен неверно.
А так как их много в коде, оно происходит не в одном и том же месте, а рандомно в разные случае запуска макроса.
Раньше когда на 10ке всё было хорошо, на всякий случай чтобы успел отрабатывать буфер обмена использовал своеобразный sleep:
Код
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)

Sleep (400)
Так как иногда выдавал ошибки эксель, что у него не получалось как-то вставить информацию из буфера обмена.
Сейчас поставил слип на 1000, в надежде что в этом дело, но всё тщетно.
Как думаете, что может быть и как решить проблему?
Номера строк после фильтра
 
Всем привет.
Подскажите пожалуйста.
Я определяю номер последней не пустой строки в excel следующим образом:
Код
llastr = objXls.Sheets("Реестр").Cells(objXls.Sheets("Реестр").Rows.Count, 1).End(-4162).Row
Мне необходимо поставить фильтр и пробежаться по всем найденным строкам.
llastr равен, к примеру, 585, а перед ним после фильтра строка, к примеру, 535.
Как можно определить номера строк только найденных после фильтра, чтобы в цикле по ним пройтись и по взаимодействовать.
Изменено: aie_project - 24.05.2024 12:15:45
VBA применить представление в excel
 
Всем привет.
Подскажите пожалуйста, возможно ли средствами VBA применить имеющиеся представление в excel?
Работа с Excel из Outlook
 
Всем привет.
Подскажите пожалуйста.
Основные функции выполняю в Outlook, могу создать объект excel, открыть документ и взаимодействовать с ним.
Код
    Dim objXls As Object
    Set objXls = CreateObject("Excel.Application")
 
    objXls.Workbooks.Open "D:\ForMacros\123.xlsx"
    objXls.Application.Visible = True
 
    objXls.Sheets("Лист").Cells(10, 10).Value = "123"
 
    objXls.ActiveWorkbook.Save
    objXls.Workbooks.Close
    Set objXls = Nothing
А возможно определить открыт ли уже какой-нибудь excel и работать с ним?
Поиск писем
 
Доброго дня.
Прошу помочь.
Собрал макрос:
Код
Sub поиск_писем()

    Dim objFolder As Outlook.MAPIFolder
    Dim filteredItems As Outlook.Items
    Dim itm As Object
    Dim strFilter As String
    
    адрес_новой_папки = "D:\Users\aie\Desktop\123\"
    запрос = "0198"
    
    Set objFolder = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) 'olFolderInbox папка Входящие

    strFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%" & запрос & "%'"
    
    Set filteredItems = objFolder.Items.Restrict(strFilter)
    
    If filteredItems.Count = 0 Then
        MsgBox "Поиск писем результатов не дал"
    Else
        filteredItems(filteredItems.Count).SaveAs адрес_новой_папки & запрос & ".msg"
    End If

End Sub
Осуществляет поиск письма.
Для выбора папки писем нашел инфу - https://learn.microsoft.com/ru-ru/office/vba/api/outlook.oldefaultfolders
Но не задача. У меня в Outlook три учетные записи, а поиск осуществляется в папке Входящие только в одной из трех.
Подскажите пожалуйста, как реализовать поиск по всему Outlook, желательно не только в папке входящие.
Был бы очень признателен.
Изменено: aie_project - 19.02.2024 11:34:52
Ответить всем с вложениями
 
Доброго дня.
Использую следующий макрос:
Код
Sub Ответить_всем_с_вложениями()
    от_кого = Application.ActiveExplorer.Selection(1).Sender
    кому = Application.ActiveExplorer.Selection(1).To
    копия = Application.ActiveExplorer.Selection(1).CC
    от_кого_кому = от_кого + "; " + кому + ";"
    от_кого_кому = Replace(от_кого_кому, "Иванов Иван Иванович", "", 1, 1)
    Dim Item As MailItem
    Set Item = Application.ActiveExplorer.Selection(1).Forward
    Item.To = от_кого_кому
    Item.CC = копия + ";"
    Item.Display
End Sub
Не закидывайте пожалуйста камнями, что про Outlook вопрос :)
Работает нормально, за исключением некоторых случаев.
Когда нет контактов в адресной книги, прописывает ФИО человека.
Подскажите пожалуйста, как получить в переменные от_кого, кому и копия именно адреса электронных почт.
Изменено: aie_project - 14.02.2024 15:37:10
Фильтрация по гиперссылке
 
Доброго дня.
Пользовался форумом без регистрации, всегда находил ответ.
Но сейчас не знаю, как называется то, что мне нужно  :D
Встречал файлы эксель, в которых была большая таблица на одном листе, и сборная статистика на другом листе.
Набросал на картинке шаблон ситуации.
Слева ТИПА большая таблица :D  по середине сборная статистика количества по видам, а вот справа это результат того, когда нажали, к примеру, на желтую ячейку (там была гиперссылка на цифре 2) и формировался лист новый с выводом только строк по яблокам.
Подскажите пожалуйста, как называется такой метод, чтоб понимать как гуглить, ну и если идеи накидаете, тоже буду благодарен.
Страницы: 1
Наверх