写入custom.xml步骤:

  • 从Excel中读取数据并转换为xml格式的文本

  • 然后转换编码

  • 使用类模块CPKZip的功能,将custom.xml写入(CPKZip的写入功能下次介绍)

这里需要注意的是,如果某个Office文件没有custom.xml,除了要写入custom.xml之外,还必须在_rels/.rels文件后面,增加一条Relationship:

'写入customUI.xmlSub WriteCustomUI()    Dim arr()    Dim sXML As String        arr = Range("A1").CurrentRegion.Value    '单元格内容转换为xml文本    sXML = Array2XMLString(arr)    If VBA.Len(sXML) = 0 Then        MsgBox "请在单元格中设置customUI"        Exit Sub    End If    Dim bucs2() As Byte    bucs2 = sXML        '转换编码    Dim bUTF8() As Byte    Dim ret As String    ret = ToUTF8(bucs2, bUTF8)    If VBA.Len(ret) Then        MsgBox "编码转换出错:" & vbNewLine & ret        Exit Sub    End If        '检查是否设置了目标文件    If VBA.Len(FileName) = 0 Then        FileName = SelectFile()        If VBA.Len(FileName) = 0 Then Exit Sub    End If        '备份文件    If bBakFile Then        VBA.FileCopy FileName, FileName & ".备份" & VBA.Format(VBA.Now(), "yyyymmddhhmmss")    End If        Dim zip As CPKZip    Set zip = NewCPKZip()    '解析文件    ret = zip.Parse(FileName)    If VBA.Len(ret) Then        MsgBox ret        Exit Sub    End If        '判断是否存在CUSTOMUI_NAME,不存在的情况下还要更新rel    Dim fs() As String    fs = zip.Files()    Dim i As Long    For i = 0 To UBound(fs)        If fs(i) = CUSTOMUI_NAME Then            Exit For        End If    Next        Dim b() As Byte '记录_rels/.rels    If i = UBound(fs) + 1 Then        '添加rel           ret = zip.UnZipFile("_rels/.rels", b)        If VBA.Len(ret) Then            MsgBox ret            Exit Sub        End If                ret = FromUTF8(b, bucs2)        If VBA.Len(ret) Then            MsgBox ret            Exit Sub        End If        '将最后的替换为Id="VBAPKZIP" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/>        Dim str As String        str = bucs2        str = VBA.Left$(str, VBA.Len(str) - VBA.Len(""))        str = str & ""                bucs2 = str                ret = ToUTF8(bucs2, b)        If VBA.Len(ret) Then            MsgBox ret            Exit Sub        End If                ret = zip.AddFile("_rels/.rels", b)        If VBA.Len(ret) Then            MsgBox ret            Exit Sub        End If    End If        '添加customUI.xml    ret = zip.AddFile(CUSTOMUI_NAME, bUTF8)    If VBA.Len(ret) Then        MsgBox ret        Exit Sub    End If        Set zip = NothingEnd Sub

vba判断文件编码格式_VBA编写Ribbon Custom UI编辑器07——写入xml相关推荐

  1. vba判断文件编码格式_VBA 把目录下所有CSV文件的编码由UTF-8转换成ANSI

    展开全部 给你编个VBS版的,但又没有文件,没有测试,请上传个文件让我试下?32313133353236313431303231363533e4b893e5b19e31333335326232以下文件 ...

  2. vba判断文件编码格式_utf 8-保存用VBA编码的文本文件UTF-8

    utf 8-保存用VBA编码的文本文件UTF-8 我怎样才能从VBA将UTF-8编码的字符串写入文本文件,例如 Dim fnum As Integer fnum = FreeFile Open &qu ...

  3. vba判断文件编码格式_[VBA]Excel输出utf-8编码格式文件 使用WideCharToMultiByte

    'API 函数WideCharToMultiByte参数说明 '第一个参数:指定要转换成的字符集代码页,它可以是任何已经安装的或系统自带的字符集,你也可以使用如下所示代码页之一. '    CP_AC ...

  4. java 判断是否为cst格式_Java判断文件编码格式

    1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK. 按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理 ...

  5. C语言判断文件编码格式

    /*功能:实现文件编码格式的判断通过一个文件的最前面三个字节,可以判断出该的编码类型:ANSI: 无格式定义:(第一个字节开始就是文件内容)Unicode: 前两个字节为FFFE:Unicode bi ...

  6. python读取文件之前判断文件编码格式

    困扰 经常用pandas读取csv格式文件,pandas默认使用utf-8编码格式,但有的文件并非这种编码,虽然可以通过记事本打开文件,然后另存为,通过保存格式为utf-8格式,但是这种方式实在是太麻 ...

  7. vba判断文件是否存在的两种方法

    方法1. 用VBA自带的dir()判断,代码如下: 在 Microsoft Windows 中, Dir 支持多字符 (*)和单字符 (?) 的通配符来指定多重文件 Function IsFileEx ...

  8. 判断文件编码格式是否是UTF-8还是GBK格式

    编码格式判断封装 import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.Fi ...

  9. java获取文件编码_java如何获取文件编码格式

    1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK. 按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理 ...

  10. java判断文件写完_Java_判断文件是否写入完成

    /** * 等待文件(非目录)读写完毕,费时的操作,不要放在主线程 * * @param file 文件 */ private void waitForWirtenCompleted(File fil ...

最新文章

  1. 自学机器学习、深度学习、人工智能的学习资源集合
  2. mybatis传set参数
  3. spring boot错误: 找不到或无法加载主类
  4. 超过 1 亿 Android 用户的数据遭泄露!
  5. fullcalendar 上下月翻动事件_用期权做事件套利的黄金法则
  6. ❤️一分钟学会python条件语句❤️
  7. 神策分析 iOS SDK 代码埋点解析 | 数据采集
  8. H5调起手机端的摄像头
  9. 举个栗子~Tableau 技巧(225):制作事件节点时间轴
  10. 微信好友排行榜 最简教程 二
  11. 【阅读论文】第八章--多图像的质量增强--博-自动化眼底图像分析技术可筛查糖尿病患者的视网膜疾病
  12. Python例题8-3~8-4 T恤
  13. 行业elasticsearch容器化存储分离调研报告
  14. 我的春招实习总结:已拿字节,快手,美团Offer
  15. AI笔记: 数学基础之直线、圆和方程
  16. 原码,反码,补码的转换
  17. 'static_cast': cannot convert from 'double' to 'pcl::visualization::LookUpTableRepresentationPropert
  18. edge浏览器被百度占用了如何解决?
  19. JDK源码系列:子线程如何继承父线程上通过ThreadLocal绑定的数据
  20. vivado Non_project

热门文章

  1. 反转字符串的多种方式-经典面试题系列
  2. 五子棋小游戏(C++)
  3. 关于高速光耦6n137的使用总结_光耦合器应用电路的基本特性!-先进光半导体
  4. mybatis 依赖于jdbc_面试BAT问的最多的27道MyBatis 面试题(含答案和思维导图总结)...
  5. lede lcd4Linux,HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文...
  6. Gateway网关系列(二):SpringCloud Gateway入门实战,路由规则
  7. maven package,clean,install,compile命令
  8. iOS平台下闪退原因汇总(一):Ran out of trampolines of type 0/1/2 运行时间错误
  9. 【后台任务】在线程池线程上运行代码(6)
  10. Android四大组件每个组件的作用?它们都可以开启多进程吗?