【问题标题】:Column Adding and Filling it with Workbook Name for all workbooks in a folder为文件夹中的所有工作簿添加并填写工作簿名称的列
【发布时间】:2014-01-13 14:09:02
【问题描述】:

我需要的有点复杂和具有挑战性,我不知道还有什么地方可以寻求帮助。我有几个 excel 文件,命名为 thb201301221.xls,thb20130201.xls ,这些文件中使用的命名约定类似于 thb + 创建文件的日期 +(1 或 2)。在每个文件中,有几张纸。我对命名为 N1-1、N1-2 和 N1-3 的某些工作表感兴趣。我需要做的是:

  1. 将这些 N1-1、N1-2 和 N1-3 表合并到一张表中以供所有人使用 工作簿
  2. 在每张表格的开头添加一列并用 工作簿名称中的日期(在文件 thb201301221.xls 中 22.01.2013)
  3. 在其中创建一个工作簿和一个工作表,并在其中填写这些内容 新创建的工作表,由 N1-1、N1-2 和 工作簿中的 N1-3 张工作表。

有人可以帮助我完成这项任务吗?我不可能考虑手动执行此操作,非常感谢您的帮助。

已经谢谢了, 可汗

【问题讨论】:

  • 有没有试过的代码?结果如何?

标签: batch-file excel vba


【解决方案1】:

您不会在这里得到这样的答案。您一次要求太多,而您对如何解决问题还没有表现出最低限度的了解。我们在这里帮助您改进您的代码,而不是为您编写代码。

将您的全部问题分解为第 1、2、3、... N 步。编写执行第 1 步、第 1 步和第 2 步、第 1、2 和 3 步等的宏。如果您在执行第 X 步时遇到问题,请询问第 X 步并向我们展示不符合您预期的代码。

编辑 在我最初的回答中,我说我可以在不知道更多信息的情况下比第 3 步更进一步。您希望将所有 N1-1、N1-2 和 N1-3 工作表合并到一个工作表中,还是拥有三个单独的工作表?后来我意识到,如果我对工作表名称含糊不清,我可以走得更远。

我为您解决问题的步骤:

  1. 创建感兴趣的工作簿列表。
  2. 如果顺序很重要,那么该列表的顺序是否正确?如果是和否,请对列表进行排序。
  3. 向 Workbooks 集合添加一个空工作簿,准备接收组合数据。
  4. 根据需要重命名工作表“Sheet1”和其他工作表。
  5. 遍历 [排序] 工作簿列表,打开每个工作簿,将所需信息从源工作表复制到目标工作表,然后关闭工作簿

对于第 1 步,您将需要 Dir$ 函数或文件夹对象的 Files 属性。您应该能够使用 Visual Basic 帮助找到其中任何一个。 Dir$ 是较旧的函数,可能更容易理解。文件夹对象及其属性(例如文件)更加灵活和完整,但可能更难理解。注意:Dir 和 Dir$ 看起来相同,但 Dir$ 的效率略高。

获取每个工作簿名称并使用Debug.Print FileName 证明您拥有所需的工作簿。如果第 1 步的代码不起作用,请提出相关问题。

如果需要对列表进行排序,搜索“excel vba sort an array”。

接下来搜索“excel vba add an empty workbook to the Workbooks collection”。

对于第 5 步,您需要使用 Copy statement,它看起来像:RngSource.Copy Destination := RngDestination。您将需要确定源范围的大小并指定 RngSource。目标范围的大小相同,但第一行将比使用的最后一行多一个,第一列将是 2 而不是 1,因此您可以使用文件名中的日期填写第 1 列。

我希望你能明白。如果您的步骤足够小并且定义足够明确,那么您应该可以轻松找到一些合适的代码来添加到您的不断增长的宏中。如果您遇到困难,这里的小问题通常会有所帮助。

【讨论】:

    猜你喜欢
    • 2022-12-08
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多