【问题标题】:Use a file name as part of a range使用文件名作为范围的一部分
【发布时间】:2015-07-10 14:31:41
【问题描述】:

MS Excel 2010 VBA - 自学自动化,碰壁了。我正在使用 VBA 从一个工作簿中提取原始数据并将其插入到分析工作簿中。
示例 - 原始数据存储在名为 something.csv 的文件中工作表的 G 列中我提取文件和工作表名称,通过其他步骤添加“G”并我已将文件和工作表和 G 分配给一个变量,因为数据文件名永远不会相同。分析文件包含宏。

如果文件和工作表名称为:“[REPORT.csv]REPORT!”,则此方法可以正常工作。

RptName ="[REPORT.csv]REPORT!G"
PulledData = Range(RptName & rawdatarow)

但如果文件和工作表名称为“[873686.0-05.csv]873686.0-05!”,则此方法不起作用或类似的。

RptName = "[873686.0-05.csv]873686.0-05!G"
PulledData = Range(RptName & rawdatarow)

非常感谢任何帮助!

【问题讨论】:

  • “不起作用”可能意味着很多事情。有任何错误信息吗?错误信息是什么?
  • 请不要将macros tag 用于 MS Office / VBA。
  • 抱歉 - 错误是运行时错误“1004”:对象“_Global”的方法“范围”失败

标签: vba excel csv filenames


【解决方案1】:

对于具有数学符号或其他特殊字符(如空格)的引用,您需要用单引号引起来。

你必须改变

RptName = "[873686.0-05.csv]873686.0-05!G"

RptName = "'[873686.0-05.csv]873686.0-05'!G"

即使没有特殊字符,单引号版本也可以使用,因此这将是适用于所有情况的最简单方法,而不是试图找出必须使用引号的位置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多