Автоматизированный документ LaTex, созданный из таблицы Excel

Вопрос или проблема

Продолжая этот разговор: Автоматическая генерация документов LaTeX из таблицы Excel

Вот мой мини-пример:

Мини-пример

Я пытаюсь создать обзор для ‘Test’, так как ожидал, что они будут оформлять заказы.

CommandButton1 должен дать мне pdf с перечисленными двумя последними заказами.

Я могу открыть .tex файл с помощью

CreateObject("Shell.Application").Open ("C:\Path\input.tex")

Однако, как мне заполнить мой .tex файл данными и как запустить код в VBA?
(не очень беспокоюсь о том, как это выглядит, я могу это выяснить)

Итак, я вручную перенес данные в .tex:

\documentclass[a4paper,12p]{article}

\newcommand{\company} {Test} 

\begin{document}

Просрочено: \company. \par

\begin{center}
\begin{tabular}{ l l c }
 (F2) Ноя-23 & (E2) Мая-24 & (G2) ожидается: Ноя-24 \\ 
 (F3) 1549 & (E3) 1714 & \\ 
(F4) 12 & (E4) 12 & \\  
\end{tabular}
\end{center}


\end{document}

Как мне импортировать приведенные выше данные, не вручную?

.

Ответ или решение

Чтобы автоматизировать процесс генерации документа LaTeX из таблицы Excel с использованием VBA, необходимо провести несколько шагов, включая извлечение данных из Excel и создание файла .tex. Давайте разберем этот процесс более подробно.

1. Подготовка данных в Excel

Прежде всего, убедитесь, что ваши данные структурированы в Excel. Например, вы можете иметь следующую таблицу:

Дата заявки Дата исполнения Ожидаемая дата Значение 1 Значение 2
Nov-23 May-24 Nov-24 1549 12

2. Создание базового файла .tex

Создайте шаблон .tex, который будет содержать заголовки и необходимую структуру документа, но без данных:

\documentclass[a4paper,12p]{article}

\newcommand{\company} {Test} 

\begin{document}

Overdue: \company. \par

\begin{center}
\begin{tabular}{ l l c }
  Дата заявки & Дата исполнения & Ожидаемая дата \\ 
  \hline
  %DANE
\end{tabular}
\end{center}

\end{document}

3. Написание кода VBA для автоматизации

Теперь вам нужно создать процедуру VBA, которая будет извлекать данные из Excel и заполнять шаблон .tex. Здесь пример кода:

Sub GenerateLaTeX()
    Dim texFilePath As String
    Dim fso As Object
    Dim texFile As Object
    Dim lastRow As Long
    Dim i As Long
    Dim dataString As String

    ' Укажите путь к вашему файлу .tex
    texFilePath = "C:\Path\input.tex"

    ' Получаем последний заполненный ряд
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' Создаем объект FileSystemObject для манипуляции с файлами
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' Создание или открытие файла .tex
    Set texFile = fso.CreateTextFile(texFilePath, True)

    ' Запись заголовка в .tex
    texFile.WriteLine "\documentclass[a4paper,12p]{article}"
    texFile.WriteLine "\newcommand{\company}{Test}"
    texFile.WriteLine "\begin{document}"
    texFile.WriteLine "Overdue: \company. \par"
    texFile.WriteLine "\begin{center}"
    texFile.WriteLine "\begin{tabular}{ l l c }"

    ' Генерация данных из Excel и запись в .tex
    For i = 2 To lastRow
        dataString = Cells(i, 1).Value & " & " & Cells(i, 2).Value & " & " & Cells(i, 3).Value & " \\"
        texFile.WriteLine dataString
    Next i

    ' Закрытие таблицы и документа
    texFile.WriteLine "\end{tabular}"
    texFile.WriteLine "\end{center}"
    texFile.WriteLine "\end{document}"

    ' Закрытие файла
    texFile.Close

    ' Открытие .tex файла
    CreateObject("Shell.Application").Open (texFilePath)

    MsgBox "LaTeX документ сгенерирован и открыт!"
End Sub

4. Как использовать данный код

  1. Откройте Excel и нажмите ALT + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль: Insert > Module.
  3. Скопируйте и вставьте приведенный выше код в модуль.
  4. Обновите путь к файлу .tex в коде под свой путь на компьютере.
  5. Запустите процедуру GenerateLaTeX.

Заключение

Этот процесс позволяет автоматически генерировать LaTeX документ на основе данных из Excel, исключая ручной ввод. В результате, можно значительно ускорить подготовку отчетов и документов, обеспечивая при этом точность и актуальность информации. Надеюсь, это решение будет вам полезно.

Оцените материал
Добавить комментарий

Капча загружается...