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

Страницы: 1
Замена значений из Excel в Word c сохранением docx-файла
 
Ура решение подсказал автор оригинального макроса. Благодарю, Дмитрий!

Возможно кому то такой вариант будет удобней в использовании.
Скрытый текст
Макрос импорта данных из Excel in Word, Адаптировал ранее предложенный макрос Дмитрия Щербакова
 
Дмитрий, благодарю. Просто мне этот вопрос не дает покоя. Спать не могу. И это не шутка.
Изменено: AlterEgo - 05.03.2024 12:05:30
Замена значений из Excel в Word c сохранением docx-файла
 
Ребята, всем привет!

Я пытаюсь реализовать подобный макрос но не с закладками а с метками типа {метка}
Такие метки в шаблоне вордовском.
В качестве меток в рабочей книге используются имя ячейки и имя листа типа {Лист1}  так же в скобках

Так вот поиск и замену метки в шаблоне на значение из ячейки я реализовал.
Поиск среди листов листов со скобками тоже не составляет проблемы

ну допустим есть лист копируем его содержимое там таблица:
Код
Sheets("{List}").UsedRange.Copy
Вопрос в том как заменить в шаблоне метку  {List} на эту таблицу ???  
Макрос импорта данных из Excel in Word, Адаптировал ранее предложенный макрос Дмитрия Щербакова
 
Цитата
написал:
Мне кажется тема достойна основной ветки. Приложите пару файлов (Word и Excel)
Sanja,  Да если решить этот момент, будет отличный макрос импорта в ворд и таблиц и значений, многие его ищут. Идея подсмотрена у РОБАСТИКА - надстройка. За основу взят макрос Щербакова.


в архиве папка, которая содержит шаблон и рабочую книгу   для примера в коде прописан путь C:\макрос\Шаблон.doc
Макрос импорта данных из Excel in Word, Адаптировал ранее предложенный макрос Дмитрия Щербакова
 
Цитата
написал:
соответствующем разделе — она, ск
nilske, В том то и дело что нужно именно  через метки.
Макрос импорта данных из Excel in Word, Адаптировал ранее предложенный макрос Дмитрия Щербакова
 
Да мне вообще пофик как кому удобно тот пускай так и думает.

Вы либо по сути вопроса либо можете создать дополнительную тему и обсудить это отдельно
Макрос импорта данных из Excel in Word, Адаптировал ранее предложенный макрос Дмитрия Щербакова
 
Ребята, все банально и просто. Жена регалась однажды и естественно на мое мыло. С нее советник по вопросам экселя слабый - отправила сюда

В основном здесь она, я иногда пользуюсь ее профилем. Не думал, что это имеет больше значение :)))  
Изменено: AlterEgo - 04.03.2024 13:10:34
Макрос импорта данных из Excel in Word, Адаптировал ранее предложенный макрос Дмитрия Щербакова
 
Юрий М,  Спс. Поправил. Учту в дальнейшем.
Макрос импорта данных из Excel in Word, Адаптировал ранее предложенный макрос Дмитрия Щербакова
 
Всем привет!
Попытался адаптировать под себя макрос импорта из эксель в ворд по меткам
Взял за основу работу Щербакова отсюда https://www.excel-vba.ru/chto-umeet-excel/kak-iz-excel-obratitsya-k-drugomu-prilozheniyu/

Суть адаптации:
- Есть вордовский документ "Шаблон.doc"  в котором стоят в нужных местах метки в фигурных скобках {Метка1} {Яч1} {Лист1}.
- В рабочей книге метками являются имена ячеек (без каких либо скобок) и имена листов (также в фигурных скобках).
- Макрос производит замену меток в шаблоне и сохраняет документ под другим именем. Причем метку, которая соответствует наименованию листа рабочей книги макрос должен заменить таблицей с этого листа.

Суть проблемы:
- Не пойму как заменить метку в ворде скопированным диапазоном с листа :(((

Код с описанием.
Проблемный участок между пробелами.
Подскажите юному дилетанту пожалуйста.
Скрытый текст
Изменено: AlterEgo - 04.03.2024 12:20:56
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
Конь, Добрый день. Разобрала ваш макрос. Все норм работает. Просмотрев ряд уроков по вба - хоть немного понятно что происходит :)
Код
Sub Макрос1()
'это понятно
Application.ScreenUpdating = False
'переходим на лист {P}
Sheets("{P}").Select
'очищаем все 
Rows("1:31").Delete Shift:=xlUp
'переходим на лист {P}шаблон
Sheets("{P}шаблон").Visible = True
Sheets("{P}шаблон").Select
'переносим все в лист {P}
Range("B2:AO31").Copy    
Sheets("{P}").Select
Range("B2").Select
ActiveSheet.Paste
Sheets("{P}шаблон").Visible = False

Sheets("{P}").Select
'Цикл проверяет содержится ли в ячейках N2-N30 прочерк и ставим в столбец А метку
'-----
'For i = 2 To 30
'If InStr(Range("N" & i).Value, "-") > 0 Then
'Range("A" & i).Value = "x"
'Range("A" & i + 1).Value = "x"
'Range("A" & i + 2).Value = "x"
'-----
For i = 2 To 30 Step 3
If InStr(Range("N" & i).Value, "-") > 0 Then
Range(Cells(i, 1), Cells(i + 2, 1)).Value = "x"
End If
Next i
' удаляем размеченные строки полностью снизу вверх
For i = 31 To 1 Step -1
If Range("A" & i).Value = "x" Then Rows(i).Delete Shift:=xlUp
Next i
Range("A1").Select
Application.ScreenUpdating = True
End Sub
Благодарю за помощь!!!!!!!!!
Изменено: AlterEgo - 15.02.2024 18:28:12
Bubble Sort, Изучаю VBA Затык с Bubble Sort
 
Sanja,  Благодарю, за подсказку ... вот так вот и приходится учиться на своих ошибках :)
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
Vik_tor, Вау! Классный вариант. Обязательно применю его. Благодарю!!
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
Конь,  Добрый день. Продолжаю работу над своей формой.

Чтобы подойти к вашему коду нужно решить еще ряд задач.

Возник затык.
Был написан макрос, что удаляет пустые строки в зависимости пустая ячейка в столбце "I" или нет.
Работает.
Но почему то удаляет не все пустые строки в диапазоне сразу. Если нажать кнопку несколько раз - только так.
Помогите разобраться в чем проблема пож. Почему цикл за раз все не делает? (Полагаю что, после удаления строки нарушается цикл)

Это часть кода, в полной версии несколько раз на кнопку нажимать не получится.
Код
Sub Кнопка()

Dim i As Integer
    For i = 6 To 65
        If Cells(i, "I").Text = "" Then
        Rows(i).EntireRow.Delete
        End If
    Next i

End Sub

На форуме нашелся вариант рабочий:
Код
Sub Larisa()

    Dim iRange As Range
    Dim iRangeDelete As Range
    Dim msg As Long
    
    For Each iRange In Range(Cells(3, "C"), Cells(Cells(Rows.Count, "C").End(xlUp).Row, "C"))

        If iRange.Value = "" Then
            iRange.Select
            Set iRangeDelete = Union(iRange, IIf(iRangeDelete Is Nothing, iRange, iRangeDelete))
        End If
Next_Each:
    Next

    If Not iRangeDelete Is Nothing Then
        iRangeDelete.EntireRow.Delete
    Else
        Exit Sub
    End If
End Sub


Ураа!!!!!

Только не понятно вот эта часть IIf(iRangeDelete Is Nothing, iRange, iRangeDelete)
Изменено: AlterEgo - 09.02.2024 22:49:38
Bubble Sort, Изучаю VBA Затык с Bubble Sort
 
Евгений Смирнов,  

Mass(i) = ThisWorkbook.Worksheets("Лист1").Cells(14, i)    и все?????   блин  .....  Евгений, жму руку.  Благодарю.  
Bubble Sort, Изучаю VBA Затык с Bubble Sort
 
Евгений Смирнов, Но ведь я вот проверяю через   msgbox  мне выводит значение  .... а оказывается массив пустой как так?

ладно подскажите как в моем случае наполнить массив значениями из строки. спс
Изменено: AlterEgo - 20.01.2024 18:42:51
Bubble Sort, Изучаю VBA Затык с Bubble Sort
 
Всем привет.
В строке рандомные значения. Нужно отсортировать. Изучаю Bubble Sort.
Код
Sub Урок24_DZ()

Dim Mass() As Long
Dim LB As Long
Dim UB As Long

LB = 20
UB = ThisWorkbook.Worksheets("Лист1").Cells(14, Columns.Count).End(xlToLeft).Column
ReDim Mass(LB To UB) As Long

Call Module5.BBS_DZ(Mass)

End Sub

'----------------------------------------------------------

Sub BBS_DZ(list() As Long)

Dim first As Long
Dim lust As Long
Dim i As Long
Dim j As Long
Dim temp As String

first = LBound(list)
lust = UBound(list)

    For i = first To lust - 1
        For j = i + 1 To lust
            If Cells(14, i) > Cells(14, j) Then
                temp = Cells(14, j)
                Cells(14, j) = Cells(14, i)
                Cells(14, i) = temp
            End If
        Next j
    Next i
    
End Sub
Все работает.

Но тут мне захотелось, чтобы не эта строка сортировалась, а сортировались значения и выводились строкой ниже.
Тот же массив. Проверяю заполнен значениями. Но почему то перебор нулей и строка заполняется нулями :(((
Код
Sub Урок24_D_Z()

Dim Mass() As Long
Dim LB As Long
Dim UB As Long

LB = 20
UB = ThisWorkbook.Worksheets("Лист1").Cells(14, Columns.Count).End(xlToLeft).Column
ReDim Mass(LB To UB) As Long

'Dim i As Long
'For i = LBound(Mass) To UBound(Mass)
' Debug.Print ThisWorkbook.Worksheets("Лист1").Cells(14, i)
'Next i

Call Module5.BBS_D_Z(Mass)

'----------------------------------------------------------------------

End Sub
Sub BBS_D_Z(list() As Long)

Dim i As Long
Dim j As Long
Dim temp As String


'For i = LBound(list) To UBound(list)
' Debug.Print ThisWorkbook.Worksheets("Лист1").Cells(14, i)
'Next i


   For i = LBound(list) To UBound(list) - 1
        For j = i + 1 To UBound(list)
            If list(i) > list(j) Then
                temp = list(j)
                list(j) = list(i)
                list(i) = temp
            End If
        Next j
    Next i
     

For i = LBound(list) To UBound(list)
ThisWorkbook.Worksheets("Лист1").Cells(15, i).Value = list(i)
Next i


End Sub
Подскажите где я туплю пож.
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
Конь, Вы просили посмотреть рабочий мой документ :)))))  
Поэтому изначально был пример на А В С.

Если все упростить да 2х листов.
Есть лист  ТРУБА где предусмотрено 10 вариантов исходных данных. Введено 2 варианта только. И Лист {P} - там таблица расчета допустимого давления. Просчитано соответственно на 2 варианта из листа ТРУБА. Остальные поля с прочерками вместо значений.  
Подскажите как написать макрос, для такой таблицы.
Пусть он будет считать количество вариантов и в Лист {P1} дублировать расчет только со значениями. Например.  

Либо оставим эту затею и когда я додумаюсь - попробую реализовать макрос самостоятельно, а Вы поправите в случае ошибки.

Извините за потраченное время.  
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
Конь, Добрый день.
В файле с которым работаю гораздо все сложнее.
На основании таблицы, где проходят все расчеты формируются таблицы с результатами.
Эти таблицы на разных листах потому как макрос заполнения шаблона переносит в ворд эти таблицы по имени листа в фигурных скобках, например - {Лист1} (и такая же метка в ворде стоит). Поэтому то и вариант с форматированием не подошел.

Это макрос чужой, взятый с сайта robastik.ru  (не знаю, окажется ли это рекламой или нет, но я только изучаю вба, поэтому сил лично построить такой макрос под себя нет еще) Т.е. на данный момент получилось пока так автоматизировать свою работу, НО в ворде после переноса всех таблиц приходится руками удалять незаполненные позиции, либо позиции с прочерками или ошибками (это видно по таблице с результатами, до идеала конечно еще далеко).

Поэтому для начала хотелось бы решить вопрос с этим, чтобы лишние строки без расчетов меня не отвлекали.

Я понимаю что это должно быть объемный вопрос, поэтому выражу благодарность даже подсказке - как его решить, а не готовому решению.
Прикрепляю пример и шаблон.  Но без установленного РОБАСТИКА очевидно он у вас работать не будет. (Кстати говоря код робастика посмотреть не удается)  
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
Конь, нет, все таблицы на разных листах, одной книги.  
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
:(   очень жаль, но мне этот способ не подошел. В процессе дальнейшего заполнения шаблона в ворд переносится и невидимая часть таблицы в виде пустых ячеек с прозрачными границами. Если подскажите как написать макрос буду благодарен. ВБА только изучаю.
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
DAB, Скажите пож. почему формула реализована со скобками =ЕСЛИ(B6=("");("");B6+C6)? Ведь =ЕСЛИ(B6="";"";B6+C6) тоже работает. Или в этом есть какой- то секрет? Спасибо.
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
Конь, Вот я.... как же можно было не додуматься до такого решения. Благодарю Вас.
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
DAB, Я почувствовал себя ниже плинтуса. Ну как можно было не догадаться. Все гениальное просто. Огромная благодарность Вам!  
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
За ранее благодарен за помощь в решении или совет.  
Формирование таблицы без пустых строк, Формирование таблицы без пустых строк
 
Здравствуйте, Подскажите пожалуйста!

Есть таблица с исходными данными А и В рассчитана на 10 вариантов.  например для поиска  x=a+b. См. пример. На основании исходных данных формируется таблица с результатом. Если в исходных данных присутствуют все 10 вариантов - таблица с результатами заполнится и все ОК. Но если у нас только 2 варианта - то в таблице результатов будет 8 пустых строк. Вопрос - как сделать так чтобы формировалась таблица с результатами исходя из имеющихся вариантов? Т.е. если 2 варианта то и таблица результатов состоит только из 2х строк.

 
     
Страницы: 1
Наверх