MathType公式批量转换为Word自带公式的VBA实现及error ‘4198‘ 处理

news/2024/11/22 9:04:43/

VBA 纯新手,程序可能比较傻,大家将就看。有改进建议,欢迎留言

参考链接:
1、2种办法把MathType公式转换为Word公式

2、一键批量将mathtype公式转换成word自带公式-vba/vbnet_mathtype批量转word自带_一路向前的小Q的博客-CSDN博客

本文主要解决两个新问题:

第一个是:上面两个链接中的程序均会报错:
Run-time error '4198'
Command Failed

但继续执行,程序可以获得正确结果。下面的新程序进行了报错处理。
第二个是:原始文档中会存在一些错误,导致转换失败。新程序对此也进行了处理。

执行步骤:

第一步:还是先将mathtype转换为mathml2,按图操作,注意几个复选框的处理。

 第二步:

复制一段mathml2公式,并粘贴。如果是第一次粘贴,会出现如下图所示的提示,请选择“创建一个OMML公式”,并勾选“记住我的选择”,下次粘贴就不会出现这样的提示。

第三步:自动化程序实现

Sub MathML2OMML(k As Integer)
'用k记录总的转换成功数。
On Error GoTo ErrorHandler   ' 启用错误处理
Application.ScreenUpdating = False '关闭屏幕刷新
Dim i, j, m As Integer
i = 0  '记录转换的公式总数,失败的也会记录在内
j = 0  '防止死循环用的,记录错误次数
m = 0  '记录转换失败次数With Selection.Find   '设置查找表达式,查找转换后的MathML代码.ClearFormatting.Replacement.ClearFormatting.Text = "\<\!-- MathType*5\@ --\>^13" '通配符选择公式,注意mathtype转换时,最后两个复选框要选中.Replacement.Text = "".Forward = True.Wrap = wdFindStop.Format = False.MatchWildcards = TrueSelection.SetRange 0, 0 '回到文首Do While .ExecuteWith Selection.Copy '复制MathML代码.PasteAndFormat (WdRecoveryType.wdFormatPlainText) '无格式粘贴MathML代码End Withi = i + 1 '转换公式数+1Loop
End WithApplication.ScreenUpdating = True '开启屏幕刷新
'MsgBox "新转换成功" & i & "个公式,如数字偏大,建议重复运行"k = k + i - mIf (m > 10 And i - m > 0) ThenCall MathML2OMML(k)  '只要失败数超过10,且有新成功的,就重复运行,Elsea = MsgBox("最后一次运行转换失败" & m & "个公式,是否重复运行", vbYesNo)If a = vbYes ThenCall MathML2OMML(k)  '选择是,则重复运行ElseMsgBox ("共新转换成功" & k & "个公式")Exit SubEnd IfEnd If'Exit SubErrorHandler:       ' 错误处理j = j + 1       '错误出现次数加一If j < 100 ThenResume       ' 100次以内直接忽略错误,继续执行Elsej = 0    '防止死循环,跳过一行后,继续执行知道100次错误出现'MsgBox "运行出错"m = m + 1Resume NextEnd IfEnd SubSub 公式转换()
Call MathML2OMML(0)
End Sub


http://www.ppmy.cn/news/633575.html

相关文章

Jupyter Notebook左侧大纲目录设置

在 Jupyter Notebook 中&#xff0c;可以通过安装jupyter_contrib_nbextensions插件来实现在页面左边显示大纲的功能。 1. 安装插件 pip install jupyter_contrib_nbextensions 1.1 如何安装 windows cmd小黑裙窗口&#xff1b; 1.查看目前安装了哪些库 conda list 2. 使用…

500能不能配个玩英雄联盟的电脑?

500元是必须可以配一个英雄联盟主机的&#xff0c;并且预算还有余&#xff0c;但是这个价位下只能选择二手配件&#xff0c;就以我回答你的时间点为例&#xff0c;我帮你500元内配出一台可玩lol的主机。 这个价位下我选择x58平台&#xff0c;在二手平台找到了一套板u内存三件套…

联盟显示服务器异常,玩英雄联盟ping值异常,我们如何检测网络问题,还是服务器?...

问题出现 我们在玩英雄联盟的时候&#xff0c;有时会出现卡PING的现象&#xff0c;出现的问题就是&#xff1a;比如横移&#xff0c;打的时候看不到人&#xff0c;打完了才看到动&#xff0c;这时你可以看一下右上角&#xff0c;如果没有可发按CTRLF4出现。PING有一定的显示&am…

英雄联盟用什么语言编写?C/C++ yyds

一直有读者咨询C/C可以干什么&#xff0c;今天这篇文章分享一下具体应用领域。 1、操作系统 Microsoft Windows &#xff1a;汇编 -> C语言 -> C Linux &#xff1a;C语言 Apple MacOS &#xff1a; 主要为C语言&#xff0c;部分为C。 备注&#xff1a;之前用的语言比…

.vscode下面几个json文件的详细说明

.vscode/launch.json 文件是用于配置调试器的设置文件。在这个文件中&#xff0c;您可以指定调试器的类型、启动配置和调试选项。您可以使用 JSON 格式来编写 launch.json 文件。 下面是一个示例 launch.json 文件的结构&#xff1a; {"version": "0.2.0"…

element form表单触发校验

未操作情况下&#xff0c;表单触发校验&#xff0c;此时需要清除这一项 一定要在数据处理完后在进行清除校验&#xff0c;否则会不生效 this.form result;if (!this.form.item5List) {this.$nextTick(() > {this.$refs.form.clearValidate(item5List)})}

呼伦贝尔旅行感受

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-fam…

维修计算机起名字,电脑维修店名字好听有财气

中速电脑维修店 安洁利电脑维修店 娇晖电脑维修店 子林电脑维修店 科灵电脑维修店 洋江电脑维修店 祥瑞达电脑维修店 贵客电脑维修店 驰顺电脑维修店 奥捷电脑维修店 傲冠电脑维修店 铭浩电脑维修店 尼立电脑维修店 原旭电脑维修店 佳惠电脑维修店 启优电脑维修店 天马电脑维修…