Я новичок в VBA. Что мне нужно сделать, так это прикрепить ярлыки, как показано на рисунке для разных проектов. Такой текст [XXX….] В Word будет заменен макросом в Excel, который я нашел в Интернете (см. Ниже) в зависимости от проекта. Текст без скобок XXX… останется неизменным для каждой наклеенной этикетки. У меня есть такая часть процесса Excel, где размещается исходная информация: Пример
Однако у меня есть 2 особые ситуации / проблемы с текстом, которые я не могу решить:
- В зависимости от проекта, мне нужно разное количество наклеек. Иногда это 30, иногда 70. Итак, я хотел бы изменить код, который мне нужен, чтобы реализовать специальное поле в Excel, где я мог бы ввести точное значение меток, которые мне нужны. Как я могу это сделать?
- Самая большая красная буква [X] будет заменена на основе случайной последовательности A или B. Таким образом, мы имеем, например, 70 липких меток и случайная последовательность 1-A, 2-B, 3-A и т. Д. До 70 (но это может быть другая последовательность для следующего проекта). Как я могу это сделать?
Я не прошу код для этой задачи (но если вы так любезны, я буду очень признателен). По крайней мере, я хотел бы знать, как я могу сделать это в Excel VBA, чтобы получить ярлыки в Word.
Заранее спасибо.
Sub Generator()
Dim ObWord As Word.Application
Dim objDoc As Word.document
Dim file As String
Set ob1 = ActiveWorkbook.ActiveSheet
f_r = Selection.Row
stb = Selection.Column
f_c = Selection.CurrentRegion.Columns(Selection.CurrentRegion.Columns.Count).Column
path_f = ThisWorkbook.Path
file = Application.GetOpenFilename("Excel Files (*.docx;*.doc), *docx;*.doc")
If Dir(file) = Empty Then
Exit Sub
Else
Set ObjWord = CreateObject("Word.Application")
With ObjWord
.Visible = True
.Documents.Open Filename:=file
Set objDoc = .ActiveDocument
End With
With objDoc.Range
For j = 1 To f_c
isk_zn = ob1.Cells(1, j)
zamen_zn = ob1.Cells(f_r, j)
.Find.ClearFormatting
.Find.Replacement.ClearFormatting
With .Find
.Text = isk_zn
.Replacement.Text = zamen_zn
.Forward = True
.wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
.Find.Execute Replace:=2
Next j
FName = ob1.Cells(f_r, stb)
objDoc.SaveAs Filename:=path_f & "\" & FName
objDoc.Close
ObjWord.Quit
End With
Set objDoc = Nothing
Set ObjWord = Nothing
ob1.Activate
End If
End Sub