如何在 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 - 根据选择创建图表的宏

    我想就以下问题寻求您的帮助 因为我必须创建大量图表 所以我想要一个宏来根据我的选择插入图表 由于我对 VBA 没有任何了解 但现在需要它 至少现在 我真的应该自己学习使用它 我将感谢您的帮助 基本上 我需要知道如何调整我记录的代码 以便根据
  • 如何将 Excel 中的图表导出为图形

    我有一系列 Excel 电子表格 每个电子表格至少包含一页数据和一页根据数据创建的图表 我需要捕获 不从数据中重新生成 将现有图表作为网络友好图像 这可以通过 Java 或 Net 实现吗 我知道 POI 的东西 Java 不会这样做 或者
  • MS Access VBA:通过 Outlook 发送电子邮件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何使用 MS Access VBA 通过帐户发送电子邮件 我知道这个问题很模糊 但是很难在网上找到在某种程度上还没有过时的相关信息 编辑
  • 使用 js-xlsx 解析 Excel 工作表

    我正在尝试解析用户指定的目录中的所有 Excel 文件 但js xlsx我正在使用的库似乎需要手动导航 var url test files test xlsx lt Located in the project directory var
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • schema.ini 文件不适用于 MS Access

    我有一堆 csv 文件 我通过 VBA 将它们导入到 Access 中的表中 我在与导入的 csv 文件相同的目录中还有一个 schema ini 文件 尽管在 ini 文件中字段被指定为双精度类型 但它们在 Access 中会转换为文本类
  • Range.End() 困惑

    我有一个关于 VBA 中 Range End 属性的一般性问题 我已经阅读了有关该房产的信息here http msdn microsoft com en us library bb221181 aspx 但我还是很困惑 例子 With w
  • SSIS使用列位置而不是名称导入Excel文档

    我想知道是否可以通过按位置引用列来使用 SSIS 导入 Excel 文档 例如 导入列 A D M AA 等 我问这个问题是因为我需要从第三方加载多个 Excel 文档 每个文档在相应的列中包含相同的数据类型 但每个文档的列名称不同 Tha
  • 在VBA中将字符串文本拆分为单独的行

    我的 excel 或 csv 文件 中有 2 个文本框 如下所示 文本框 1 包含 11111 22222 33333 文本框 2 包含 55555 11111 22222 33333 55555 我希望 之间的文本位于 3 个不同的行上
  • 将所有工作簿工作表复制到新工作簿 VBA

    我正在使用此代码将工作簿中的每张工作表复制到新工作簿中 它工作正常 但它颠倒了工作表的顺序 是否有办法阻止它这样做 Sub copy copies all the sheets of the open workbook to a new o
  • Windows Azure 远程站点“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册[重复]

    这个问题在这里已经有答案了 以下代码在我的本地开发计算机上可以正常运行 但是当我部署它时 我收到以下错误消息Azure 远程网站 我已经查看了SO答案和谷歌搜索结果 但我仍然不清楚我必须在本地计算机上安装什么 这样当我将代码推送到Azure
  • IE.navigate2 因保护模式关闭而失败

    我正在从 Excel VBA 自动化 IE8 Excel 2010 Windows 7 Set IE CreateObject InternetExplorer Application IE Navigate2 URL 如果 URL 是处于
  • VBA 中的 VSTO:AddIn.Object 有时不返回任何内容 (null)

    Given VSTO 插件 An override object RequestComAddInAutomationService 它返回一个名为的类的实例Facade在我的场景中 Excel 2007 中的 VBA 宏可访问AddIn O
  • 实体框架、dll、excel

    我用C 编写了Excel使用的dll 该dll是COM注册的 我与 Excel 的连接没有问题 该 dll 使用实体框架 5 从 SQL Server 数据库检索数据 如果我通过控制台应用程序运行该 dll 则该 dll 工作正常 但是当我
  • 如何使用 Java Apache POI 隐藏 Excel 工作表中以下未使用的行?

    我正在使用数据库中的数据填充模板 Excel 工作表 for Map
  • 如何使用 Excel.UriLink.16 更改 Excel URL 的文件关联?

    我正在尝试更改文件关联 以便在另一个浏览器中打开 Excel 单元格中的 URL 根据使用 CMD ftype命令与Excel UriLink 16 我应该能够使用以下命令从 powershell 通过 cmd 执行此操作 To chang
  • 在 VBA 中使用 getElementsByClassName

    我正在使用此代码从页面获取产品名称 页面代码是 div class product shop col sm 7 div class product name h1 Claro Glass 1 5 L Rectangular Air Tigh
  • 将 Python Selenium 输出写入 Excel

    我编写了一个脚本来从在线网站上抓取产品信息 目标是将这些信息写入 Excel 文件 由于我的Python知识有限 我只知道如何在Powershell中使用Out file导出 但结果是每个产品的信息都打印在不同的行上 我希望每种产品都有一条
  • VBA 访问:从另一个表单的代码刷新一个表单

    编辑 没关系有人帮助了我 form name recalc 或 form name refresh form main recalc 我有两种形式 主要 详细信息 在 主 表单中 我有一个在对话框中打开 详细信息 的按钮 问题是我在 详细信
  • 将包含换行符的文本文件导入到 Excel 中

    我有一个纯文本文件 如下所示 some text containing line breaks 我正在尝试说话excel 2004 Mac v 11 5 正确打开此文件 我希望只看到一个单元格 A1 包含上述所有内容 不带引号 但可惜的是

随机推荐

  • 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