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

news2024/11/25 6:36:50

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 = True

    Selection.SetRange 0, 0 '回到文首
 
    Do While .Execute
        With Selection
            .Copy '复制MathML代码
            .PasteAndFormat (WdRecoveryType.wdFormatPlainText) '无格式粘贴MathML代码
        End With
        i = i + 1 '转换公式数+1
    Loop
End With

Application.ScreenUpdating = True '开启屏幕刷新
'MsgBox "新转换成功" & i & "个公式,如数字偏大,建议重复运行"

k = k + i - m

If (m > 10 And i - m > 0) Then
       Call MathML2OMML(k)  '只要失败数超过10,且有新成功的,就重复运行,

Else
    a = MsgBox("最后一次运行转换失败" & m & "个公式,是否重复运行", vbYesNo)
   
    If a = vbYes Then
        Call MathML2OMML(k)  '选择是,则重复运行
    Else
        MsgBox ("共新转换成功" & k & "个公式")
        Exit Sub
    End If

End If

'Exit Sub

ErrorHandler:       ' 错误处理
  j = j + 1       '错误出现次数加一
   If j < 100 Then
    Resume       ' 100次以内直接忽略错误,继续执行
   Else
     j = 0    '防止死循环,跳过一行后,继续执行知道100次错误出现
     'MsgBox "运行出错"
     m = m + 1
     Resume Next
   End If
  

End Sub

Sub 公式转换()
Call MathML2OMML(0)
End Sub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/701700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何保证缓存与数据库的双写一致性?

分析&#xff1f; 你只要用缓存&#xff0c;就可能会涉及到缓存与数据库双存储双写&#xff0c;你只要是双写&#xff0c;就一定会有数据一 致性的问题&#xff0c;那么你如何解决一致性问题&#xff1f; 一般来说&#xff0c;如果允许缓存可以稍微的跟数据库偶尔有不一致的情…

合同数智化如何助力地产企业实现变革“突围”?

从稳步发展到求新求变&#xff0c; 数智化成破局关键 近年来&#xff0c;随着宏观经济政策调整&#xff0c;在中央房住不炒的大基调下&#xff0c;房地产逐步回归居住属性。在这样的大背景下&#xff0c;针对不同类型的房地产企业&#xff0c;国家出台了不同的数字化转型指导文…

【Bio】头骨组成,及其剖切面

在总结这篇文章之前&#xff0c;我看过了一本书《认知觉醒》&#xff0c;里边有提到一个观点&#xff1a;我们不仅要去获取新知识&#xff0c;也要注重对新知识的“缝接”&#xff0c;这个过程也就是关联。这样&#xff0c;如沙粒般的新知识才能关联到一起&#xff0c;达到聚沙…

go get google.golang.org/grpc报错

win10环境&#xff0c;报错完整内容如下 go get google.golang.org/grpc: module google.golang.org/grpc: Get https://proxy.golang.org/google.golang.org/grpc/v/list: dial tcp [2404:6800:4012:3::2011]:443: connectex: A connection attempt failed because the conne…

Spring 的依赖注入(DI)

前言 欢迎来到本篇文章&#xff0c;书接上回&#xff0c;本篇说说 Spring 中的依赖注入&#xff0c;包括注入的方式&#xff0c;写法&#xff0c;该选择哪个注入方式以及可能出现的循环依赖问题等内容。 如果正在阅读的朋友还不清楚什么是「依赖」&#xff0c;建议先看看我第一…

34岁上岸,我终于圆了自己的考研梦

​ 大家好&#xff0c;我是独孤风&#xff0c;一位曾经的港口煤炭工人&#xff0c;目前在某国企任大数据负责人&#xff0c;公众号大数据流动的作者。 ​ 虽然告诉自己要平静&#xff0c;但是当接到EMS录取通知书的那一刻&#xff0c;眼眶还是忍不住有些湿润。今年正好是是东北…

SpringBoot源码分析(1)--@SpringBootApplication注解使用和原理/SpringBoot的自动配置原理详解

文章目录 前言主启动类的配置1、SpringBootApplication注解1.1、SpringBootConfiguration注解验证启动类是否被注入到spring容器中 1.2、ComponentScan 注解ComponentScan 注解解析与路径扫描 1.3、EnableAutoConfiguration注解1.3.1、AutoConfigurationPackage注解1.3.2、Impo…

【MySQL】事务及其隔离性/隔离级别

目录 一、事务的概念 1、事务的四种特性 2、事务的作用 3、存储引擎对事务的支持 4、事务的提交方式 二、事务的启动、回滚与提交 1、准备工作&#xff1a;调整MySQL的默认隔离级别为最低/创建测试表 2、事务的启动、回滚与提交 3、启动事务后未commit&#xff0c;但是…

HTB-Pilgrimage

HTB-Pilgrimage 信息收集80端口立足emily -> root 信息收集 80端口 扫描目录发现存在.git。 通过scrabble获取网站的git文件。 有如下这些文件。 在index.php中使用了magick来处理图像。 正好我们靠git弄了一个&#xff0c;查看一下版本。 这个版本似乎有些不得了的东西…

Quiz 9: Dictionaries | Python for Everybody 配套练习_解题记录

文章目录 课程简介Quiz 9: Dictionaries 单选题&#xff08;1-11&#xff09;编程题Exercise 9.4 课程简介 Python for Everybody 零基础程序设计&#xff08;Python 入门&#xff09; This course aims to teach everyone the basics of programming computers using Python.…

conda的多线程下载工具mamba(解决Anaconda3 solving environment 巨慢的方法)

solving environment为什么会越来越慢&#xff1f; 根据原博的解释以及我查阅的相关资料&#xff0c;这是由于conda在新安装一个包或者更新包时需要搜索当前环境中所有的包的依赖空间&#xff0c;以找到满足所有依赖项的版本&#xff0c;随着用户安装的包越来越多&#xff0c;…

C#核心知识回顾——1.结构体、构造函数、GC、成员属性、索引器

1.结构体&#xff1a; 在 C# 中&#xff0c;结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。例如我定义了一个结构体&#xff0c;它有两个变量&#xff0c;创建一个这个类型的结构体&#xff0c;通过一个变量名调用多个变量&#xff0c;这些变量可…

Layui时间范围选择器,添加【本周、本月、本季度、本年等常用时间快捷键】

文章目录 1. 界面实现2. JS具体实现2.1 第一种实现2.2 第二种实现 1. 界面实现 <input id"Date_select" type"text" class"form-control" placeholder"请选择时间范围" style"border-radius: 4px;" /><input id&qu…

RuoYi-Vue Swagger 上传文件接口

前言 RuoYi-Vue&#xff1a; v3.8.5swagger 1.6.2 &#xff08;https://github.com/swagger-api/swagger-core, https://gitee.com/mirrors/swagger-core&#xff09; Swagger 上传接口定义 ApiOperation(value "图片上传") PostMapping(value "/upload&qu…

SpringBoo集成MongoDB

一、集成简介 spring-data-mongodb提供了MongoTemplate与MongoRepository两种方式访问mongodb&#xff0c;MongoRepository操作简单&#xff0c;MongoTemplate操作灵活&#xff0c;我们在项目中可以灵活适用这两种方式操作mongodb&#xff0c;MongoRepository的缺点是不够灵活…

OpenMMLab-AI实战营第二期——相关3. RGB语义分割标注图像转为Gray格式的mask

文章目录 1. 转换代码1.1 查看原始图像1.2 转换1.3 cv::IMREAD_GRAYSCALE与CV_BGR2GRAY结果不一致1.3.1 现象描述1.3.2 原因1.3.3 推荐做法 1.4 CV_BGR2GRAY和CV_RGB2GRAY不一致 2. macOS上查看mask&#xff08;使用默认的预览&#xff09; 1. 转换代码 找到了一个语义分割的数…

rc表格卡方检验

一、案例介绍 某医院用三种穴位针刺治疗急性腰扭伤&#xff0c;现在想比较三种穴位针刺效果有无差别&#xff0c;结果汇总如下表&#xff1a; 二、问题分析 本案例想比较三种穴位针刺效果有无差别&#xff0c;可以使用RxC卡方检验进行分析。 通常情况下&#xff0c;共有三种…

uniapp项目 封装一个饼图组件 并且修改显示项的排列方式

需求如下: 真实数据渲染后的完成效果如下: 记录一下代码: <template><view><view style"height: 600rpx;"><l-echart ref"chart" finished"init"></l-echart></view></view> </template><…

【面试】一文知晓---拦截器和过滤器的区别

目录 背景关系图 拦截器和过滤器的区别实操1.过滤器1.1HttpServletRequestWrapper1.2 OncePerRequestFilter1.3 配置 2.拦截器2.1登录拦截2.2配置 3.监听器 三、注意1.静态资源问题2.登录拦截ajax重定向 总结 背景 关系图 然后具体执行流程如下&#xff1a; 拦截器和过滤器的区…

IDEA创建一个Servlet项目(tomcat10)

一、创建maven项目 org.apache.maven.archetypes:maven-archetype-webapp 二、增加Servlet依赖 tomcat9及以前依赖 <!--加入servlet依赖&#xff08;servlet的jar&#xff09;--><dependency><groupId>javax.servlet</groupId><artifactId>ja…