Улучшение макроса VBA в Word для автоматического создания файла, связанного с именем и местоположением документа - PullRequest
0 голосов
/ 09 июня 2018

В настоящее время я использую макрос для добавления возрастающего номера документа в нижний колонтитул документа.Проблема в том, что он использует глобальный файл «settings.txt».

Я хочу применить этот макрос ко многим документам, и у каждого из них есть своя собственная запись возрастающего числа.

Я не являюсьПрофи для написания VBA / Macro, поэтому мне нужны довольно четкие инструкции или копируемый и вставляемый код.

Sub SerialNumber()
'
' SerialNumber Macro
'
'
Dim Message  As String, Title  As String, Default  As String, NumCopies  As Long
 Dim Rng1   As Range

 ' Set prompt.
Message = "Enter the number of copies that you want to print"
 ' Set title.
Title = "Print"
 ' Set default.
Default = "1"

' Display message, title, and default value.
Dim SerialNumber As String
NumCopies = Val(InputBox(Message, Title, Default))
 SerialNumber = System.PrivateProfileString("W:\settings.txt", _
 "MacroSettings", "SerialNumber")

 If SerialNumber = "" Then
     SerialNumber = 1
 End If

 Set Rng1 = ActiveDocument.Bookmarks("SerialNumber").Range
 Counter = 0

 While Counter < NumCopies
     Rng1.Delete
     Rng1.Text = SerialNumber
     ActiveDocument.PrintOut
     SerialNumber = SerialNumber + 1
     Counter = Counter + 1
 Wend

'Save the next number back to the Settings.txt file ready for the next use.
System.PrivateProfileString("W:\settings.txt", "MacroSettings", _
         "SerialNumber") = SerialNumber

'Recreate the bookmark ready for the next use.
With ActiveDocument.Bookmarks
     .Add Name:="SerialNumber", Range:=Rng1
 End With
End Sub

Вопрос:

  • Как я могу преобразовать это, чтобы использовать документназовите его как файл «settings.txt»
  • Как я могу преобразовать это, чтобы автоматически сохранить файл «settings.txt» в том же месте, где находится документ.(Я не уверен на 100%, но я думаю, что мне нужно создать setting.txt вручную, я хотел бы, чтобы создание было автоматическим)

  • Если я поступаю неправильноКстати, пожалуйста, дайте мне знать

Мой мыслительный процесс будет:

If "document_name.txt" exists then do run macro

If "settings/document_name.txt" DOESN'T exists then do create document_name.txt in current open files location
and use current document name.

Примечание: я также открыл щедрость на этот вопрос, чтобы макрос запускался автоматически послепользователь нажимает на печать как обычно.В настоящее время они должны вручную запускать макрос для печати. ​​

Запуск макроса перед печатью текстового документа

1 Ответ

0 голосов
/ 09 июня 2018

В этом случае вы можете использовать такой макрос, как:

Sub FilePrint()
Dim i As Long, j As Long
With ActiveDocument
  j = CLng(InputBox("How many copies to print?", "Print Copies"))
  For i = 1 To j
    With .CustomDocumentProperties("Counter")
      .Value = .Value + 1
    End With
    .Fields.Update
    .PrintOut
  Next
  .Save
End With
End Sub

в сочетании со свойством пользовательского документа с именем «Counter», значение которого вы изначально установили на 0. Если вам необходимо повторно установитьпо какой-то причине, просто измените соответствующее свойство пользовательского документа Counter.

Затем добавьте поле DOCPROPERTY, которое ссылается на свойство Counter.Вы можете сделать это через Insert | Quick Parts | Field или нажав Ctrl-F9, чтобы создать пару фигурных скобок (то есть '{}'), и набрав между ними 'DOCPROPERTY Counter', чтобы в итоге вы получили '{DOCPROPERTYСчетчик}.Вы можете использовать числовой переключатель изображения в поле DOCPROPERTY, чтобы отформатировать число для определенной длины (например, 4 цифры).В этом случае код поля будет отображаться как «{DOCPROPERTY Counter # 0000}».Когда вы закончите, нажмите F9, чтобы обновить поле.Затем вы можете скопировать и вставить поле в любое другое место, где вы хотите, чтобы оно также отображалось в вашем документе.

Если документы, к которым вы хотите применить это правило, используют общий шаблон, но этот шаблон не используется длядругие документы также, вы можете просто добавить макрос в этот шаблон;в противном случае вам может потребоваться добавить его в каждый из соответствующих документов и сохранить их в формате docm или doc.

...