Excel宏来合并数据

2024-01-24

我的一个文件夹中有很多excel文件。

我想要一个宏来遍历每个文件并复制名为最终成本并在目标文件中制作一个带有源文件名称的工作表。

就像有三个文件 A、B、C,每个文件都有一个名为“最终成本

新文件将包含三个工作表,名称为

  • A,
  • B,
  • C

编辑后的代码看起来像

Sub RunCodeOnAllXLSFiles()
    Dim lCount As Long
    Dim wbResults As Workbook
    Dim wbCodeBook As Workbook

    'Application.ScreenUpdating = False
    'Application.DisplayAlerts = False
    'Application.EnableEvents = False

    'On Error Resume Next

    'Set wbCodeBook = ThisWorkbook

    Dim FilePath    As String, fName As String
    Dim aWB As Workbook, sWB As Workbook

    Set aWB = ActiveWorkbook
    FilePath = "D:\binny\" 'change to suit
    fName = Dir(FilePath & "*.xls")

    Do While fName <> ""
        If fName <> aWB.Name Then
            Set sWB = Workbooks.Open(FileName:=FilePath & fName, UpdateLinks:=0)
            sWB.Worksheets("Final Cost").Range("A1:Z6666").Copy
            sWB.Close False
            Sheets.Add.Name = fName
            Worksheets(fName).Range("D1").Select
            ActiveSheet.PasteSpecial Format:= _
            "Microsoft Word 8.0 Document Object"
        End If
        fName = Dir
    Loop
    Set sWB = Nothing: Set aWB = Nothing


               'Application.ScreenUpdating = True
    'Application.DisplayAlerts = True
    'Application.EnableEvents = True
End Sub

现在要做的事情是:

  1. 保留格式和单元格宽度
  2. 我无法使用选择性粘贴
  3. 删除同名工作表(如果存在)

你已经弄清楚了大部分内容。这是我的推荐。

在运行宏的文件中设置 1 个主工作表的名称,以便您可以一次性删除除该工作表之外的所有工作表。假设主表是“MainSheet”

例如

Sub Sample()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Sheets
        If ws.Name <> "MainSheet" Then
            Application.DisplayAlerts = False
            ws.Delete
            Application.DisplayAlerts = True
        End If
    Next ws
End Sub

现在您可以将此代码添加到代码的开头。我已经修改了你的代码。我在代码中所做的就是在创建工作表后,只需删除 Z 之后的列即可。

看到这个(UNTESTED)

Sub test()
    Dim FilePath As String, fName As String
    Dim aWB As Workbook, sWB As Workbook
    Dim ws As Worksheet
    Dim ColName As String

    Set aWB = ThisWorkbook

    '~~> Delete sheets
    For Each ws In aWB.Sheets
        If ws.Name <> "MainSheet" Then
            Application.DisplayAlerts = False
            ws.Delete
            Application.DisplayAlerts = True
        End If
    Next ws

    FilePath = "D:\binny\" '<~~ Change to suit

    fName = Dir(FilePath & "*.xls")

    Do While fName <> ""
        If fName <> aWB.Name Then
            Set sWB = Workbooks.Open(Filename:=FilePath & fName, UpdateLinks:=0)
            sWB.Sheets("Final Cost").Move after:=aWB.Sheets(aWB.Sheets.Count)
            sWB.Close False
            '~~> The sheet is copied, simply delete the columns after Z
            With aWB.Sheets(aWB.Sheets.Count)
                .Name = fName
                .Cells.Copy
                .Cells.PasteSpecial xlPasteValues
                '~~> Get the last column Name
                ColName = Split(.Cells(, .Columns.Count).Address, "$")(1)
                .Columns("AA:" & ColName).Delete
            End With
        End If
        fName = Dir
    Loop
    Set sWB = Nothing: Set aWB = Nothing
End Sub

尝试一下,如果您遇到任何错误,请告诉我哪一行,我会纠正它。

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

Excel宏来合并数据 的相关文章

随机推荐

  • 删除 Parse 上的多条记录

    我的类在 Parse 上有超过 1 1 亿条记录 并且希望根据一条规则删除 99 的记录 状态 1 我设置了一些后台作业来逐个记录此记录 但速度太慢并且类慢慢变大 有什么办法可以更快地删除它们吗 也许在设定日期之前删除所有对象 Thanks
  • 在 Intellij Idea Community Addition 中安装 PHP 插件

    我正在尝试在我的 Intellij Idea IDE 社区版版本 14 中安装 PHP 插件 我相信这是非常受支持的 因为我看到有一个插件网站显示社区 PHP 插件 URL https plugins jetbrains com plugi
  • 在 Javascript 中覆盖警报并确认

    有没有办法覆盖alert and confirm 在 JavaScript 中 我使用 jQuery 所以如果有办法在这个框架中做到这一点 我将不胜感激 我想做这样的事情 override alert msg Show custom stu
  • 按数组列表自定义分页

    我想在java代码中通过数组列表创建自定义分页 import org springframework data domain Sort import org springframework data domain PageRequest i
  • 从字典列表中创建不矛盾项的字典

    这个问题的灵感来自于这个问题 https stackoverflow com q 9906944 589206 我想从字典列表中获取一个字典 该字典应包含所有字典中的所有键 值对 这些字典要么只包含一次 要么所有字典都同意关联值 示例 取自
  • (在Eclipse中使用处理库)如何使用窗口模式?

    http processing org learning eclipse http processing org learning eclipse 根据步骤5 我使用了PApplet main new String present MyGa
  • 检索数据时数据库崩溃问题

    This is the Database field values 下面是我用来从 sqlite 数据库获取数据的代码 void readDataFromRestaurantTable self openDataBase const cha
  • 如何退出gdb中的wh模式

    gdb 中的 wh 模式对我来说效果不太好 当我转储一些数据时 命令窗口和程序文本窗口会重叠 看起来很混乱 我想退出 wh 模式而不退出调试器 也不终止正在运行的程序 我设置了几个断点 所以我不想退出调试器 C x C a C x a C
  • 无法让 CSS 属性选择器工作

    我正在尝试将此 css 转换为使用属性 starts with 选择器 因为我有几个带有 id 属性的锚元素 它们以相同的值开始 a cta button 127944 79d30f48 4e68 43c8 949d a9734a713b3
  • 为什么我应该使用bundle exec 而不是仅仅运行命令? [复制]

    这个问题在这里已经有答案了 使用运行可执行文件是众所周知的最佳实践bundle exec
  • 每 4 件商品替换颜色 [重复]

    这个问题在这里已经有答案了 是否可以使用纯 CSS 创建一个每 4 个项目交替的颜色网格 例如 前 4 个项目为蓝色 接下来的 4 个为红色 然后接下来的 4 个项目为蓝色 依此类推 div Item 1 blue div div Item
  • T-SQL 将多行连接并分组为一行[重复]

    这个问题在这里已经有答案了 我正在寻找一种分组方法 同时还将行连接成逗号分隔的字符串 例子 Name Place Steve Jones New York Steve Jones Washington Albert Smith Miami
  • 将节点从 6 升级到最新版本时,npm i 在 React Native 项目中失败并显示 ENOENT

    在 React Native 项目上将 npm 从 6 14 升级到最新版本时 使用节点14 nvm切换节点版本 理想情况下我想转到节点16 但是特别是在更新npm时 无论14还是16都会发生类似的问题 我也在 mac M1 上使用自制程序
  • 如何计算交易的最低硬币找零?

    嘿大家 我有个问题 我正在使用 Visual Basic Express 我应该计算交易的变化 现在我会使用什么代码 我已经部分工作了 但它开始变得有点混乱 谢谢 对于那些想了解更多信息的人 假设我有一美元 我去商店买东西 我必须要求用户输
  • 无法禁用 OpenCart (PHP) 中的错误报告

    我似乎无法禁用 PHP 中的错误报告 我已经尝试了所有方法 但仍然显示 注意 错误 我的 php ini 有 display errors Off error reporting 0 我的 htaccess 有 php value erro
  • 如何将核心数据模型项传递到视图中进行编辑

    我有一个最小的示例项目CD传递Q https github com ericg xcode questions CDPassingQ 我的主要 内容视图 https github com ericg xcode questions CDPa
  • JSON 发布,我是否把 JSON 推得太远了?

    我只是想知道我是否把 JSON 推得太远了 如果有人以前打过这个 我有一个 xml 文件
  • 在 Spark Scala 中将时间戳转换为 UTC

    我的环境是Spark 2 1 Scala 这可能很简单 但我很伤脑筋 我的数据框 myDF 如下所示 orign timestamp origin timezone 2018 05 03T14 56 America St Johns 201
  • elasticsearch_dsl:聚合生成多个桶

    我想生成这个 GET packets 2017 09 25 search size 0 query match transport protocol tcp aggs clients terms field layers ip src ke
  • Excel宏来合并数据

    我的一个文件夹中有很多excel文件 我想要一个宏来遍历每个文件并复制名为最终成本并在目标文件中制作一个带有源文件名称的工作表 就像有三个文件 A B C 每个文件都有一个名为 最终成本 新文件将包含三个工作表 名称为 A B C 编辑后的