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

Страницы: 1 2 След.
Из Word в Outlook (VBA), Копирование с сохранением форматирования.
 
Необходимо скопировать текст из Ворда в Outlook, сохраняя форматирование
Нагугли нечто вроде:
Код
Sub CopyBodyFromWord()

    Dim oOutApp As Object
    Dim oMailItem As Object
    Dim oWordApp As Object
    Dim oWordDoc As Object
    Dim oMailWordDoc As Object
    
    On Error GoTo CleanUp
    
    Set oWordApp = CreateObject("Word.Application")
    oWordApp.Visible = True

    Set oWordDoc = oWordApp.Documents.Open("C:\template.docx", False, True)
    
    oWordDoc.Content.Copy
    
    Set oOutApp = CreateObject("Outlook.Application")
    Set oMailItem = oOutApp.CreateItem(0)
    
    With oMailItem
        .To = "xxx@yyy.com"
        .Subject = "This email contains Word-formatted text"
        .Body = "obrashenie"
        .Display
    End With
    
    Set oMailWordDoc = oOutApp.ActiveInspector.WordEditor
    
    oMailItem.Application.Selection.Paste
     
CleanUp:
    oWordApp.Quit
    Set oMailWordDoc = Nothing
    Set oMailItem = Nothing
    Set oOutApp = Nothing
    Set oWordDoc = Nothing
    Set oWordApp = Nothing

End Sub

Но валится на шаге:
Set oMailWordDoc = oOutApp.ActiveInspector.WordEditor
Может у кого есть советы или наработки как скопировать текст из ворда в outlook?

Спасибо

Обход ориентированного графа (с циклами).
 
Есть механизм обхода графа с циклами, с условием, что прохождение циклов не более 1 раза.
Прописано это в этой строке
Код
    For i = 1 To N_NODES
         If visited(i) <= 1 And edges(node, i) = 1 Then
            VisitForTreeAndCirclesStructure i, visited, edges, Noda, stack
        End If
    Next
В файле 2 листа (для каждого из них сделал свой модуль для удобства запуска, модули идентичные).
При обработке Sheet2 я получаю следующие цепочки:
1->2->3->4->3->4->5
1->2->3->4->3->4->5->6
Т.е. точка 3 посещается большее число раз чем положено.
На листе Sheet1 такой проблемы нет.

Добавлю, что результат выводится в Immediate окно.
Может быть кто подскажет, что необходимо добавить, чтобы цепочки с форматом 3-4-3-4 не попадали в результат.
Файл прилагаю.
Спасибо.
Все возможные варианты набора цифр (комбинаторика).
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
бесконечный список вариантов будет, ибо не указан предел по кол-ву повторений каждой цифры в итоговом значении.
"встречающихся от 0 до 2 раз"
Вот это разве не оно? Или я что-то забыл и не учел?
Все возможные варианты набора цифр (комбинаторика).
 
Добрый день.
Есть набор цифр(допустим 1,2,3).
Нужно получить все варианты строк состоящих из этих цифр, встречающихся от 0 до 2 раз, например:
1
2
3
11
22
33
1233
12233
1223
112233
и тд.
Не пойму как подступиться к этой задаче.
Необходимо реализовать это на VBA
Может подскажете в какую сторону копать.
Спасибо.
Изменено: crjk - 27.10.2021 18:03:55
Быстродейственный аналог Sumifs в VBA.
 
Я пока поперевариваю полученную информацию, может правда попробую оставить через сводную.
Спасибо за помощь!
Быстродейственный аналог Sumifs в VBA.
 
Выше привел пример со складом, правильно ли я понимаю, что если мне надо собрать информацию по складу 1, то я могу это сделать только через фильтр сводной таблицы и для склада 2+3 мне надо будет изменить фильтр (а соответственно и таблица изменится, и слетят мои Sumifs По складу 1). Или возможно как-то построить таблицу, чтобы обойтись без фильтра?
Быстродейственный аналог Sumifs в VBA.
 
Да, через сводную это сейчас и сделано, но есть некоторые нюансы, по которым есть желание от нее отказаться, поэтому и пытаюсь найти другое решение.
Например, если добавить аналитику Склад в таблицу 2 и в таблицу 1 тянуть значения только по складу 1 и 3? В такой ситуации как построить сводную таблицу?
Изменено: crjk - 10.02.2021 14:35:22
Быстродейственный аналог Sumifs в VBA.
 
Что конкретно непонятно?
1. Есть таблица (в примере Sheet1), в ней ключи (колонка А);
2. По этим ключам надо получить полную сумму с листа Sheet2 колонка B.

Затем произвести пункт 2 по другим столбцам с другими критериями.
Прикладываю еще один пример, лист Sheet3
Желтым выделил таблицу с результатом, которую необходимо получить. В примере сделал на формулах, но формулах это получить в рабочем файле (табл. 1  около 20к строк, табл. 2 около 60к строк) очень долго и неудобно, необходимо сделать с помощью макроса).
Быстродейственный аналог Sumifs в VBA.
 
Цитата
Jack Famous написал: макросом - так просто вычисляйте да вставляйте, когда надо. Хоть через штатные функции листа, как у вас
К сожалению, это получается очень долго. На один столбец уходит более 2х минут, а их более 20.

Цитата
Е...ускорить можно только храня один из словарей с данными в памяти
Мне нужна не функция, мне нужен результат (с помощью макросов), который выполнит сие действие наиболее быстрым путем и вставит нужные значения (не формулы) :( К сожалению, мой путь слишком времязатратный, ищу путь быстрее...
Быстродейственный аналог Sumifs в VBA.
 
Сделал наглядный тестовый пример.
Но тут скорее вопрос именно в подходе, как лучше это сделать.
В реальности надо заполнить 20 таких столбцов по схожему механизму (но с разными условиями).
Файл с 20к строками не прикрепился (ограничение 100кб).
Поэтому прикрепляю сильно урезанную версию
Если на Sheet1 сделать 20к строк, а на листе Sheet2 60к строк, то время обработки макроса (код в примере), получается более минуты.
Изменено: crjk - 10.02.2021 14:05:20
Быстродейственный аналог Sumifs в VBA.
 
Добрый день.
Есть таблица (табл.1) ~20к строк, где каждую строку необходимо сделать SUMIFS из таблицы (табл. 2) в ~70к строк по двум критериям.
Таких SUMIFS будет около 20 (т.е. в 20 столбцов каждой строки табл.1 нужно сделать sumifs из табл. 2)
Пытаюсь придумать наиболее производительный вариант.
Сейчас пробую сделать просто через
Код
    For i = 0 To 22417
    DoEvents
        arr(i) = WorksheetFunction.SumIfs(Worksheets("2").Range("K:K"), Worksheets("2").Range("I:I"), _
            Worksheets("1").Cells(i + 10, 4).Value)
    Next
'Вставляем массив одним действием в табл.1
[К сожалению, на один столбец уходит порядка 2 минут. Возникает вопрос, есть ли какой-то более удобный/оптимизированный вариант?

Спасибо
Автоматизация заполнения Шаблона Word данными из Excel
 
Я не ходил за заказами, предложил просто показать (не за деньги и открыто в ветке) свой код, может быть это бы помогло автору, если у него есть некоторые познания в vba.
Настройки полей (fields) в Worde.
 
С "Работой" ошибся, да.
В следующий раз воспользуюсь "Курилкой", спасибо.
Настройки полей (fields) в Worde.
 
Юрий, в 9 сообщении есть ответ.
Настройки полей (fields) в Worde.
 
Просто выделить букву R в коде редактирования поля и назначить на нее нужный шрифт/выделения/размер
Настройки полей (fields) в Worde.
 
Цитата
Михаил Лебедев написал:
Костыль нашел такой. Если между словами вместо пробела ставить неразрывный пробел (Shift+Ctrl+пробел) - формат не слетает
Не совсем применимо это, потому что закладки тянутся у меня из эксель файла, где свои форматы :)
Там выше я написал решение, если вы не заметили.
Настройки полей (fields) в Worde.
 
Проблема решена на иностранном форуме, необходимо было заменить
Код
{ REF ИмяЗакладки \h \* MERGEFORMAT }   

на

Код
{ REF ИмяЗакладки \h \* CHARFORMAT}

Сделав первую букву R в REF нужного формата.

Спасибо Михаилу за участие.

Изменено: crjk - 22.09.2020 12:41:39
Настройки полей (fields) в Worde.
 
Цитата
Михаил Лебедев написал:
Ворд и Ексель. Какая связь?
Не хотелось бы вступать в полемику, часто читаю данный форум и тут бывают вопросы и по другим продуктам MS. Если модераторы сочтут необходимым удалить/убрать пост, их право.

Спасибо за файл.
Не могли бы вы объяснить что сделали и показать вариант "до обновления", чтобы я мог попробовать обновить у себя?
Настройки полей (fields) в Worde.
 
Цитата
Михаил Лебедев написал:
PSВы знаете, что находитесь в платном разделе "Работа" форума?
Извиняюсь, перепутал раздел, если возможно, модераторы перенесите, пожалуйста, тему в "Вопросы по Microsoft Excel".
Цитата
Михаил Лебедев написал:
Тогда сделайте файл-пример более приближенный к реальному документу.
Думаю, перезаливать файл не буду, уже обозначили что выделить весь текст и сделать в нем шрифт/размер нет возможности.
Настройки полей (fields) в Worde.
 
Так у меня в документе разный шрифт и размер встречается. Мне нужно чтобы шрифт и размер в перекрестной ссылке был такой же, как и в том месте, где она расположена. А она изначальное такого шрифта и есть (как видно в примере), но после обновления полей у второго слова этот шрифт и размер слетает.
Настройки полей (fields) в Worde.
 
Сделал тестовый файл.
Если нажать Ctrl+A и F9 (обновить поля), то увидите проблему.
Стиль отображения полей (код или текст) меняется Alt+F9, если что :)
Спасибо.
Изменено: crjk - 22.09.2020 12:09:09
Настройки полей (fields) в Worde.
 
Добрый день.
Есть вордовский документ с закладками (bookmarks), на эти закладки ведут перекрестные ссылки (cross-ref).
Проблема в том, что данные в полях этих перекрестных ссылок отображаются в разном формате.
Т.е. например, у меня в форматировании ворда поле настроено как Arial 10, но при обновлении поля (F9, чтобы туда встал текст из закладки. Предположим, у меня в закладке написано "Тестовое выражение") у меня слово Тестовое пишется Arial 10, а слово Выражение пишется Times New Roman 9. Предполагаю, что как-то неверна задана настройка поля. Прошу помочь, может кто-то сталкивался.
Вот код моего поля:
{ REF ИмяЗакладки \h \* MERGEFORMAT }

Спасибо
Обновление перекрестных ссылок на Закладку с помощью VBA.
 
Нашел решение таким способом:
Код
Dim BMRange As Range
'Identify current Bookmark range and insert text
Set BMRange = ActiveDocument.Bookmarks("MyBookmark").Range
BMRange.Text = "Hello world"
'Re-insert the bookmark
ActiveDocument.Bookmarks.Add "MyBookmark", BMRange
Обновление перекрестных ссылок на Закладку с помощью VBA.
 
Добрый день, есть задача сформировать документ Word из файла Excel.
У меня есть рыба документа Word, в которой я сделал закладки (bookmarks), например [Name].
Так вот этот Name должен встречаться в word-документе несколько раз, поэтому я сделал перекрестные ссылки на него, с помощью Cross-Reference.
Затем я обновляю поля bookmarks с помощью:
Код
wd.Bookmarks.Item(markName).Range.Text = x
После этого, как я понимаю, закладки из документа убираются, в результате слетают ссылки Cross-Reference и после нажатия ctrl+A - F9 или wd.Fields.Update у меня вместо нужного Name остается Error! Reference
source not found.

Как лучше провернуть подобную операцию, чтобы все сработало?
Спасибо.
Изменено: crjk - 15.09.2020 10:53:37
Быстрая конвертация суммы 8 100,00 в числовой формат
 
Код
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" ";"");",";".")*1

Первое что пришло в голову
Очистка книги от пользовательской Ribbon и макросов.
 
При поверхностном осмотре всё нормально :)
Очистка книги от пользовательской Ribbon и макросов.
 
Придумал простое решение, просто скопировать листы в xlsx файл.
Код
    ThisWorkbook.Sheets.Copy
    Dim wbNew
    Set wbNew = ActiveWorkbook
    
    wbNew.SaveAs ThisWorkbook.Path & "\NewName" & "_" & Date & "_" & Replace(Time, ":", "_"), FileFormat:=xlOpenXMLWorkbook
    wbNew.Close
Изменено: crjk - 08.06.2020 10:48:40
Очистка книги от пользовательской Ribbon и макросов.
 
Алгоритм простой, но весьма костыльный :)
Нет ли вероятности получить проблемы с правами юзеров? (запустится ли этот скрипт без прав администратора)
Спасибо за предложенный вариант, послушаем еще посетителей форума, может кто-то решал схожую проблему как-то по-другому.
Очистка книги от пользовательской Ribbon и макросов.
 
Вручную удалить я это могу и через Custom UI editor, задача в том, чтобы сделать это кнопкой - без манипуляций с zip и другими программами.
Очистка книги от пользовательской Ribbon и макросов.
 
Добрый день.
Есть книга с макросами и пользовательской панелью (ribbon). После работы с файлом необходимо удалить эту панель и очистить книгу от макросов.
1. Для удаления (точнее скрытия) панели использую следующий момент:
в XML коде моего excel-файла  меня есть строка
Код
<customUI onLoad="RibbonOnLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
А, соответственно в модуле книги есть макрос:
Код
Public Sub ClearFileForClient(ByRef rc As IRibbonControl)
    HideMyRibbonTab
End Sub

Sub RibbonOnLoad(Ribbon As IRibbonUI)
    Set Ribn = Ribbon
End Sub

Sub HideMyRibbonTab()
    RibnTag = "HideTab"
    If Not Ribn Is Nothing Then
        Ribn.Invalidate
    End If
End Sub
С помощью этой процедуры панель успешно скрывается.

2. Для удаления кода я сохраняю файл в xlsx формате.

Но возникает проблема, что при открытии свежесозданного xlxs файла вылезает ошибка "Cannot run the macro "RibbonOnLoad", because macroses is cleared" (что логично, макросы то из книги удалены).

Может кто сталкивался с подобной задачей и знает изящные варианты ее решения?

Спасибо.
Изменено: crjk - 03.06.2020 17:50:30
Страницы: 1 2 След.
Наверх