我是VBA的新手。我需要做的是粘贴标签,如图所示,用于不同的项目。 Word中的此类文本[XXX…。]将由Excel(根据项目在Internet上找到)中的宏替换(请参见下文)。对于每个粘性标签,不带方括号XXX…的文本将保持不变。我在放置源信息的过程中有这样的Excel部分:Example
但是,我有2种特殊情况/问题,但无法解决:
我不要求执行该任务的代码(但是,如果您是如此友善,我将不胜感激)。至少我想知道如何在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
答案 0 :(得分:-1)
您不需要VBA即可从Excel中的数据生成标签,因为这是内置功能。</ p>
以下是有关如何操作的信息:
无论您实际上要打印的地址是什么,该过程都是相同的。
对于您的代码,我修复了缩进,以便更轻松地了解正在发生的情况。我建议[始终]在[每个]模块顶部添加行Option Explicit
,以帮助“强制”正确声明和处理变量,对象等。
在您的代码中未声明以下变量:
ob1, f_r, stb, f_c, path_f, file, ObjWord, j, isk_zn, zamen_zn, FName
...并且至少一个拼写错误(ObjWord
与ObWord
)。
另请参见:
...和教程: