如何在vba个unicode字符中使用
How to use in vba unicode characters
vba 编辑器有问题。查看了许多资源,并为字母 schwab“ə”尝试了许多正确的 unicode,但没有点“ı”,但没有一个能正确显示这些字母。试图改变字体 shrifts 但它给出了俄语字母的错误。所以我需要它们都作为路径显示在编辑器上,并且无法更改文件夹的路径。
我什至在 u+01DD、u+0259 的 vba 中尝试了字符宽,例如 &H259,1DD,但结果是问号或不同的字符。
u+0131 给出了带点的精确 i,不是我需要的。
任何人都知道如何在 vba?
中显示这些字符
FolderName = "C...ə(?)lsheth/folders/"
FileName =Dir(FolderName & "*.xls*")
Do While FileName <> ""
Debug.Print FileName
FileName = Dir()
Loop
给出错误 52,名称或号码错误
我认为问题在于,schwa 拉丁字母有很多版本,我需要使用(尝试)所有版本,因为我认为解决方案必须是其中之一。有谁知道如何将它们转换为在 VBA 的 chrW() 中使用?
清单在这里;我已经从 unicode 页面获取了它
0259 ə 拉丁文小写字母 SCHWA • 中间中央不圆唇元音 • 大写是 018F Ə • 变体大写形式 018E Ǝ 与 01DD ǝ → 01DD ǝ 拉丁文小写字母转为 e → 04D9 ә 西里尔小写字母 schwa
ChrW(399)
=Ə
ChrW(305)
= ı
这些字符不会显示在 VBE 中,但是当您将值赋给单元格时,Excel 将显示这些字符。
备选方案:
ChrW(601)
=ə
ChrW(618)
= ɪ(在Excel中用Calibri打印时看起来像无点i)
正如@Toddleson 已经提到的,Visual Basic 编辑器不支持 Unicode 字符。而且 Dir 函数也不支持它。但是,FileSystemObject 对象确实支持它。
这是一个示例,它使用 ChrW 函数 return 所需的 unicode 字符,然后使用 FileSystembObject 对象遍历指定文件夹中的每个文件,过滤 .xls 文件,打开文件,然后保存并关闭它。
Sub test()
Dim folderName As String
folderName = "C:\Users\Domenic\Desktop\D" & ChrW(&H259) & "nmark\" 'change the path accordingly
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folder As Object
Set folder = fso.getfolder(folderName)
Dim file As Object
Dim wb As Workbook
For Each file In folder.Files
If InStr(1, file.Name, ".xls", vbTextCompare) > 0 Then
Set wb = Workbooks.Open(file.Path)
'etc
'
'
With wb
.Save
.Close
End With
End If
Next file
Set file = Nothing
Set folder = Nothing
Set fso = Nothing
End Sub
vba 编辑器有问题。查看了许多资源,并为字母 schwab“ə”尝试了许多正确的 unicode,但没有点“ı”,但没有一个能正确显示这些字母。试图改变字体 shrifts 但它给出了俄语字母的错误。所以我需要它们都作为路径显示在编辑器上,并且无法更改文件夹的路径。 我什至在 u+01DD、u+0259 的 vba 中尝试了字符宽,例如 &H259,1DD,但结果是问号或不同的字符。 u+0131 给出了带点的精确 i,不是我需要的。 任何人都知道如何在 vba?
中显示这些字符FolderName = "C...ə(?)lsheth/folders/"
FileName =Dir(FolderName & "*.xls*")
Do While FileName <> ""
Debug.Print FileName
FileName = Dir()
Loop
给出错误 52,名称或号码错误 我认为问题在于,schwa 拉丁字母有很多版本,我需要使用(尝试)所有版本,因为我认为解决方案必须是其中之一。有谁知道如何将它们转换为在 VBA 的 chrW() 中使用? 清单在这里;我已经从 unicode 页面获取了它 0259 ə 拉丁文小写字母 SCHWA • 中间中央不圆唇元音 • 大写是 018F Ə • 变体大写形式 018E Ǝ 与 01DD ǝ → 01DD ǝ 拉丁文小写字母转为 e → 04D9 ә 西里尔小写字母 schwa
ChrW(399)
=Ə
ChrW(305)
= ı
这些字符不会显示在 VBE 中,但是当您将值赋给单元格时,Excel 将显示这些字符。
备选方案:
ChrW(601)
=ə
ChrW(618)
= ɪ(在Excel中用Calibri打印时看起来像无点i)
正如@Toddleson 已经提到的,Visual Basic 编辑器不支持 Unicode 字符。而且 Dir 函数也不支持它。但是,FileSystemObject 对象确实支持它。
这是一个示例,它使用 ChrW 函数 return 所需的 unicode 字符,然后使用 FileSystembObject 对象遍历指定文件夹中的每个文件,过滤 .xls 文件,打开文件,然后保存并关闭它。
Sub test()
Dim folderName As String
folderName = "C:\Users\Domenic\Desktop\D" & ChrW(&H259) & "nmark\" 'change the path accordingly
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folder As Object
Set folder = fso.getfolder(folderName)
Dim file As Object
Dim wb As Workbook
For Each file In folder.Files
If InStr(1, file.Name, ".xls", vbTextCompare) > 0 Then
Set wb = Workbooks.Open(file.Path)
'etc
'
'
With wb
.Save
.Close
End With
End If
Next file
Set file = Nothing
Set folder = Nothing
Set fso = Nothing
End Sub