随机序列的粘性标签

时间:2018-11-02 06:42:06

标签: excel vba ms-word

我是VBA的新手。我需要做的是粘贴标签,如图所示,用于不同的项目。 Word中的此类文本[XXX…。]将由Excel(根据项目在Internet上找到)中的宏替换(请参见下文)。对于每个粘性标签,不带方括号XXX…的文本将保持不变。我在放置源信息的过程中有这样的Excel部分:Example

但是,我有2种特殊情况/问题,但无法解决:

  1. 根据项目,我需要使用不同数量的粘性标签。有时是30,有时是70。因此,我想修改代码,我必须在Excel中实现一个特殊字段,在其中可以输入所需标签的确切值。我该怎么办?
  2. 最大的红色字母[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

1 个答案:

答案 0 :(得分:-1)

您不需要VBA即可从Excel中的数据生成标签,因为这是内置功能。<​​/ p>

以下是有关如何操作的信息:

无论您实际上要打印的地址是什么,该过程都是相同的。


对于您的代码,我修复了缩进,以便更轻松地了解正在发生的情况。我建议[始终]在[每个]模块顶部添加行Option Explicit,以帮助“强制”正确声明和处理变量,对象等。

在您的代码中未声明以下变量:

ob1, f_r, stb, f_c, path_f, file, ObjWord, j, isk_zn, zamen_zn, FName

...并且至少一个拼写错误(ObjWordObWord)。

另请参见:

...和教程