如何在 VBA 中处理工作表(unicode VBA 显示和处理)中西里尔字母引起的错误(#REF)?

2024-02-19

我想从特定的工作簿中获取数据(有几十个工作簿,循环部分工作正常),但下面的代码不起作用,因为工作表采用西里尔字母,并且它们给出了值“??” ????'到sheet As String范围。我想问如何在不打开工作簿的情况下强制重命名它(无需Workbook.Open(WorkbookNum1)因为在这种情况下,这会花费相当多的时间)。或者如何修改此代码以应用工作表索引,例如:sheets(3)?

Private Function GetValue(path, file, sheet, ref)

    Dim arg As String

    'Make sure the file exists
    If Right(path, 1) <> "\" Then path = path & "\"

    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
    Exit Function

   End If

   'Create the argument
   arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
   Range(ref).Range("A1").Address(, , xlR1C1)
   'Execute an XLM macro
   GetValue = ExecuteExcel4Macro(arg)

End Function


Sub TestGetValue()

    p = "c:\XLFiles\Budget"
    f = "Budget.xls"
    s = "Sheet1"
    a = "A1"

    MsgBox GetValue(p, f, s, a)

End Sub

VBA 可以很好地处理 unicode,但 VBA 编辑器不显示它。如果您不习惯的话,这可能会使 unicode 难以在 VBA 中使用。

当第一次需要使用 unicode 时(大多数人使用随机曲线来获得可爱的文本效果,但也有整个俄罗斯网站),我通过将 unicode 字符串放置在工作表中(工作表显示 unicode 很好)来解决这个问题,然后设置通过从工作表中提取变量的值来增加我的变量。

因此,设置一个名为“UniSrc”的工作表(名称可以是任何名称),在 A 到 D 列中包含路径、文件、工作表和地址。将 unicode 工作表名称复制并粘贴到 C 列中。

这是您的测试程序,经过修改后可以这样工作:

Sub TestGetValue()
    dim rowNow as long, wks as excel.worksheet
    dim p as string, f as string, s as string, a as string

    rowNow = 2 ' assuming row 1 is a header
    set wks = thisworkbook.sheets("UniSrc")
    with wks
        p = .cells(rowNow, 1) ' path
        f = .cells(rowNow, 2) ' file name
        s = .cells(rowNow, 3) ' unicode name of sheet sought
        a = .cells(rowNow, 4) ' cell address sought
    end with

    MsgBox GetValue(p, f, s, a)
End Sub

现在我们需要更新您的 GetValue 函数:

Function GetValue(sPath as string, sFile as string, sSheet as string, sAddress as string) as variant
    Dim arg As String, vTmp as variant

    If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
    If Dir(sPath & sFile) = "" Then ' Make sure the file exists
        vTmp = "File Not Found"
    else ' Create the argument
        arg = "'" & sPath & "[" & sFile & "]" & sSheet & "'!" & _
        Range(sAddress).Range("A1").Address(, , xlR1C1)
        'Execute an XLM macro
        vTmp = ExecuteExcel4Macro(arg)
    End If
    GetValue = vTmp
End Function

看你怎么走。我在平板电脑上,所以我随手写下了这个,无法测试它,但要点就在那里。

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

如何在 VBA 中处理工作表(unicode VBA 显示和处理)中西里尔字母引起的错误(#REF)? 的相关文章

  • Excel - 确定排列的奇偶性

    我正在处理一个 Excel 工作表 需要确定大小数字的垂直数组的奇偶校验N 该数组包含来自的每个数字1 to N每一次正好一次 在这种情况下 奇偶校验被定义为将加扰数组转换为从小到大排序的数组所需的交换次数 例如 数组 3 1 2 4 具有
  • 更改列标签?例如:将“A”列更改为“名称”列

    谁能告诉我如何更改列标签 例如 我想将列 A 更改为列 名称 Excel Excel 的版本是什么 一般来说 您无法更改列字母 它们是 Excel 系统的一部分 您可以使用工作表中的一行来输入您正在使用的表格的标题 表标题可以是描述性列名称
  • 如何将 JavaScript 图表导出到 Excel 文件 (HighCharts)

    我必须将 Javascript 图表 HighCharts 导出到 Excel 文件中 图表在div中呈现 但excel不呈现javascript生成的html css内容 仅呈现没有样式的文本 一个解决方案是将图表渲染为图像 jpeg 但
  • 从网站上的表格中抓取数据,而无需搜索标签

    这是这个问题的延续使用 InStr 搜索引号 空格 冒号等 https stackoverflow com questions 52673819 using instr to search for quotes spaces colons
  • phpexcel xlsx 的千位分隔符

    我在用着 PHPExcel Shared String setThousandsSeparator 为 Excel 文件定义千位分隔符 多亏了它 单元格显示为55 452代替55452 不过 单元格值是整数 55452 因此可以对其进行计算
  • Countif 不适用于小时和/或日期

    您好 我有 3 列内的数据 A 目的地 例如洛杉矶 B 承运人 例如 Ups C 发货时间 预计 4 00 使用的时间是24小时时间 不含Am Pm 我需要进行计数才能知道在特定时间我们有多少批货物 尝试过 COUNTIF A1 A100
  • 在 MS Outlook 中,报告所有未收到回复的已发送邮件

    我每天都会发送大量电子邮件 但常常无法跟踪哪些邮件得到了实际回复 有没有办法使用 VBA 脚本查看上周发送的所有消息 并检查他们是否收到回复 具体来说 是一份已发送电子邮件的报告 这些电子邮件尚未从至少一个发送到的地址收到回复 我了解一点
  • 运行代码(而不是查询)时如何在状态栏上显示进度

    我已经发布了有关在 MS Access 2010 中运行查询时更新状态栏的问题 请参阅在 MS Access 中运行一系列查询时如何在状态栏上显示进度 https stackoverflow com questions 27765376 h
  • 无法在我的抓取工具中设置超时选项以防止无限循环

    我已经使用 IE 在 vba 中编写了一个脚本 在其搜索框中的网页中启动搜索 通过点击搜索按钮根据搜索填充结果 网页加载它是searchbox几秒钟后它就会打开 但是 我的下面的脚本可以处理这个障碍并以正确的方式执行搜索 现在 我有一个稍微
  • xlwings: 删除一个列 | Excel 中的行

    如何删除 Excel 中的一行 wb xw Book Shipment xlsx wb sheets Page1 1 range 1 1 clear clear 用于删除内容 我想删除该行 我很惊讶 clear 函数有效 但 delete
  • VBA Shell 并等待退出代码

    我正在打包一个办公应用程序 VBA 它调用 C 控制台应用程序来执行应用程序 大型模拟程序 的一些繁重工作 我希望能够让 VBA 应用程序等待控制台应用程序完成并从控制台应用程序检索退出代码 我已经能够做到前者 但尚未能够从应用程序中检索退
  • Office excel将CORS请求作为跨域请求

    我正在尝试从我的 Excel 插件发出跨域请求 正如这里所建议的 http dev office com docs add ins develop addressing same origin policy limitations http
  • 使用 ObjPtr(Me) 返回自定义类实例的名称?

    我明白那个ObjPtr http support microsoft com kb 199824将返回内存中对象的地址 并且它指向一个名为 IUNKNOWN 的结构 并且其中编码了某种接口定义以公开对象结构 但我不知道如何确定一个对象的接口
  • JasperReports 中每个工作表属性一页

    我有一个要求 我必须在 JasperReports 中设计一个报告 该报告有 4 页 第一张纸有 5 页 类似的其他纸有一页或两页 我面临的问题是 如果我使用net sf jasperreports export xls one page
  • 我可以获取VBA代码中的注释文本吗

    可以说我有以下内容 Public Sub Information TEST End Sub 有没有办法得到 TEST 结果 不知何故通过VBA 例如 在 PHP 中 有一个获取注释的好方法 这里有什么想法吗 编辑 应该有办法 因为像 MZ
  • VBA 中的匈牙利语好吗?

    我在 Net 中不使用匈牙利语 str int 前缀 但我仍然发现它在 VBA 中很有用 因为在 VBA 中很难看到类型 这很糟糕吗 不必要 也许我错过了一些东西 我真的很感激任何反馈 我想知道有一段时间了 谢谢大家 我想说 这种匈牙利符号
  • VBA ByRef 参数类型不匹配

    最初在我的主代码部分中 我有一个丑陋的 if 语句 尽管它会运行丑陋 我决定将其设为我要调用的函数 这导致我收到错误 编译错误 ByRef 参数类型不匹配 我的假设是该函数需要正确引用 尽管我一直在阅读文档并且不明白为什么 gt 声明 Sh
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 使用输入作为显示日期的基础

    我需要一种方法来使用用户窗体上的输入来确定将在输出上显示的日期 这是我的代码 If StatusBox Value lt 23 59 And ShiftCode Value AP Then Cells emptyRow 8 Value Da
  • 我如何以更好的方式编码而不是像这样的VBA编码

    我正在 Excel 中创建一个仪表板 但是我想知道是否有比这更好的编码方式 我想对其进行模块化 而不是这样做以使其更加整洁 Private Sub Afford If af Value True Then af afr Value Shee

随机推荐

  • iOS + 如何捕获未处理的异常

    我们正在编写静态库 我们对暴露的API做了异常处理 但仍然有一些未处理的异常 或操作系统异常 您能让我知道如何捕获这些未处理的异常吗 谢谢 好吧 您始终可以信赖全面捕获原则 https stackoverflow com questions
  • Nix 函数定义开头的问号是什么意思?

    例如在 nixpkgs import
  • Javascript:为什么在这里使用匿名函数?

    我正在浏览 JIT 的代码 我看到了这个 var isGraph type json array var ans new Graph this graphOptions if isGraph make tree function ans j
  • 如何等到数据加载后才能在 Vue.js 中正确显示此 v-if 条件?

    它显示在加载数据之前未找到任何项目 代码如下所示 div class columns p No items found p div div class columns div async getProducts let res await
  • 如何用我自己的方法扩展Python的datetime.datetime?

    我正在尝试扩展Pythondatetime datetime带有几个额外方法的类 所以 例如我正在做的 import datetime class DateTime datetime datetime def millisecond sel
  • C#:使用未分配的局部变量,使用 foreach 和 if

    我有以下代码 我收到错误 使用未分配的局部变量 我确信这非常简单 但我很困惑 public string return Result String RssData int marketId string result foreach var
  • File.lastModified() 慢得要命!

    我正在做文件的递归副本等xcopy D http www microsoft com resources documentation windows xp all proddocs en us xcopy mspx mfr true我只想复
  • .hover(...) 和 on.("hover"...) 行为不同

    使用 JQuery 当元素处于悬停状态时 我尝试链接几个函数 我通常会使用 hover事件函数 但在阅读了一些教程后我读到了使用 on更好 因为您可以使用一个事件处理程序来监视文档中的所有冒泡事件 但是 当我将两个函数链接在一起时遇到问题
  • 在诗歌运行期间导入本地包

    我刚刚从pipenv to poetry我在从我在一些脚本中开发的本地包导入包时遇到问题 为了使这一点更具体 我的项目看起来像 pyproject toml poetry lock bin myscript py mypackage ini
  • Symfony2.5 + FOSUserBundle 检查路径显然没有找到

    我启动了一个新的 Symfony 应用程序 在其中使用 FOSUserBundle 我安装了它 加载了捆绑包并配置了它 这是我的configuration yml fos user db driver orm firewall name m
  • 使用 Xcode 7 禁用项目和 cocoapods 依赖项的位码?

    如何禁用项目和 cocoapod 依赖项的位码 这是我尝试使用 Xcode 7 运行项目时遇到的错误 不包含位码 您必须在启用位码 Xcode 设置 ENABLE BITCODE 的情况下重建它 从供应商处获取更新的库 或禁用该目标的位码
  • 本地化包含名称列表的字符串

    我有包含名称列表的字符串 如下所示 约翰向金 凯利 李和鲍勃询问了新年计划 名单中的名字数量可以非常多 我如何在 Java 中本地化它 我正在考虑 ResourceBundle 和 MessageFormat 我将如何在 MessageFo
  • 如何忽略通过 http 发送的属性

    我的应用程序中有一个接口 用于维护我想要发送到数据库的属性以及我不发送到数据库的属性 具体来说 我维护一个名为state可以设置为open or null 关闭 然后触发 Angular2 的动画state https angular io
  • RemoteActor 取消注册 actor

    我正在玩 RemoteActors 现在我想知道 如果我关闭 RemoteActor 会发生什么 该 Actor 可通过 RemoteActor alive 和 RemoteActor register 来使用 我找不到两者的逆 活着和注册
  • 如何在java中使用lucene添加自定义停用词

    我正在使用 lucene 删除英语停用词 但我的要求是删除英语停用词和自定义停用词 下面是我使用 lucene 删除英文停用词的代码 我的示例代码 public class Stopwords remove public String re
  • 从 Mastercard/VISA 借记卡/信用卡读取 EMV 数据 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试构建一个应用程序来读取 编码卡上的数据 如 PAN 到期日 客户名称 PIN 等信息 到目前为止 我发现我需要发送 APDU
  • 导航抽屉图标未显示(Sherlock 操作栏)

    让导航抽屉与 sherlock 操作栏配合使用 但我无法显示 3 行图标 如 gmail 而不是正常的向上按钮 getSupportActionBar setIcon R drawable myIcon getSupportActionBa
  • “ExecuteScalar:连接属性尚未初始化。”

    我是 C 新手 目前在不调试的情况下运行该程序时遇到一些问题 这是我的项目的登录页面 我创建了一个基于服务的数据库 我想连接到数据库中表 Table 中的用户名和密码数据 但是 我遇到了一个问题 ExecuteScalar 连接属性尚未初始
  • R 函数在 left_join 中进行故障恢复?

    我有 20 多个不同的数据表 其中的数据由相同的编码系统 北美行业分类系统 NAICS 索引 我想将它们连接到一个表中 问题是每个表中都有不同级别的详细信息 当我加入时 我希望通过失败编码系统的层次结构直到找到匹配来找到最佳匹配 一个常规的
  • 如何在 VBA 中处理工作表(unicode VBA 显示和处理)中西里尔字母引起的错误(#REF)?

    我想从特定的工作簿中获取数据 有几十个工作簿 循环部分工作正常 但下面的代码不起作用 因为工作表采用西里尔字母 并且它们给出了值 到sheet As String范围 我想问如何在不打开工作簿的情况下强制重命名它 无需Workbook Op