excel - 随机序列的粘性标签
问题描述
我是 VBA 新手。我需要做的是粘性标签,就像不同项目的图片所示。Word 中的此类文本 [XXX….] 将被我在 Internet 中找到的 Excel 中的宏替换(见下文),具体取决于项目。对于每个粘性标签,没有括号 XXX... 的文本将保持不变。我在放置源信息的过程中有这样的 Excel 部分:示例
但是,我有两个无法解决的文本特殊情况/问题:
- 根据项目,我需要不同数量的粘性标签。有时是 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
解决方案
您不需要 VBA 从 Excel 中的数据生成标签,因为这是一个内置功能。
以下是有关如何操作的信息:
无论您尝试打印的是否是实际地址,过程都是相同的。
至于您的代码,我修复了缩进,因此更容易看到发生了什么。我建议Option Explicit
在 [every] 模块 [always] 的顶部添加该行,以帮助“强制”您正确声明和处理变量、对象等。
在您的代码中,未声明以下变量:
ob1, f_r, stb, f_c, path_f, file, ObjWord, j, isk_zn, zamen_zn, FName
...并且至少有一个拼写错误(ObjWord
vs ObWord
)。
也可以看看:
...和教程:
推荐阅读
- f# - 使用 Moq 如何访问返回的显式类型的属性
- common-lisp - 使用 ~/quicklisp/local-projects 中的包,它使用 asdf:require-system 而不是 ql:quickload 加载
- r - 每次向量中的项目与某个类别相关时,我可以使用 R 获取类别计数吗?
- android - 在 Android 手机上运行应用程序时出现此错误
- react-native - 当变换缩放反应本机时,动画视图是锯齿状的
- vba - 当某个日期大于或等于另一个日期时,如何创建弹出消息?
- rust - Rust 函数签名导致:错误:预期的 `::`, found `,`
- asp.net-core - 如何使用 Windows 身份验证静默登录?
- python - 生成具有重复模式的序列的代码
- c++ - 二维位集和方括号运算符