Зараз обговорюють

"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Спасибі дуже корисна стаття

А ще щось планується подібного найближчим часом?


Дякую за підтримку, радий що Вам сподобалось!

Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює

Надіюсь найближчим часом дороблю й закину

Рахунки

webmoneyeur - E385818210641
usd - Z304643423050
uah - U354026817492
rub - R301704373231easypay80002677bitcoin1F5HRGroUtEQW9HBNbeew8iKh5KQ8vJxzw

Зворотній зв'язок

Для покращення роботи сайту надсилайте свої зауваження:
mailЗауваження
mailПропозиція

Статистика

UkrNET - поисково-информационный ресурс

VBA : Формування листів (*.doc, *.pdf) із даних Excel

Якщо Ви часто формуєте велику кількість листів для розсилки використовуючи стандартний шаблон, тоді Вам стане в пригоді даний невеликий макрос, що значно спростить життя.

Даний макрос масово генерує листи з таблиці даних в MS Excel використовуючи шаблон, попередньо створений в MS Word.

Шаблон листа

В шаблоні Вашого повідомлення необхідно вставити унікальні значення, які в подальшому будть замінюватись на значення даних із таблиці Excel.

Для прикладу можна використати наступний формат:

Шановний {PIB}! Cтаном на {cur_date} у Вас наявна заборгованість на суму {debt} грн. 

де:

{PIB} - Прізвище ім'я по батькові

{cur_date} - потрібна дата

{debt} - сума боргу

Після підготовки шаблону зберегти в робочу теку.

Підготовка таблиці Excel

Формуємо таблицю із необхідних даних та кожен стовпець називаємо відповідною назвою, яку було прописано в шаблоні ({PIB}, {cur_date}, {debt} тощо).

Для зручності в кінці додаємо 1 колокнку - "Посилання на файл" в яку будемо вставляти лінк для швидкого переходу.

Шапка таблиці в 1-му рядку, а починаючи із 2-го дані для генерування. В іншому випадку необхідно буде внести коригування в код макросу.

Код макросу

Для пошуку даних та їх заміни в Word документі, необхідно підключити бібліотеку Microsoft Word xx.x Object Library в Tools -> References

Sub createLetter()
sTime = Time
Application.ScreenUpdating = 0
Dim maxRow As Long, maxCol As Long, dataMatrix As Object, sPath As String, newFileName As String
    sPath = ThisWorkbook.Path ' поточний шлях файлу з якого запущено макрос'
    Set baseSteet = ThisWorkbook.Sheets("BASE") ' змінна що відповідатиме за робочий аркуш, в нашому випадку наз. BASE'
    If baseSteet.Range("A1").Value > 0 Then
        If baseSteet.Range("A2") <> 0 Then maxRow = baseSteet.Range("A1").End(xlDown).Row Else maxRow = 2 ' визначається максимальна к-ть рядків із даними'
        maxCol = baseSteet.Range("A1").End(xlToRight).Column - 1 ' максимльний індекс колонки із даними для перебору, -1 для відняння колокнки із посиланням'
        Set dataMatrix = Range(baseSteet.Range("A2"), baseSteet.Cells(maxRow, maxCol + 1)) ' заповнюємо змінну діапазоном даних для заміни значень у шаблоні'
        Set wordApp = CreateObject("Word.Application") ' створення аплікації Word'
        wordApp.Visible = True ' відображати аплікацію'
        For i = 1 To maxRow - 1
            If dataMatrix(i, maxCol + 1) = 0 Then
                Set wordDoc = wordApp.Documents.Open(sPath & "\In\Form.docx") ' відкриваємо шаблон із підтеки In'
                For j = 1 To maxCol
                    wordDoc.Content.Find.Execute FindText:=dataMatrix(0, j), ReplaceWith:=dataMatrix(i, j), Format:=True, Replace:=wdReplaceAll ' проводимо пошук та заміну значень по назві стовпця даних'
                Next j
                ' згенеровані лсити зберігатимемо у підтеку Out'
                newFileName = "Out\" & Replace(dataMatrix(i, 1), "/", "-") & "_" & dataMatrix(i, 2) & ".pdf"  ' назва вихідного файлу створена із даних таблиці, для унікальності'
                wordDoc.SaveAs2 sPath & "\" & newFileName, 17 ' зберегти лист в pdf'
                dataMatrix(i, maxCol + 1) = "=HYPERLINK(" & Chr(34) & newFileName & Chr(34) & ")" ' додаємо лінк на файл'
                wordDoc.Close False
            End If
        Next i
        wordApp.Quit ' закриваємо аплікацію'
        Set wordApp = Nothing: Set wordDoc = Nothing
        eTime = Time
        MsgBox ("Done!")
    Else
        eTime = Time
        MsgBox ("Відсутні дані для формування!")
    End If
Application.ScreenUpdating = 1
MsgBox (Format(eTime - sTime, "h:mm:ss")) ' виведення інформації про затрачений час на виконання!'
End Sub 

Для збереження в форматі doc, docx необхідно в назві файлу (newFileName) змінити розширення та замінити wordDoc.SaveAs2 на:

wordDoc.SaveAs sPath & "\" & newFileName 

Робоча тека із усіма файлами:

Завантажити з


view403like0dislike0 avatard_l4w clock 2017-12-08 03:50

Коментарі:



Для даної статті відсутні коментарі

Про нас

"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.

Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:

- Вивчати теоретичні аспекти мов програмування

- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом

- Розміщати свої завдання на форумі для допомоги в їх реалізації, або готового коду який може бути корисний іншим користувачам

- Спілкуватись з іншими користувачами та обмінюватись досвідом

Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".

Сайт

Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!

Також Ви можете використати форми відправки Зауважень та Пропозицій.


Електронна пошта

Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com

www.000webhost.com