使用 Excel VBA 循环工作簿文件夹并将所有工作表导出为制表符分隔文本

2024-06-19

我拼凑了一个 Excel VBA 脚本,该脚本将打开的工作簿中的所有工作表写入单独的制表符分隔文件(这仍然是“宏”吗?我正在 Excel 真空中学习这一点)。它一次只处理一本工作簿,效果很好。这里是。

Sub exportSheetsToText()
    Dim sWb As String
    Dim sFile As String
    Dim oSheet As Worksheet

    sWb = Left(ActiveWorkbook.FullName, InStr(ActiveWorkbook.FullName, ".") - 1)

    For Each oSheet In Worksheets
        oSheet.Copy
        sFile = sWb & "-" & oSheet.Name & ".txt"
        ActiveWorkbook.SaveAs fileName:=sFile, FileFormat:=xlText
        ActiveWorkbook.Close SaveChanges:=False
        Next oSheet
End Sub

我想扩大规模,以便我可以将此宏应用于工作簿文件夹。我编写了我认为会循环遍历满足过滤器的每个工作簿的内容,但它不写入任何 .txt 文件。这里是。

Sub exportsSheetsToTextForAll()

    Dim sPath As String
    Dim sWildcard As String
    Dim sMacro As String
    Dim oWb As Workbook
    Dim oPersWb As Workbook

    Application.AutomationSecurity = msoAutomationSecurityForceDisable
    Set oPersWb = Workbooks("PERSONAL.XLSB")
    sMacro = "'" & oPersWb.Name & "'" & "!exportSheetsToText()"
    sPath = "C:\Users\richard\Documents\Research\Data\Excel\Datastream - payout"
    sWildcard = "New*.xlsx"
    sFile = Dir(sPath & "\" & sWildcard)


    Do While Len(sFile) > 0
        Workbooks.Open Filename:=sPath & "\" & sFile
        Application.Run sMacro
        ActiveWorkbook.Close SaveChanges:=False
        sFile = Dir
    Loop

End Sub

它循环遍历我的所有测试文件,但我没有看到任何效果(即没有 .txt 文件,也没有错误)。

最终,我将在带有宏的非常大的工作簿上运行它,因此禁用宏(我本地没有宏,它们位于专用数据机上)并在打开下一个大型工作簿之前关闭一个大型工作簿非常重要。

有任何想法吗?谢谢!


@Siddarth 将参数传递给的想法exportSheetsToText()是关键。我也遇到了宏名称传递给的错误Application.Run。下面的方法有效并且更加干净。

Sub exportsSheetsToTextForAll()

    Application.AutomationSecurity = msoAutomationSecurityForceDisable

    excelFiles = Dir(ThisWorkbook.Path & "\" & "New*.xlsx")
    fromPath = ThisWorkbook.Path

    Do While Len(excelFiles) > 0
        Debug.Print Files
        Set oWb = Workbooks.Open(Filename:=fromPath & "\" & excelFiles)
        Application.Run "exportSheetsToText", oWb
        oWb.Close SaveChanges:=False
        excelFiles = Dir
    Loop

End Sub

Sub exportSheetsToText(iWb As Workbook)

    For Each ws In iWb.Worksheets
        ws.Copy
        Set wb = ActiveWorkbook
        textFile = Left(iWb.FullName, InStr(iWb.FullName, ".") - 1) & "-" & ws.Name & ".txt"
        wb.SaveAs Filename:=textFile, FileFormat:=xlText
        wb.Close SaveChanges:=False
    Next ws
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Excel VBA 循环工作簿文件夹并将所有工作表导出为制表符分隔文本 的相关文章

  • 如何将文本日志文件导入 Excel 列

    我有一些表格数据 39645961 79966658 358920045121212 0 75 2013 01 30 20 47 52 39646124 79966771 358920045121212 0 5 2013 01 30 20
  • 将日期格式设置为 mm/dd/yyyy 文本

    一旦 mm dd yyyy 格式的日期与空格和文本连接起来 例如 05 03 2015 摘要报告 您如何将此连接的单元格复制到另一个单元格作为文本 但没有日期变成 42127摘要报告 CONCATENATE TEXT A1 月 日 年 总结
  • 运行时错误'-2147352567 (80020009)'指定集合的​​索引超出范围

    我定期遇到错误 运行时错误 2147352567 80020009 指定集合的 索引超出范围 抛出这个错误就行了 对于 wks Shapes 中的每个 cb 这是完整的代码 Sub SelectAll wks As Worksheet Ap
  • 使用查找函数未找到值的错误消息

    我使用此代码来检查条形码是否在数据库中 但每次条形码不在列表中时 它都会提示一条错误消息 运行时错误 91 未设置对象变量或 With 块变量 是否有一行我可以像消息框一样添加 表明输入的条形码无效 我知道这就是我所需要的 但显然 我不知道
  • 如何为使用 NPOI 创建的 Excel 中的单元格设置验证

    我使用以下命令创建了一个 excel 文件NPOI使用以下代码 var workbook new HSSFWorkbook var sheet workbook CreateSheet Candidate Add header labels
  • Excel 计数范围内唯一的 if

    如果 B 列是一个值 可以使用什么公式来计算 A 列中的唯一值 我在网上看到过很多 但当仅使用列范围时 它们似乎都不起作用 数据的长度将有所不同 因此只能使用列引用 这有效 SUMPRODUCT A1 A18 lt gt B1 B18 D
  • 是否可以在 Outlook 启动时运行 VBA 函数?

    我希望 Outlook 启动后立即运行 VBA 函数 这可能吗 如果可以 我需要做什么 我在谷歌上的搜索失败了 我不介意弹出安全警报 Use the Application Startup事件在ThisOutlookSession Priv
  • Excel:匹配两列并输出第三列...并且...每列中有多个实例

    继续前一篇文章 Excel 匹配两列并输出第三列 https stackoverflow com questions 17839932 excel match two columns and output third 我在 A 列中的值不唯
  • 处理 1.15 亿个细胞的最快方法是什么?

    我收到了一项工作任务 其中我要查找 8 位数字并将其替换为来自 2 列表的相应新值 基本上是一个 vlookup 然后用新值替换旧值 我面临的挑战是 2 列表有 882k 行 我尝试替换的单元格约为 1 2 亿 41 000 行 x 300
  • 单步执行会产生与运行不同的结果

    我有一段代码用于拆分单元格中的文本 数据是由不使用任何有用的分隔符的调查程序输出的 因此不幸的是 将文本转换为列对我没有任何帮助 我写了这段代码 但事实证明 两种情况下结果是不同的 我一步步运行代码 直到添加第一列 然后让它完成 我从执行宏
  • 有一个更好的方法吗? VBA脚本

    我这里有一份供料泵的跟踪清单 我们必须考虑库存水平 所以我做了这个 当您将泵输入表中时 什么也没有发生 当您将患者姓名放在上面时 该行会变成粉红色 表明该泵已离开我们的库存 我试图将一个脚本 宏放在一起 可以计算我们仍然拥有的泵 即白色行
  • EPPlus / 如何从数据透视表获取数据?或者说如何轻松操作数据?

    我在处理报告中的数据上浪费了很多时间 使用数据透视表是个好主意 但是如何呢 我尝试了一些免费的PivotTable类 但缺少小计 然后 另一种方法 为了excel我正在使用的报告的输出EPPlus 它还支持数据透视表 问题是我们的一些客户没
  • 将 Excel 模板 (xltx) 作为 Excel 模板而不是工作簿打开

    我正在尝试编写一行代码来打开 Excel 模板 xltx 文件作为 Excel 模板文件而不是新工作簿 我只是想让用户查看和编辑他们在我们网络上的库文件夹中的模板 然而 我尝试过的所有操作都会打开一个新的工作簿而不是模板 我尝试过互操作 W
  • 如何同时在多个 Wksheet 中搜索某个字符串?

    我有大约 30 张工作表 我希望这些代码同时运行 我想找到 ABC 并删除所有工作表中它旁边的单元格的值 我的错误来自 Set rSearch range A1 range A rows count end x1up 当我在 With 语句
  • Excel IE 自动化识别“css”元素

    仍然在抓取网站 从网页打印等方面进行掠夺 但遇到了一个障碍 我希望有人可以帮助我 下图显示了我想要激活的选项卡 我有代码可以到达那里 但无法激活该选项卡 虽然最后一行代码可以在我的台式电脑上运行 但我无法让它在我的其他电脑上运行 我可能可以
  • 我怎样才能优化这个vba循环代码?

    嗨 我写了这段代码 但这段代码非常慢 我该如何优化这段代码 Private Sub printItem r lastCol objStream FirstCol 1 Dim strFirst As String strFirst CStr
  • 替换VBA中的变量字符串

    我需要替换字符串中的某些内容 但替换的内容可能会有所不同 有可能 XY test XXxY test XXyyXx TEST yXyy Test 以及几乎任何其他空格和上述情况的组合 我需要替换 test 部分并保留 XXX 所以 当使用简
  • 点击后如何等待页面加载

    下面是简单的 IE 自动化代码 只需输入订单号 例如1413105088和邮政编码始终是78759并单击 提交 按钮 然后从结果页面中获取跟踪号码 例如017136295201034并将它们放入 C 列 它按预期工作 但由于 IE 不太可靠
  • Excel 仅粘贴特殊使用值,还将值的数据类型与值一起复制到目标单元格中

    我一直在尝试更多地了解 Excel 单元格 特别是它们的数据类型 如果有人对细节感兴趣 我的调查位于下面的编号点中 我的结论被标记为 A 到 D 我真的很感兴趣是否有人有什么可以补充的 答 每个 Excel 单元格都有一个属性 用于定义它将
  • 是否可以编写自定义 Power Query 连接器?

    在 来自其他来源 下的 Power Query 中 我们看到许多专业提供商 Facebook SAP SalesForce 等 我有兴趣编写一个自定义提供程序来访问无法通过任何内置连接器使用的本地专有数据存储 我知道 访问没有支持连接器的数

随机推荐

  • 在多个网页(.cshtml 文件)中使用 Razor @functions

    我有以下功能 我希望可用于我的 asp net 网页 2 应用程序中的多个 cshtml 视图 如何使该功能可用于应用程序中的任何视图 而不是仅一个视图 functions public bool DisplayButton String
  • 您的backbone.js 项目的最佳实践是什么?

    尽管我已经关注backbone js 几个月了 并且学习了大量教程 但我仍然对在更大的项目中使用backbone 或我的相关技能 没有足够的信心 我的经验是 backbone js 教程的质量差异很大 有些已经过时了 尤其是backbone
  • ClickHouse新手,无法创建本地主机

    我是 clickhouse 的新手 正在尝试开始 我已经安装了能够在我的计算机 ubuntu 16 04 上使用它所需的所有软件包 但是当我使用 clickhouse client 命令时 我得到以下信息 ClickHouse client
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc
  • 向特定客户端发送消息以及消息发送用户

    我是 SignalR 的初学者 我创建了一个基于 SignalR 的基本聊天应用程序 我面临的问题是我想向特定客户端以及发送消息的用户发送消息 这个怎么做 我知道要向特定客户端发送消息 我们可以这样做 Clients Client Cont
  • 关于 scala.math.Integral 的问题

    有什么方法mkNumericOps andmkOrderingOps of scala math Integral http www scala lang org api current scala math Integral html我们
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 如何强制执行特定的 UserControl 设计

    我正在编写一个基本用户控件 它将由一堆其他用户控件继承 我需要对所有这些后代控件强制执行某种设计 例如 顶部必须有几个按钮以及一个或两个标签 后代用户控件区域的其余部分可以自由放置任何内容 最初 我认为我可以将一个面板放到 Base Use
  • 如何在java 1.8中从org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8转换为oracle.jdbc.OracleConnection

    如何在 java 1 8 中从 org jboss jca adapters jdbc jdk8 WrappedConnectionJDK8 转换为 oracle jdbc OracleConnection 目前我正在这样使用并得到以下异常
  • 两种颜色边框

    客户想要两种颜色的边框以获得浮雕外观 我可以在一个元素上执行此操作吗 我希望避免堆叠两个具有单独边框的 DOM 元素 是的 使用outline财产 它充当您边界之外的第二个边界 但请注意 它可能会以一种奇怪的方式与边距 填充和阴影进行交互
  • 如何从配置加载套接字 io 事件监听器? [复制]

    这个问题在这里已经有答案了 我有使用套接字io 的nodejs 应用程序 我将存储在 config routes js 中的所有事件侦听器 module exports routes auth login controller auth a
  • IE6中透明背景png图像问题

    PNG类型的背景图像在ie6中不透明 查看这些帖子 IE6 PNG 透明度 https stackoverflow com questions 697682 ie6 png transparency 如何在IE6中使用半透明png图片 ht
  • 如何使用剪辑来减少绘画时间?

    我正在尝试使用 Clip 来减少 CPU 负载 但剪辑在屏幕上留下了一些我似乎无法摆脱的垃圾 另外 打开和关闭剪辑似乎对 CPU 负载没有影响 在任一情况下 大部分时间似乎都花在重绘管理器和绘制缓冲图像上 import static jav
  • 正在获取“未终止 [] 设置”。 C# 中的错误

    我正在 C 中使用以下正则表达式 Regex find new Regex url
  • 检测 SignalR Hub 客户端立即断开连接

    SignalR Hub OnDisconnected 何时在服务器端引发 对于崩溃或关闭而不调用Stop method 我正在使用 SignalR NET 客户端进行测试 而不是 javascript 客户端 如果我打电话给Stop客户端上
  • BigQuery 无法插入作业。工作流程失败

    我需要通过 Dataflow 和 Beam 运行从 GCS 到 BigQuery 的批处理作业 我的所有文件都是具有相同架构的 avro 我创建了一个数据流java应用程序 它在较小的数据集 1gb 大约5个文件 上取得了成功 但是当我尝试
  • matlab中求和函数句柄

    Hi我试图对两个函数句柄求和 但它不起作用 例如 y1 x x x y2 x x x 3 x y3 y1 y2 我收到的错误是 对于 function handle 类型的输入参数 未定义函数或方法 plus 这只是一个小例子 实际上我实际
  • 将自定义参数传递给 ValidationAttribute

    我构建了一个自定义 ValidationAttribute 以便可以验证系统中的唯一电子邮件地址 但是 我想以某种方式传递自定义参数 以便为我的验证添加更多逻辑 public class UniqueEmailAttribute Valid
  • Node / Express Handlebars - 在哪里定义自定义助手

    我正在开发一个节点 快速 车把应用程序 我刚刚发现了自定义助手 但我不知道在哪里定义它们 我尝试在实际视图模板 hbs 文件中添加一些
  • 使用 Excel VBA 循环工作簿文件夹并将所有工作表导出为制表符分隔文本

    我拼凑了一个 Excel VBA 脚本 该脚本将打开的工作簿中的所有工作表写入单独的制表符分隔文件 这仍然是 宏 吗 我正在 Excel 真空中学习这一点 它一次只处理一本工作簿 效果很好 这里是 Sub exportSheetsToTex