英文:
Cannot create a file if filename has Cyrillic characters in macOS with VBA (MS Word for Mac)
问题
Here's the translated content without the code parts:
刚刚从PC切换到Mac,正在准备好一切,包括我的旧VBA程序。
问题是,我无法创建一个文件名包含一些西里尔字符的文本文件。
自从我从Windows切换到Mac后,这个VBA代码(MS Word)不再起作用:
我收到了一个Visual Basic运行时错误 '75':“路径/文件访问错误”。
如果我这样说,它就可以正常工作:
有没有办法解决这个问题?不幸的是,我已经了解到,文件系统对象只支持Windows,而我使用的是macOS(默认语言=俄语)。因此,我不知道除了使用“打开”语句之外,还有什么方法可以创建文本文件。
我还尝试将StrConv函数应用于文件名,但也没有帮助。
英文:
Just recently moved from PC to Mac and getting the things ready, including my old VBA programs.
The issue is that I cannot create a text file which filename has some Cyrillic characters.
This VBA code (MS Word) does not work anymore since I moved from Windows to Mac:
Dim fname As String
fname = db_path + "кириллица-test123.txt"
Close #1
Open fname For Output As #1
Print #1, "Hello!"
Print #1, "Привет!"
Close #1
I have got a Visual Basic Run-time error '75': "Path/File access error".
It works fine though, if I say:
frame = db_path + "test.123.txt"
Any idea how to sort it out? Unfortunately, as I have learned already, File System Objects are only supported on Windows and I am on macOS (default language = Russian). Thus I do not know any way to create text file rather than use the "Open" statement.
I tried also to apply StrConv function to the filename but it did not help either.
答案1
得分: 1
Can't provide a solution to this right now, but...
主要问题似乎是在 Mac 上,旧的内置 VBA 文件命令只识别 8 位字符代码。
我不能确定没有重新配置我的 Mac,这会如何影响那些使用 Cyrillic 脚本语言的人。
在这里(在英语设置上),它会影响我在 VB 编辑器中看到的内容(即所有 Cyrillic 字符都显示为“?”)。这是预期的。
但是,如果我将您的文件名更改为一个单一的 Cyrillic-Њ 字符,可以使用以下代码:
fname = db_path + Chr(&H400) & "-test123.txt"
我会收到“无效的过程调用或参数”错误。
但是,如果我使用 2 字节的 UTF8 等效值 &H400,如下所示:
fname = db_path + Chr(208) & Chr(138) & "-test124.txt"
...会创建一个以 &H400 字符开头的文件,正如您希望的那样。
此外,使用 Chr(208) & Chr(138) 将相同的字符写入文件似乎有效。
没有坚实的解决方案,但也许值得探索,因为我现在要离开几天。
英文:
Can't provide a solution to this right now, but...
The main problem here seems to be that on Mac, the old built-in VBA File commands only recognise 8 bit character codes.
What I can't tell without a lot of reconfiguration of my Mac is exactly how that affects someone who has a Mac set up for a Cyrillic script language.
Here (on an English language set-up) it affects what I see in the VB Editor (i.e. all the Cyrillic characters appear as "?"). That's expected.
But let's say I change your file name to a single Cyrillic-Њ character using this:
fname = db_path + Chr(&H400) & "-test123.txt"
I get an "invalid procedure call or argument" error.
But if I use the 2-byte UTF8 equivalent of &H400, like this...
fname = db_path + Chr(208) & Chr(138) & "-test124.txt"
...a file is created with a name starting with the &H400 character as you might hope.
further, using Chr(208) & Chr(138) to write the same character to the file seems to work.
No solid ground for a solution there, but perhaps something to explore as I am away for a few days now.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论