Я пытаюсь создать шаблон в MS Excel для печати похожих страниц, но с уникальным идентификатором внутри каждой напечатанной страницы (например, ID: 001, 002 и т.д.), Но печать только с одного листа.

Я создаю что-то вроде бортового журнала (т.е. каждая страница одинакова, отличается только UID)

Есть ли в любом случае сделать это без дублирования одного и того же листа и вставки UID вручную?

Если вопрос не ясен, я перефразирую. Заранее спасибо!

3 ответа3

1

Это был ответ на мой подход, который я использовал:- Создать макрос для автоматического изменения значений ячейки и вызвать принтер для печати страницы. Важной частью кода является цикл и печать.

Создайте макрос и запустите его:

Sub PageNumber()
Application.Dialogs(xlDialogPrinterSetup).Show
For I = 1 To 50
ActiveSheet.Range("G28").Value = "Page " & I & " of 50"
ActiveSheet.Range("G28").Select
With Selection
    HorizontalAlignment = xlRight
    <insert all your cell formatting here>
End With
ActiveWindow.SelectedSheets.Printout Copies:=1, Collate:=True
Next
End Sub
0

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

Данные в шаблон

Макрос заполняет шаблон и сохраняет каждый в отдельном файле ИЛИ создает отдельный лист по вашему выбору. Эта последняя часть может быть изменена для других целей, главным образом для демонстрации простого способа заполнения формы из базы данных на основе строк.

Там есть образец файла для простого тестирования и начала работы. Вот основные особенности этого макроса:

Option Explicit

Sub FillOutTemplate()
'Jerry Beaucaire  4/25/2010
'From Sheet1 data fill out template on sheet2 and save
'each sheet as its own file.
Dim LastRw As Long, Rw As Long, Cnt As Long
Dim dSht As Worksheet, tSht As Worksheet
Dim MakeBooks As Boolean, SavePath As String

Application.ScreenUpdating = False  'speed up macro execution
Application.DisplayAlerts = False   'no alerts, default answers used

Set dSht = Sheets("Data")           'sheet with data on it starting in row2
Set tSht = Sheets("Template")       'sheet to copy and fill out

'Option to create separate workbooks
    MakeBooks = MsgBox("Create separate workbooks?" & vbLf & vbLf & _
        "YES = template will be copied to separate workbooks." & vbLf & _
        "NO = template will be copied to sheets within this same workbook", _
            vbYesNo + vbQuestion) = vbYes

If MakeBooks Then   'select a folder for the new workbooks
    MsgBox "Please select a destination for the new workbooks"
    Do
        With Application.FileDialog(msoFileDialogFolderPicker)
            .AllowMultiSelect = False
            .Show
            If .SelectedItems.Count > 0 Then    'a folder was chosen
                SavePath = .SelectedItems(1) & "\"
                Exit Do
            Else                                'a folder was not chosen
                If MsgBox("Do you wish to abort?", _
                    vbYesNo + vbQuestion) = vbYes Then Exit Sub
            End If
        End With
    Loop
End If

'Determine last row of data then loop through the rows one at a time
    LastRw = dSht.Range("A" & Rows.Count).End(xlUp).Row

    For Rw = 2 To LastRw
        tSht.Copy After:=Worksheets(Worksheets.Count)   'copy the template
        With ActiveSheet                                'fill out the form
            'edit these rows to fill out your form, add more as needed
            .Name = dSht.Range("A" & Rw)
            .Range("B3").Value = dSht.Range("A" & Rw).Value
            .Range("C4").Value = dSht.Range("B" & Rw).Value
            .Range("D5:D7").Value = dSht.Range("C" & Rw, "E" & Rw).Value
        End With

        If MakeBooks Then       'if making separate workbooks from filled out form
            ActiveSheet.Move
            ActiveWorkbook.SaveAs SavePath & Range("B3").Value, xlNormal
            ActiveWorkbook.Close False
        End If
        Cnt = Cnt + 1
    Next Rw

    dSht.Activate
    If MakeBooks Then
        MsgBox "Workbooks created: " & Cnt
    Else
        MsgBox "Worksheets created: " & Cnt
    End If

Application.ScreenUpdating = True
End Sub
0

Я использовал Mail Merge в MS Word. Просто поместите день недели и дату в отдельный файл Excel, затем скопируйте мой документ в файл слова и используйте слияние по почте, чтобы изменить дни и даты в каждом документе. Очень просто..

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .