VBA,如何使用特殊字符压缩文件?

8
当我尝试压缩文件夹中的所有文件时,出现了错误。
    '''''Create empty Zip File
    NewZip (FileNameZip)
    Set oApp = CreateObject("Shell.Application")
    '''''Copy the files to the compressed folder

    oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(FolderName).items ''error here

错误: c:...\Jørgen.doc 无法压缩,因为其中包含不能在压缩文件夹中出现的字符,比如ø。您应该将此文件或目录重命名。

然而,如果我手动导航到文件并将其复制到zip文件夹中,就没有问题。有没有办法在我的vba代码中避免这个错误呢?


非常有趣的问题。+1。我猜这更多是一个系统级的问题,而不是与VBA有关的事情。但我并不100%确定。很想看看解决方案是什么。 - hnk
当你手动复制时,比如将文件拖放到压缩文件中,你在做什么? - Ravi Yenugu
是的,可拖放或复制粘贴。 - user3392351
1
@hnk - 如果这是一个系统问题,那我手动操作也不可能完成,对吧? - user3392351
我的意思是,系统可能不会像向操作GUI的用户授予权限一样,向调用它的应用程序授予权限。再说一次,这只是一个猜测。 - hnk
@user3392351:不是严格的答案,但我在使用VBA zip文件时遇到了很多问题,所以我改用了调用7zip的shell。 VBA方式存在缺陷,而且我在不同的机器上也遇到了很多问题。 使用7zip没有问题。 我已经尝试过您的文件名并且可以正常工作。 如果您有兴趣,这里是exe的下载地址(http://www.7-zip.org/download.html),这里是一些命令行参考(http://www.dotnetperls.com/7-zip-examples)。 更改您的例程需要投入时间,但7zip更加稳定。 - VBlades
2个回答

5

在 MacOS 中,这已经是一个标准功能,但在 Windows 10 中,您需要执行以下步骤:

在“开始”菜单搜索框中键入“区域”

  1. 打开“区域和语言控制面板”

  2. 点击顶部的“管理”选项卡

  3. 在“非 Unicode 程序的语言”部分,点击“更改系统区域设置…”

  4. 勾选“Beta: 使用 Unicode UTF-8 支持全球语言。”

  5. 重新启动 Windows 并重试。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接