Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 299 След.
Оборотно-сальдовая ведомость. Обработка VBA
 
Цитата
Андрей VG написал:
проще выявлять строки контрагентов по уровню отступа в строке
+100. Полностью согласен.
А итоги можно еще отсекать и по жирному шрифту. Судя по скринам - он только в итоговой строке.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Отправка письма с картинкой VBA (outlook)
 
Цитата
Lisper написал:
в #1 сообщении и указал, и в сообщении #3 указал после кода как выглядит вызов картинки
почему не видно внутри кода, где Вы там картинку добавляете? Вы сами видите внутри тегов хоть намек на это? Да, есть некая непонятная функция IMG, которая даже не возвращает значения, а значит даже вызов её внутри другой процедуры ничего не изменит. Неужели даже автору сообщений надо разжевывать что он там накалякал?
Что в первом сообщении, что в третьем, что дальше - нет нигде вменяемого кода по вставке картинки в само сообщение. В первом - везде, где можно что-то похожее найти содержит зачем-то внутри src полный путь к файлу(sFolder), в то время как его и не должно быть.
В другом сообщении каким-то отдельным блоком написано "width=width height=height>". Что это и как понимать? Зачем в качестве width присваивается текст width? Это что нам должно сказать? Почему там не ширина картинки в виде числа?

Вы можете приложить нормальный код, который у Вас получился и сказать: я вот так пытаюсь, но ничего не выходит почему-то? Тогда будет о чем говорить. А сейчас разговор ни о чем. Я свой код попробовал - картинка есть и она успешно приходит на почту Яндекса и Мэйл.ру.

И еще у меня вопрос: Вы используете раннее связывание с Outlook? Если да - то зачем CreateObject? Если нет - то почему olByValue, а не числовая константа? Хотя там все равно должно быть 0, но если Вы по всему коду таких констант напихали - то ошибки неизбежны. Option Explicit явно не используете.
Изменено: Дмитрий Щербаков - 23 Май 2018 12:43:16
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Отправка письма с картинкой VBA (outlook)
 
Ни в одном из приведенных кодов не видно, чтобы Вы вообще вставляли в сообщение картинку. Как вложение - да. А как часть сообщения - не видать. Вот есть кусок:
Код
    .To = Cells(1, 2).Value
        .Subject = Cells(2, 2).Value
        TempFilePath = "D:\Mailing\"
        .Attachments.Add TempFilePath & Cells(5, 2).Value, olByValue, 0
        .Attachments.Add TempFilePath & Cells(6, 2).Value, olByValue, 0
        .Attachments.Add TempFilePath & Cells(7, 2).Value, olByValue, 0
        .Attachments.Add TempFilePath & Cells(8, 2).Value, olByValue, 0
        .HTMLBody = Cells(3, 2).Value
        Cells(45, 4).Value = Cells(3, 2).Value
        'Set .SendUsingAccount = .Session.Accounts.Item(Cells(1, 3).Value)
         
        .Send
        '.Display
    End With
где тут картинка добавлена в текст сообщения? И я не вижу. Теоретически, должно быть как-то так(но что там у Вас в Cells(3, 2).Value только Вам известно, поэтому просто добавил):
Код
Dim sAttachInline as String
sAttachInline = "<img src='cid:" & Cells(5, 2).Value & "'" & " ><br>"
    .To = Cells(1, 2).Value
        .Subject = Cells(2, 2).Value
        TempFilePath = "D:\Mailing\"
        .Attachments.Add TempFilePath & Cells(5, 2).Value, olByValue, 0
        .Attachments.Add TempFilePath & Cells(6, 2).Value, olByValue, 0
        .Attachments.Add TempFilePath & Cells(7, 2).Value, olByValue, 0
        .Attachments.Add TempFilePath & Cells(8, 2).Value, olByValue, 0
        .HTMLBody = Cells(3, 2).Value & sAttachInline
        Cells(45, 4).Value = Cells(3, 2).Value
        'Set .SendUsingAccount = .Session.Accounts.Item(Cells(1, 3).Value)
        .Send
        '.Display
    End With
Cells(5, 2).Value должна содержать имя файла с расширением.
Изменено: Дмитрий Щербаков - 23 Май 2018 09:40:55
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
PQ: Как раскрыть содержимое списка List в отдельную ячейку?
 
Ищите Text.Combine. Вкладка "Добавить столбец" -Настраиваемый столбец. Вроде такой формула:
Код
=Text.Combine([1],",")
Только название темы у Вас вообще ни о чем. О каком List? У Вас вопрос: как объединить все элементы List в одну строку в PowerQuery.
Изменено: Дмитрий Щербаков - 22 Май 2018 12:27:22
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Чем раннее связывание - отличается от позднего
 
Цитата
AAF написал:
то вряд ли Вас за скорость поблагодарят Userы
ну это да. Но в противном случае, если код не будет работать вообще из-за ошибки раннего связывания с несуществующей библиотекой - то они тоже вряд ли рассыплются в комплиментах :)
Я считаю, что работающий медленно код лучше, чем вообще не работающий :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Чем раннее связывание - отличается от позднего
 
Цитата
БМВ написал:
В поощрении лентяев
не только. Если пишем код, в котором обращение идет к тому же Outlook, то при раннем связывании мы обязаны поставить галку в Tools -References. При этом связывание будет именно с нашей версией Outlook. У меня это будет Outlook.Application.16. И если я вышлю свой код кому-то, у кого хотя бы 2013 офис или еще меньше - то код еще при запуске выдаст ошибку компиляции, т.к. не найдет библиотеку Outlook16.
При позднем же связывании мы указываем только имя класса объекта("Outlook.Application") без указания версии и VBA постарается найти любую сборку. Т.е. будет работать и в 2013 и в 2016. Тут останется только писать код так, чтобы использовать только те свойства и методы, которые есть в обеих версиях.
Изменено: Дмитрий Щербаков - 21 Май 2018 13:03:40 (опечатка)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Самоудаление книги
 
Цитата
Novichok55 написал:
при закрытии и книгу удаляет и полностью закрывает окно Экселя
да ничего он не закрывает. Он так же просто закрывает книгу и все. Если в этот момент открыта еще хоть одна книга - Excel останется открытым. Вы бы хоть чуть-чуть начали уже синтаксис изучать не методом тыка, а через чтение литературы.
Чтобы Excel закрывался, надо добавить в конце такую строку:
Код
If Application.workbooks.count <1 then Application.quit
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Самоудаление книги
 
Мало чего понял, но видимо, перед сохранением той копии на удаление, надо в файле какую-то метку ставить(либо в свойствах документа, либо в именованном диапазоне, либо в ячейках). И перед закрытием книги проверять, есть ли эта метка. Если есть - книгу удаляем. Если нет метки - не удаляем.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Самоудаление книги
 
Цитата
Novichok55 написал:
Но именно как код в "Эта книга" выполняться при закрытии экселя не хочет самостоятельно
А как Вы его туда прописали? Как есть, наверное? А надо через событийную процедуру Before_Close. Приведите полностью код из ЭтаКнига, как он выглядит у Вас - тогда сразу и причину выявим.  
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Получение данных из других книг
 
Цитата
Maratej написал:
с False, все в порядке, но обновление происходит не полностью
я вот не пойму: Вам надо чтобы обновлялись или чтобы нет? Если нет - о каком неполном обновлении речь? Или Ваше цель запутать помогающих?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Получение данных из других книг
 
Цитата
Maratej написал:
Вариант с UpdateLinks:=False не подходит,
так ставьте True - тогда обновлять будет. почитайте про все параметры метода Open - там есть и про обновление ссылок для конкретно открываемой книги.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как запретить дальнейшие выполнение кода макроса, пока полностью не выполнится команда "Обновить все запросы (PQ)" ?
 
Цитата
Jack Famous написал:
я просто повесил на событие активации этого листа с выгруженным запросом возврат на нужный мне лист
ну это для одной конкретно взятой ситуации. Глобально это не решение. Особенно, если действия внутри надстройки производятся.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как вывести на экран значение последней заполненной ячейки диапазона?
 
Цитата
БМВ написал:
ну не Lookup же листа использовать!
вот как ни странно - но таки-да, можно его. Хотя в спорных ситуациях можно и комбинировать(если использовать функции листа не хочется):
сначала UsedRange - для определения глобально последней ячейки
далее End или Find(зависит от того, есть ли конкретный столбец для определения) - для определения последней видимой ячейки.
А потом, если значения не равны, то загоняю в массив данные от последней видимой до последней и цикл снизу вверх до первой заполненной.
Изменено: Дмитрий Щербаков - 14 Май 2018 13:48:27
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как вывести на экран значение последней заполненной ячейки диапазона?
 
Цитата
Ігор Гончаренко написал:
не найдет последнюю заполненную ячейку в колонке Д
и не учитывает скрытые строки и столбцы
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как запретить дальнейшие выполнение кода макроса, пока полностью не выполнится команда "Обновить все запросы (PQ)" ?
 
Цитата
Jack Famous написал:
С OnTime не знаком
А с поиском по форуму?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Постоянное правило автофильтра при редактировании запроса PQ
 
Цитата
Framed написал:
Это где такая функция?
Раскрываете фильтр -Текстовые фильтры
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как запретить дальнейшие выполнение кода макроса, пока полностью не выполнится команда "Обновить все запросы (PQ)" ?
 
Цитата
Jack Famous написал:
Отменить ЭТО никак не получается
видимо, и не получится. Т.к. это зашито в самом PQ. Можно лишь перед обновлением запросов запоминать активный лист и активировать его после обновления. При этом я бы делал это отдельной процедурой по OnTime.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Постоянное правило автофильтра при редактировании запроса PQ
 
Цитата
Framed написал:
при добавлении данных в строки, например, любого текста, он попадал во вторую таблицу
не очень понять где у Вас фильтр, что в итоге выводится не так. Приложите файл и распишите чуть подробнее проблему. Потому что когда я фильтровал в PQ данные - у меня даже при добавлении данных все отсекалось на шаге фильтрации корректно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как интегрировать книгу + ее запросы и макросы в другую книгу?
 
falmrom, а Вы эту тему так же похороните и не удостоите ответом, как и другую свою проблему? - Как запретить дальнейшие выполнение кода макроса, пока полностью не выполнится команда "Обновить все запросы (PQ)" ?
Я к чему: может нет смысла и отвечать здесь, раз Вы интерес к своим проблемам так быстро теряете? :) А вообще намек на то, что если предлагают решение - надо отписаться в теме.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Не открываются шаблоны из XLSTART
 
Цитата
dima1976 написал:
Только вот перестало получаться
Проверьте, точно ли создается PERSONAL. После записи макроса перейдите на вкладку Вид -Отобразить. После нажатия должно появится окно с перечнем всех скрытых книг(кроме надстроек). Если кнопка неактивна - значит PERSONAL не создался.
Если создался, то закройте Excel и запустите заново. Опять проверьте через вкладку Вид -Отобразить, что PERSONAL запустился. Если нет - снова запишите макрос, но теперь перейдите в редактор VBA(Alt+F11) и найдите среди проектов PERSONAL. Зайдите в любой модуль PERSONAL и сохраните проект(File -Save PERSONAL.XLSB). Закройте Excel и откройте заново. Если PERSONAL запустится - дело в том, что по какой-то причине он у Вас не сохраняется после внесения изменений(возможно, Вы сами игнорируете сообщение о сохранении при закрытии Excel). Если не запустится - надо искать причину, по которой эта книга не запускается: проверять папки автозапуска, их доступность и т.п.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Формы. Как заполнять одну и ту же форму (ListBox) разными данными в зависимости от выделения
 
Цитата
AAF написал:
Без переноса было лучше
ну тут уж каждому на свой вкус. Зависит еще и от кол-ва таких массивов. В данном конкретном случае мне без переноса тоже больше нравится, но иногда делаю так именно для наглядности(когда код большой, то ориентироваться по нему чуть удобнее).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Формы. Как заполнять одну и ту же форму (ListBox) разными данными в зависимости от выделения
 
Сократим?
Код
Sub ReDimPreserveБезПредварительногоReDim()
Dim a(), b(), c()
ReDim Preserve a(1 To 20), b(10 To 20, -10 To 3), c(20, -10 To 3, -5 To -3)
End Sub
или чуть более наглядно:
Код
Sub ReDimPreserveБезПредварительногоReDim()
Dim a(), b(), c()
ReDim Preserve a(1 To 20), _
               b(10 To 20, -10 To 3), _
               c(20, -10 To 3, -5 To -3)
End Sub
Изменено: Дмитрий Щербаков - 12 Май 2018 10:43:33
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Формы. Как заполнять одну и ту же форму (ListBox) разными данными в зависимости от выделения
 
Цитата
Jack Famous написал:
Хочу также попробовать сделать, применяя  вот этот  способ (через Like) - до сих пор восхищаюсь его скоростью
Like сам по себе медленный. А если еще и надо не учитывать служебные символы звезды и вопр.знака - то как пить дать надо заменить на InStr. В примере приводится такая строка:
Код
If "%" & Join(массив, "%") & "%" Like "*%" & ИскомаяПодстрока & "%*" Then

вот она как раз просто обязана быть заменена на такую:
Код
If InStr(1, "%" & Join(массив, "%") & "%", "%" & ИскомаяПодстрока & "%", 1) <> 0 Then
и это будет к тому же быстрее. И регистр не учитывается(хотя, если поиграться последним параметром, то можно и регистрозависимую проверку сделать)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Вызов макроса по событию (при изменении ячейки), Не работает вызов макроса по событию
 
Цитата
Lucifer написал:
буду пробовать
Попробуйте, создав код в ЭтаКнига, переименовать модуль ЭтаКнига в ThisWorkbook(через свойства объекта Name в окне Properties). Скорее всего проблемы с неверным пониманием кодировки в имени модуля.
Ну и CreateObject обязательно убрать - MAC его не поймет. Можно заменить на Application.UserName, но это свойство далеко не всегда отображает того же пользователя, под которым вход был. Да и изменяется из самих настроек Excel без проблем.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Не работает событие, Не работает событие и вылезает ошибка
 
Еще кросс: Не работает событие и вылезает ошибка
с решением проблемы
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как запретить дальнейшие выполнение кода макроса, пока полностью не выполнится команда "Обновить все запросы (PQ)" ?
 
Цитата
Jack Famous написал:
ссыль[/URL] нашёл
чё-то не то. Ссылки нет. В итоге вообще неясно о чем речь.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Удаление строки с текстом, содержащих одно из слов из списка.
 
Цитата
Karniel написал:
изза того что В оригинальной таблице
Цитата
Дмитрий Щербаков написал:
Без Вашего примера данных никто Вам не исправит ко
В общем при таком подходе интерес к теме потерян. Я приложил файл с кодом. Там все работает? Удаляет? Если да - угадайте с трех раз, почему и зачем просят файлы примеры именно в той структуре, которая является реальной. Если не хотите прикладывать файл с реальной структурой - то желания сидеть и угадывать какая она у Вас и пытаться под неё коды изменить желания ни у кого не будет.
Предположу, что Вам куда выгоднее будет взять мой код(который в первом сообщении привел автор темы): Как удалить строки по условию?
Он в самом конце статьи и там можно указать номер столбца, в котором искать значения для удаления.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Сообщение о циклической ссылке
 
Цитата
natalia875 написал:
Все формулы считаются правильно
Если получаете сообщение о циклических ссылках - это утверждение сомнительно.
Они могут работать правильно только если осознанно в параметрах были включены итеративные вычисления(Файл -Параметры -Формулы -Включить итеративные вычисления). Но как правило очень редки случаи, когда эти вычисления нужны. При включенной галочке сообщение о циклических ссылках не будет появляться. Но если формулы составлены неверно и не учитывают итерации - то тогда они опять же могут выдавать некорректный результат.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Удаление строки с текстом, содержащих одно из слов из списка.
 
А какой результат ожидаете? Вы понимаете, что в данном случае, будут удалены все СТРОКИ, в которых будут найдены "Минусслова"?
И в общем - код работает. Я его поместил в модуль "Лист1", запустил - он все удалил как положено. Правда, добавил чутка оптимизации для скорости(самую малость):
Код
Sub jjj()
Dim Rng As Range, i&, j&, arr, cnt&, ars As Range, rngDel As Range
    Set Rng = Me.Range("A1").CurrentRegion
    arr = ActiveWorkbook.Worksheets("Ëèñò2").Range("A1").CurrentRegion.Value
    Application.ScreenUpdating = 0
    For i = 1 To UBound(arr, 1)
        For j = 1 To UBound(arr, 2)
            Rng.AutoFilter Field:=1, Criteria1:= _
                "=*" & arr(i, j) & "*", Operator:=xlAnd
            cnt = 0
            Set rngDel = Nothing
            For Each ars In Rng.SpecialCells(xlCellTypeVisible).Areas
                cnt = cnt + 1
                If cnt = 2 Then
                    Set rngDel = ars
                ElseIf cnt > 2 Then
                    Set rngDel = Application.Union(rngDel, ars)
                End If
            Next ars
            If cnt > 1 Then rngDel.EntireRow.Delete
            Rng.AutoFilter Field:=1
        Next j
    Next i
    Application.ScreenUpdating = 1
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Удаление строки с текстом, содержащих одно из слов из списка.
 
Цитата
Karniel написал:
чтоб искало слова на всем лист1 а не только в строке А1
Код так и делает. Вопрос в том, что код писался явно под другой пример данных. И сейчас он просто берет всю таблицу, которая начинается с А1 и не прерывается до конца. Т.е. таблица с началом в А1 без пропусков в виде пустых строк и столбцов.
Цитата
Karniel написал:
берет слово только из ячейки А1
тоже самое, что и для первого вопроса.
Без Вашего примера данных никто Вам не исправит код.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 299 След.