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

Страницы: 1
Постраничная разбивка и сохранение при слиянии excel и word, Не получается через ActiveDocument.MailMerge.DataSource.DataFields.Value получить значение полей при процедуре слияния word и excel
 
sokol92, Владимир, спасибо большое! Так заработало. Ура!!)
Постраничная разбивка и сохранение при слиянии excel и word, Не получается через ActiveDocument.MailMerge.DataSource.DataFields.Value получить значение полей при процедуре слияния word и excel
 
Цитата
написал:
В таком виде макрос у меня работает
Владимир, спасибо большое.
Но так работает слияние, оно и в моем случае работает. Вопрос в том как значение полей источника получить для сохранения имени файла, например.
Постраничная разбивка и сохранение при слиянии excel и word, Не получается через ActiveDocument.MailMerge.DataSource.DataFields.Value получить значение полей при процедуре слияния word и excel
 
Добрый день, уважаемые форумчане.

Пытаюсь средствами VBA управлять процессом слияния word и excel.
Штатными средствами word можно делать слияние либо по всем строкам источника данных, либо по конкретному диапазону строк. Записал макрос слияния одной строки и запустил в цикле. При этом мне не удается получить значение полей документа слияния. Всегда выдается только значение первой строки таблицы.
Пробовал в разных вариантах, потратил несколько часов в поисках, но всё тщетно - выдаются только поля первой страницы слияния, остальные не выводятся. Решил обратиться на форум. Буду признателен за подсказки.

Код:
Код
Sub my_macro()
 
For i = 1 To 2

    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        
        
        With .DataSource
            .FirstRecord = i
            .LastRecord = i
            lname = ActiveDocument.MailMerge.DataSource.DataFields(2).Value
            MsgBox (lname)
        
        End With
                
        .Execute Pause:=False
       
    End With
    
   Windows("my_print").Activate
    
Next i
    
End Sub
Прикладываю сам файл и источник данных.
Перенос слов в ячейках
 
Самый простой и быстрый вариант предложил Ігор Гончаренко, если вас устроит.

Через пользовательскую функцию этого не сделать, т.к. функция не может менять ячейку, только выдавать значение/результат.
CHR(10) через функцию не проходит, но получается то что хотите через процедуру.

Как вариант: разбить столбец отдельно на Фамилию, Имя, Отчество (это можно сделать выделив столбец, далее Данные, далее Текст по столбцам, выбрать "с разделителем", далее в качестве разделителя выбрать пробел). Получится 3 столбца. И уже их можно "склеить" с помощью CHR(10) через Sub. У меня получилось:
Код
Sub new_fio()
    For i = 1 To 10 ' вместо 1 и 10 поставьте первую и последнюю строку новой таблицы с ФИО
        Cells(i, 4).Value = Cells(i, 1) & Chr(10) & Cells(i, 2) & Chr(10) & Cells(i, 3)
    Next i
End Sub
Подразумевается, что Фамилии находятся в 1ом столбце, Имена во 2ом, Отчества в 3м.
Результат склейки будет в 4м столбце.

Удачи!
как определить сколько клиентов новых и др?
 
В ячейку H5 поставить формулу и протащить до конца таблицы:

Код
=ЕСЛИ(И(СУММ(B5:D5)=0;СУММ(E5:G5)>0);"новый";ЕСЛИ(И(СУММ(B5:D5)>0;СУММ(E5:G5)>0);"действующий";ЕСЛИ(И(СУММ(B5:D5)>0;СУММ(E5:G5)=0);"ушедший";"")))

Аналогично в В21
Код
=СЧЁТЕСЛИ(H:H;A21)
Изменено: AlexU2 - 09.06.2022 14:54:38
Графические элементы через Pset в UserForm, Попытка нарисовать график через Pset и UserForm
 
Добрый день уважаемые форумчане!

2й день бьюсь никак не могу найти ответ: хочу изобразить свободные кривые на графике (вроде синусоид, парабол и разного рода кривых).
Но не через стандартные диаграммы, а вроде тех, что рисуются в математических пакетах разных.

Нашел методичку (Использование графики в VBA), где описано, что это возможно, например, через UserForm.

Однако подозреваю, что этот труд писался для более ранних версий, у меня Excel 2016 и на форму (которую еще пришлось поискать куда теперь спрятали) через Pset не выводит ничего. Долгие поиски по нашему и зарубежному интернету тоже не привели к ответу.

Можете подсказать, как вывести точку по координатам? Пока есть такой код в самой форме:
Код
Private Sub UserForm_Click()

Dim UF1 As UserForm1
Set UF1 = New UserForm1

    UF1.Caption = "UF2"
    UF1.Scale (0, 0)-(120, 120)
    UF1.PSet (10, 10), vbRed
    UF1.Line (0, 0)-(50, 50), 1, B
    UF1.Show  
End Sub
При этом выводится только чистый лист формы при запуске, без каких-либо элементов.
Работа с буфером обмена данных VBA Excel как с массивом
 
Здорово!!!
Спасибо большое, Дмитрий!!

Очень помогли!
Всё работает.
Работа с буфером обмена данных VBA Excel как с массивом
 
Файл очень большой, много скриптов. А если всё урезать, то и выкладывать нечего)
Сейчас реализовано через cells. Я просто запускаю скрипт и с текущего положения выделяю (из скрипта) нужную мне область, копирую её в отдельную вкладку, и далее уже работаю с этими данными.

А хотелось бы без "посредника" в виде скопированных на вкладку данных и в идеале именно через работу с буфером обмена. Копал пару часов на наших и зарубежных форумах, везде примеры только с работой с буфером в формате текста, либо одной ячейки. Но не с диапазоном.
Работа с буфером обмена данных VBA Excel как с массивом
 
Спасибо большое, Дмитрий!
Ник подправил.

Подпрограмма запускается без ошибок, только как в этом случае сослаться на значение массива из скопированного в буфер диапазона?
Мне достаточно только текст.
Если кратко: то я копирую несколько чисел в буфер и работаю с ними.

Пока сделал как сохранение данных в ячейки файла на отдельную страницу. Но это не красивое решение, хочу разобраться и реализовать именно через буфер обмена.
Работа с буфером обмена данных VBA Excel как с массивом
 
Добрый день!

На форуме нашел решение работы с буфером обмена данных.
Код
Function ClipboardText()
    With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        ClipboardText = .GetText
    End With
End Function

Но при запуске выдаётся только первое значение выбранного диапазона.
А мне нужно, чтобы выбрав диапазон и скопировав его в буфер можно было поработать с каждым значением, как с массивом.
Как это можно реализовать?
Изменено: alexuspehov@mail.ru - 15.01.2020 09:06:00
Страницы: 1
Наверх