VBA for Word 中的查找/替换字符限制解决方法

2024-03-25

我有一个基本的 vbscript,可以在 microsoft word 中查找和替换,但是我无法超过一定数量的字符(我认为是 256 个)。我想知道是否有人知道解决这个问题的方法。以下是我正在使用的脚本示例:

Sub FixedReplacements()
Dim Rng As Range
Dim SearchString As String
Dim EndString As String
Dim Id As String
Dim Link As String

Rng.Find.ClearFormatting
Rng.Find.Replacement.ClearFormatting
With Rng.Find
    .Text = "" 'find text won't exceed character limitation'
    .Replacement.Text = "" 'replace text won't exceed character limitation'
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Rng.Find.Execute Replace:=wdReplaceAll   

要查找太长的文本,请搜索字符串的前 255 个字符,然后将找到的范围扩展到其他字符。或者将字符串分解为 255 个字符的“位”并连续搜索它们(始终将第一个找到的范围扩展到每个后续找到的范围的终点)。

可以使用太长的文本进行替换,但不能使用Replace。相反,在循环中将字符串值分配给找到的范围。 (注意Wrap需要设置为wdFindStop。) 例子

Dim bFound As Boolean
Dim replacementText as String
Dim findText as String, excessText as String
Dim excessChars as Long, bTooLong as Boolean

findText = "Text to be found..."
If Len(findText) > 255 Then
   bToolLong = True
   excessText = Mid(findText, 256)
   excessChars = Len(excessText)
   findText = Left(findText, 255)
End If
replacementText = "some long string greater than 256 characters"
With Rng.Find
    .Text = findText
    '.Replacement.Text = "" 'replace text won't exceed character limitation'
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
bFound = Rng.Find.Execute
Do While bFound
    If bTooLong Then
      Rng.End = Rng.End + excessChars
      'Possible to check findText against the range
      'If Rng.Text <> findText Then 'do something
    End If
    Rng.Text = replacementText
    Rng.Collapse wdCollapseEnd
    bFound = Rng.Find.Execute
Loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBA for Word 中的查找/替换字符限制解决方法 的相关文章

  • 获取SSAS立方体上次处理时间

    在 Excel 中 我与数据多维数据集建立 Analysis Services 连接 我希望能够通过向用户显示最后一次多维数据集处理时间发生的时间来向用户展示数据的最新情况 在 SQL Server Management Studio SS
  • 在 Excel VBA 中使用 getElementsByClassName

    下面是我正在使用的代码 但我收到此错误 对象不支持此属性或方法 使用时getElementsByClassName 我正在使用的新 2 变量没有被填充 请帮助我 如果我做错了 请告诉我 Sub PopulateTasks Variable
  • 如何在vba中向形状添加点或节点?

    I am trying to add points or nodes to a shape so instead of having 4 points I can have more 这是我添加形状的代码 Set shap2 w Shape
  • 将 vbCrLf 应用于文本框的内容

    我在 Excel vba 项目中有一个用户窗体 在设计时它是空的 在表单初始化事件中 我有以下代码 Private Sub UserForm Initialize txtSQL value SELECT MyName ColY vbCrLf
  • VBA - 循环遍历表单上的控件并读取值

    我想循环遍历表单上的控件并读取值 但是 Value 和 Checked 属性不可用 我的问题是 当我循环访问控件 在本例中为复选框 时 如何读取它们的值 Dim Ctrl as Control For Each Ctrl In frmMai
  • VBA:使用求解器时出现运行时错误 1004

    我是 VBA 新手 在宏中使用求解器时遇到一些问题 我将一个宏分配给 Excel 中的命令按钮 它们完美地计算了所有内容 但最后也出现了一个丑陋的错误 运行时错误 1004 对象 application 的方法计算失败 Sub serieu
  • 当单元格值和复选框更改时更改工作表

    我有一本包含多个工作表的工作簿 我有一个菜单页面 工作表 其中包含多个用户选择 输入新订单 更新订单等 每个选项旁边都有一个复选框 根据选中的复选框 单元格F4 F21改变自0 to 1并且 细胞B1更改我想要去的工作表的名称 我的主菜单工
  • VBA:新集合 -> 模块不是有效类型

    我尝试使用集合作为函数的一部分 但是在编译时不断收到错误 模块不是有效类型 即使该函数只是定义一个集合 我也会得到相同的结果 Function CountUniqueTags Dim table As Collection Set tabl
  • 无法在函数内将数据写入 Excel 2007/2010 中的 VBA 单元格

    我想通过 VBA 设置单元格的值 我用谷歌搜索了一下 看到了一些解决方案 Sheets SheetName Range A1 value someValue Sheets SheetName Cells 1 1 value someValu
  • 无法访问 VBA 中的 COM 公开方法

    我正在尝试在 VBA 中访问 COM 公开的方法 Problem 我看到所有默认方法 例如GetHashCode GetType and ToString 在 VBA 中但是not那些是 COM 接口的一部分并且专门编写为 COM 可见的
  • 索引多列并匹配不同的值,返回跨列的唯一值列表

    我已经在漫长的几周内广泛寻找解决我的问题的方法了 我提出了一个部分有效的解决方案 我将其包含在底部 供那些可能知道如何修改 扩展它们以解决问题的人使用 这就是我想要完成的任务 以下描述参考此屏幕截图https i stack imgur c
  • 通过 Office API 将多个 Word 文档保存为 HTML

    我有大量的Word文档需要解析 由于它们都是从同一个模板创建的 我认为最好的方法是将它们保存为 HTML 文件并解析 HTML 本身 虽然将单个 Word 文档保存为 HTML 相当容易 但我还没有找到从 Word 内部执行批量过程的方法
  • 将数据从 Excel 导出到 Outlook

    我已经用 Excel 起草了一封电子邮件 其中填充了数据表中的信息 单元格 A1 到 A4 包含 嗨 希望你做得好 和消息 等等 A5到H10有一个包含信息的表格 A11到A30有类似 期待您的回复 的电子邮件内容 我只想复制 A1 A4
  • 数据透视和运行时错误 1004:应用程序定义或对象定义的错误

    我对宏和 VBA 编码很陌生 我正在尝试创建一个非常简单的宏 它从包含 33 列的表中获取数据并将其转换为数据透视表 只有最后 3 列 31 32 33 包含数字 我需要将其显示在枢轴上 因为我想比较当前月份 上个月以及逐月的变动 到目前为
  • 使用 VBA 在另一个 Access 实例中打开特定窗体

    所以我在这里四处查看并找不到我的问题的答案 至少不完全是 案例如下 我在 DBase1 中 想要单击一个按钮并在单独的访问实例中打开 DBase2 中的 NeuSteckbrief 表单 我设法使用以下代码在单独的实例中打开 DBase2
  • VBA Office2010 Shapes.PasteSpecial 失败

    我在将 VBA 代码从 Office2003 迁移到 Office2010 时遇到问题 我想将单元格 Excel 的文本复制到Powerpoint Office2003生成了一个新的文本框 文本样式与Excel中相同 现在我的代码在 Off
  • Excel VBA 选择.替换,如果替换,则将文本放在替换行的 a 列中

    我有一些宏 例如 Columns F M Select Selection Replace What Replacement LookAt xlPart SearchOrder xlByRows MatchCase True SearchF
  • 元素不存在,尽管它具有 ID 属性

    在 selenium excel vba 中 我试图了解有关如何处理 CSS 选择器的更多信息 我很想知道 因为在检查带有 ID 的元素并运行代码时 我收到一条消息 指出未找到该元素 这是到目前为止的代码 Private bot As Ne
  • Python:使用 python 运行 Excel 宏

    我需要通过 python 运行 Excel 宏 但总是收到以下错误 result self oleobj InvokeTypes dispid LCID wFlags retType argTypes args pywintypes com
  • 在 VBA 循环中导出查询以根据字符串值选择数据

    我有一个名为 TEST 的表 下面的代码根据 Territory 列中的唯一值循环导出查询 该代码应该根据 Territory 列中的唯一值将数据导出到 Excel 文件 因此每个 Territory 值都有它自己的文件 我在设置 sql

随机推荐