在 VBA 中使用 Unicode 文件名(使用 Dir、FileSystemObject 等)

2023-12-14

I am 迭代通过文件夹中的文件(这意味着我不知道文件夹中的名称),并且有一个带有波兰语的文件ł特点。

The Dir函数将其转换为l这意味着以后无法找到该文件名。我已将要为其分配 dir 值的 var 声明为字符串。

我也尝试过 FSO 和 getfolder 也有同样的问题。

我还注意到文件对话框(设置为文件夹选择模式)也转换了上面的字符。


这是一个错误,还是可以解决的问题?


听起来您被以下事实误导了:VBA本身支持 Unicode 字符,VBA开发环境才不是。 VBA 编辑器仍然使用基于 Windows 中区域设置的旧“代码页”字符编码。

当然FileSystemObject et. al.事实上,确实支持文件名中的 Unicode 字符,如以下示例所示。包含三个纯文本文件的文件夹

文件名:1_English.txt
内容:London is a city in England.

文件名:2_French.txt
内容:Paris is a city in France.

文件名:3_Połish.txt
内容:Warsaw is a city in Poland.

以下VBA代码...

Option Compare Database
Option Explicit

Sub scanFiles()
    Dim fso As New FileSystemObject, fldr As Folder, f As File
    Set fldr = fso.GetFolder("C:\__tmp\so33685990\files")
    For Each f In fldr.Files
        Debug.Print f.Path
    Next
    Set f = Nothing
    Set fldr = Nothing
    Set fso = Nothing
End Sub

...在立即窗口中产生以下输出...

C:\__tmp\so33685990\files\1_English.txt
C:\__tmp\so33685990\files\2_French.txt
C:\__tmp\so33685990\files\3_Polish.txt

请注意,Debug.Print语句将转换为ł字符到l因为VBA开发环境无法显示ł使用我的 Windows 区域设置(美国英语)。

但是,以下代码确实成功打开了所有三个文件......

Option Compare Database
Option Explicit

Sub scanFiles()
    Dim fso As New FileSystemObject, fldr As Folder, f As File, ts As TextStream
    Set fldr = fso.GetFolder("C:\__tmp\so33685990\files")
    For Each f In fldr.Files
        Set ts = fso.OpenTextFile(f.Path)
        Debug.Print ts.ReadAll
        ts.Close
        Set ts = Nothing
    Next
    Set f = Nothing
    Set fldr = Nothing
    Set fso = Nothing
End Sub

... 显示

London is a city in England.
Paris is a city in France.
Warsaw is a city in Poland.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 VBA 中使用 Unicode 文件名(使用 Dir、FileSystemObject 等) 的相关文章

  • 在 Django admin 中保存包含非 ASCII 字符的 ImageField 时出现 UnicodeEncodeError

    我试图在 django admin inlines 中上传图像文件 并在尝试上传文件名包含非 ascii 字符的文件时收到 UnicodeEncodeError File usr local lib python2 6 site packa
  • 两个表中两个字段的总和

    我的数据库中有四个表 如下所示 表格发票 invcid customerid invoicedate tblInvc详细信息 ID invcid item itemprice itemquantity tblPay payid invcid
  • 在Excel中过滤后打印可见区域的宏

    我有一个根据过滤表的宏column A价值观 现在我想打印only过滤器后的可见行 但遗憾的是它打印了所有行 包括过滤期间隐藏的顶部和底部行 在我的工作表中 有来自的数据Column A I 但打印区域只能是Columns C I 过滤后的
  • c#.net MS Access 数据库,未安装 Access [重复]

    这个问题在这里已经有答案了 是否可以 我尝试过谷歌 但我一定是搜索了错误的关键词并且没有得到答案 我有一个仅由 2 3 人使用的小型应用程序 我想将其数据存储在数据库中 我无法安装任何 SQL 服务器 因此我认为访问将是最好的选择 将使用它
  • 如何解析从java文件中读取的unicode [重复]

    这个问题在这里已经有答案了 我编写了一个包含以下内容的文本文件 u0032 u0142o u017Cy u0142 然后我使用 FileReader 和 BufferedReader 来读取文件 public static void mai
  • 解析未完全加载 VBA 的网站

    尝试进行简单的网络解析 我的问题是页面在向下滚动之前无法完全加载 谷歌搜索已经提出可能使用硒 但由于我不知道如何使用它 我想我会在这里问 我使用的代码 Sub gfquote Dim oHttp As MSXML2 XMLHTTP Dim
  • Python 删除额外的特殊 unicode 字符

    我正在 python 中处理一些文本 它内部已经采用 unicode 格式 但我想删除一些特殊字符并用更标准的版本替换它们 我目前有一条看起来像这样的线路 但它变得越来越复杂 我发现它最终会带来更多麻烦 tmp infile lower r
  • 尝试使用变量作为自动过滤器中的条件,并带有“不等于”<>,但无法使其工作

    我正在使用 Excel VBA 使用 不等于 表达式来过滤列表 如果我使用Criteria1 lt gt Bob 代码运行完美 但如果我将 Bob 更改为变量 代码将无法运行 这有效 ActiveSheet ListObjects Rpt
  • 将 Mdb 转换为 Sql Server

    如何使用 C 或其他语言将 mdb 访问文件转换为 sql server 我找到了一个article http channel9 msdn com forums TechOff 234266 Convert MS Access DB to
  • 从嵌入的谷歌地图中提取标记坐标

    对此还很陌生 所以请耐心等待 我需要从嵌入的谷歌地图中提取标记坐标 示例链接是http www picknpay co za store search http www picknpay co za store search我想提取搜索时地
  • 查询从同一表中的另一条记录获取值并按大于间隙阈值的差异进行过滤

    我将数据导入到 MS Access 中的临时表中 如下所示 我添加了需要使用 SQL 查询计算的 Gap 和 Previous Current 列 间隙阈值 是用户输入或范围提供给查询和例如是 300 GlobalID 对 ItemID 进
  • 如何从另一个 Excel 实例引用工作簿

    我相信我的问题相当简单 我有一个工作簿 我正在使用它从另一个软件 SAP 获取一些数据 当我从软件导出数据时 它会自动打开一个 xlsx 文件 然后我需要做的是从该文件复制一些数据 粘贴到我的原始工作簿上 然后关闭该文件 我的代码中给我带来
  • 关闭工作簿时删除范围,xls vba

    我想要范围 Range A2 G z 关闭工作簿时删除 有人可以帮我处理代码吗 谢谢 凯 这就是我尝试过的 Option Explicit Sub Makro1 insert clipboard Workbooks Pfl SchutzSt
  • 二维数组作为字典的项目

    我想用一个项目的几个属性填充字典 例子 我正在考虑拥有Item 1 and Item 2 as Dictionary键与array这将保留其属性 我需要能够单独访问项目的每个属性 因此将它们连接为一个字符串不是一种选择 我正在考虑类似下面的
  • 这些 Unicode 组合字符是怎么回事?我们如何过滤它们?

  • Excel VBA 用户窗体 - 当发生变化时执行 Sub

    我有一个包含很多文本框的用户表单 当这些文本框的值发生变化时 我需要通过调用子例程 AutoCalc 根据文本框值重新计算最终结果值 我有大约 25 个框 我不想向每个调用上述子例程的文本框单独添加 Change 事件 当某些值发生变化时调
  • 打开 Excel 工作簿时自动运行 VBA 代码

    我有 VBA 代码 我想在打开 Excel 工作簿时运行 我尝试在代码应该运行的工作表中创建一个公共过程 Public Sub Workbook Open Some code here End Sub 工作簿打开时它不会运行 它应该在其中一
  • 如何VBA等待Windows保存对话框和发送密钥

    我正在创建一个宏文件 用于下载并保存从 SAP 旧版本 7 20 中提取的数据 当出现保存对话框时 未检测到 Windows 对话框 因为我的客户端 SAP 版本是旧版本 7 20 现在我对此的解决方案是发送密钥 但问题是某些数据包含大量数
  • VBA 中的求和函数

    我在 vba 中对单元格求和时遇到问题 我需要使用单元格 a b Range A1 function SUM Range Cells 2 1 Cells 3 2 但它不起作用 函数不是范围内的属性 方法 如果您想对值求和 请使用以下命令 R
  • 在没有 ODBC 的情况下从 Java 操作 Access 数据库

    我想从我的 Java 项目操作 Microsoft Access 数据库 accdb 或 mdb 文件 我不想使用 Microsoft 的 JDBC ODBC Bridge 和 Access ODBC 驱动程序 因为 JDBC ODBC 桥

随机推荐

  • 使用从kernel32.dll导入的SetThreadAffinityMask函数

    我正在尝试使用设置线程亲和力SetThreadAffinityMask在我的 C 代码中从 kernel32 dll 导入的函数 这就是我导入它的方式 DllImport kernel32 dll static extern IntPtr
  • 从“原型”和“新”转向封闭和暴露模式

    我一直在重构别人的 JavaScript 代码 BEFORE function SomeObj flag var private true this flag flag true false this version 1 1 prototy
  • 如何在 Nest for Elasticsearch 中添加完整的短语标记器?

    当我使用构面创建搜索时 我希望构面结果出现在整个短语上 而不是单个单词上 我希望它不区分大小写 就像 not analyzed 那样 例如 如果我有一个音乐 json 对象 并且想要根据流派组织分面结果 我希望将每种流派视为整个流派术语 节
  • Winforms 阿拉伯语输入文本框

    在我的 Windows 申请表 C 上 我有阿拉伯语和英语文本框 对于阿拉伯语文本框 我想自动将我的语言转换为阿拉伯语 而无需按 alt Shift 我在互联网上找到了这个解决方案 并在 TextBox Enter 上实现了它 privat
  • 如何检查 JSONObject 中值的类型?

    我正在尝试获取存储在 a 中的值的类型JSONObject String jString a 1 b str JSONObject jObj new JSONObject jString 是否可以获取 key 存储的值的类型 a 就像是jO
  • 特定行和列的自定义单元格渲染器

    puuuuuuf 我开始喜欢 swing 我正在尝试编写一个 cellRenderer 来自定义渲染除第一行和第一列中的单元格之外的所有单元格 所以我写了以下内容 public class CustomTableCellRenderer e
  • JavaFX TextField 文本验证

    我有一个listener应用于我的领域 nameTextField addEventHandler KeyEvent KEY TYPED fieldChangeListener 50 事件处理程序 private EventHandler
  • 我可以直接创建 1T 大小的 Windows Azure 驱动器吗

    Windows Azure 驱动器的最大大小为1T M only 收取其中的数据 而不是大小 我的问题是 为什么不直接创建一个大小为 1T 的 Azure 驱动器 这样就不用再担心调整大小等问题了 或者 如果我创建的驱动器大于我需要的大小
  • webkit css resize 不适用于画布作为子项?

    假设以下 html 和 css 代码片段 outer width 100px height 100px overflow hidden resize both border 1px solid black inner width 100 h
  • Azure DevOps - 有条件的包恢复

    通过 Azure DevOps 管道构建的解决方案有一些使用条件包引用的项目 例如
  • 了解 printf 的隐式转换

    C99 标准区分隐式和显式类型转换 6 3 转换 我猜想 但找不到 当目标类型比源类型具有更高的精度并且可以表示其值时 会执行隐式转换 这就是我认为从 INT 到 DOUBLE 会发生的情况 鉴于此 我看一下下面的例子 include
  • 如何使用 AngularJS/Ionic 作为 Backbone/Cordova 项目的一部分?

    我是 AngularJS Ionic 的新手 所以我请求你的帮助 给我们一些关于如何将 AngularJS Ionic 添加到 Backbone 项目的一部分 我们手头上有一个项目 是基于 Cordova 的 Backbone 框架构建的
  • 使用窗口迭代列表

    假设我们有这个列表 L 1 2 3 4 5 6 7 8 n 我们希望通过列表中包含 3 个元素的窗口获得此结果 l1 1 2 3 l2 2 3 4 l3 3 4 5 l4 4 5 6 l6 5 6 7 l7 6 7 8 直到我们迭代数组 并
  • OpenCV CascadeClassifier 错误

    我正在尝试通过网络摄像头进行人脸检测 但出现错误 级联分类器错误 经过一些测试 我发现这行代码产生错误 CascadeClassifier face cascade new CascadeClassifier 我得到的错误是 Excepti
  • 用指针反转 C 中的字符串文字[重复]

    这个问题在这里已经有答案了 我正在尝试使用指针反转字符串文字 通过我的代码收到 SIGSEGV 信号 head tail line char reverse char input int n char temp char head inpu
  • Google Appengine 每日预算未反映在配额中

    亲爱的 AppEngine 人员 我知道所有 AppEngine 支持已转移到 StackOverflow 如果我弄错了 那么很抱歉在这里发布此内容 我有一个非常严重的问题 希望您能帮助我解决 昨天 我在我的应用程序 friendbazaa
  • 如何通过java POI api从Excel工作表中删除所有公式?

    我们可以通过 cell setCellFormula null 从一个单元格中删除公式 但如果我想让整个表格公式免费 See Apache POI 站点这完全回答了你的问题
  • 如何在 PHP 中将一个图像包含在另一个图像中?

    如何在 PHP 中将一个图像包含在另一个图像中 我想像 twitterbackgrounds com 个性化背景那样做到这一点 有一张主图像 我们可以上传四张个人图像 之后它将显示为主图像的水印 我自己从来没有用过GD 但是看看手册中的示例
  • UWSGI 杀死工人的速度太快

    我在我的 web 应用程序中遇到了一个错误 该错误已经工作了一年多了 当我在新实例上切换到 UWSGI 以加快速度时 我遇到了这个错误 我的应用程序有 快速添加 模式窗口 允许用户将新客户添加到数据库中 并立即转到该用户的购物车 所以 该模
  • 在 VBA 中使用 Unicode 文件名(使用 Dir、FileSystemObject 等)

    I am 迭代通过文件夹中的文件 这意味着我不知道文件夹中的名称 并且有一个带有波兰语的文件 特点 The Dir函数将其转换为l这意味着以后无法找到该文件名 我已将要为其分配 dir 值的 var 声明为字符串 我也尝试过 FSO 和 g