运行 VBA 脚本导致 Excel 停止响应

2023-11-22

我有一个 VBA 脚本,可以将工作表添加到大约 500 个 Excel 文件中。 我运行 VBA 脚本和添加简单的工作表没有任何问题,但是当我尝试添加其中包含 VBA 脚本以及图形和按钮的工作表时,它会工作一段时间然后冻结。

这是代码。我知道它没有错误处理 - 有什么建议如何解决这个问题或者是什么导致 Excel 冻结?

Sub FindOpenFiles()

Const ForReading = 1
Set oFSO = New FileSystemObject

Dim txtStream As TextStream

Dim FSO As Scripting.FileSystemObject, folder As Scripting.folder, file As Scripting.file, wb As Workbook, sh As Worksheet
Dim directory As String

'The path for the equipement list. - add the desired path for all equipement or desired value stream only.
Set txtStream = oFSO.OpenTextFile("O:\SiteServices\Maintenance\Maintenance Support Folder\Maintenance Department Information\HTML for Knowledgebase\Excel for Knowledgebase\Equipement paths-all.txt", ForReading)

Do Until txtStream.AtEndOfStream
    strNextLine = txtStream.ReadLine
    If strNextLine <> "" Then

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set folder = FSO.GetFolder(strNextLine)


    For Each file In folder.Files
        If Mid(file.Name, InStrRev(file.Name, ".") + 1) = "xls" Then
            Workbooks.Open strNextLine & Application.PathSeparator & file.Name

        Set wb = Workbooks("Equipment Further Documentation List.xls")
    For Each sh In Workbooks("Master File.xls").Worksheets
        sh.Copy After:=wb.Sheets(wb.Sheets.Count)
    Next sh

     ActiveWorkbook.Close SaveChanges:=True
     ActiveWorkbook.CheckCompatibility = False

        End If


    Next file
    End If

    Loop
txtStream.Close

End Sub

所以,给你一些建议:

第一。 (根据评论)

添加作为第一行到您的子程序中:Application.ScreenUpdating = false并在前面添加另一行End Sub : Application.ScreenUpdating = true

第二。移动这一行(它设置 constance 参考):

Set wb = Workbooks("Equipment Further Documentation List.xls")

before:

Do Until txtStream.AtEndOfStream

第三只是一个提示。

要查看子进程的进度,请添加以下行:

Application.StatusBar = file.Name

在这一行之后:

Workbooks.Open strNextLine & Application.PathSeparator & file.Name

之前End Sub另外添加以下代码:

Application.StatusBar = false

因此,您可以在 Excel 应用程序的状态栏中看到当前正在处理的文件名。

请记住,处理 500 个文件一定很耗时。

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

运行 VBA 脚本导致 Excel 停止响应 的相关文章

  • Excel - 确定排列的奇偶性

    我正在处理一个 Excel 工作表 需要确定大小数字的垂直数组的奇偶校验N 该数组包含来自的每个数字1 to N每一次正好一次 在这种情况下 奇偶校验被定义为将加扰数组转换为从小到大排序的数组所需的交换次数 例如 数组 3 1 2 4 具有
  • 使用 R Shiny 从 XLConnect 下载 Excel 文件

    有没有人尝试过使用 R Shiny 中的下载处理程序通过 XLConnect 下载新创建的 Excel 文件 在 ui R 中有一行不起眼的行 downloadButton downloadData Download 在 server R
  • 文本到行 VBA Excel

    我有一个电子表格 其中包含大约 4000 行数据 其中一列数据具有唯一的订单号 我希望使用 作为分隔符将其分隔 所以本质上我想要 Name Order Date Jane 123 001 111 08 15 2013 Gary 333 12
  • Perforce Excel 文件差异

    我有一堆 excel 文件放在 perforce 上 我想对这些 excel 文件进行 diff 类似于我在 perforce 中对其他文件 如 java cs 等 所做的操作 我尝试寻找一个插件 发现 P4OFC 只适合对 word 文件
  • 如何在VBA编辑器中跳转到行号?

    我在 Office 2010 中使用 VBA 在顶部 有一个带有行号和列号的框 例如 Ln 1480 Col 17 有没有办法在代码编辑中 而不是在执行中 直接跳转到另一个行号 就像我使用的那样Ctrl G在记事本中 这个MSDN答案 ht
  • Excel 工作簿 - 从 C# 读取速度非常慢?

    正在尝试读取 Excel 工作簿 发现读取 3560 行 7 列的工作表需要很长时间 大约需要 1 分 17 秒 我所做的就是循环遍历整个工作表并将值存储在列表中 这是正常现象 还是我做错了什么 static void Main strin
  • VBA Shell 并等待退出代码

    我正在打包一个办公应用程序 VBA 它调用 C 控制台应用程序来执行应用程序 大型模拟程序 的一些繁重工作 我希望能够让 VBA 应用程序等待控制台应用程序完成并从控制台应用程序检索退出代码 我已经能够做到前者 但尚未能够从应用程序中检索退
  • 如何让VLOOKUP在VBA中选择到最低行?

    希望自动在单元格中插入 VLOOKUP 公式 录制宏时 我指示它使用相同的公式填充下面的列 效果很好 但是 当 VLOOKUP 搜索的表发生变化 更多或更少的行 时 就会出现问题 在记录时 VLOOKUP 下降到表中的最后一行 273 但是
  • VBA 中的多线程

    这里有人知道如何让VBA运行多线程吗 我正在使用 Excel 无法用 VBA 本地完成 VBA 构建在单线程单元中 获得多个线程的唯一方法是使用 VBA 之外的其他具有 COM 接口的东西构建 DLL 并从 VBA 调用它 信息 OLE 线
  • Office excel将CORS请求作为跨域请求

    我正在尝试从我的 Excel 插件发出跨域请求 正如这里所建议的 http dev office com docs add ins develop addressing same origin policy limitations http
  • 导出到excel时如何显示前导零?

    我正在通过更改内容类型来创建 Excel 报告 Response ContentType application vnd ms excel 我有包含前导零的值 问题是导出到 Excel 时缺少前导零 e g 000123 gt 123 我知
  • 在合并的单元格中选择、插入照片并将其居中

    我是一名研发面包师 正在为我的团队制作食谱模板 模板中有照片 但我需要轻松地允许他们单击一个按钮 打开照片的文件选择器 然后将该照片放在合并的单元格中 我其实不太擅长做这个 Sub InsertPhotoMacro Dim photoNam
  • 使用 ObjPtr(Me) 返回自定义类实例的名称?

    我明白那个ObjPtr http support microsoft com kb 199824将返回内存中对象的地址 并且它指向一个名为 IUNKNOWN 的结构 并且其中编码了某种接口定义以公开对象结构 但我不知道如何确定一个对象的接口
  • SQL Server,插入 Excel“链接服务器”时出现“无效列名”错误

    我有一个简单的 Excel 电子表格文档 运行 Office 2013 我使用 Microsoft Office 15 0 Access 数据库引擎 OLE DB 提供程序 将其用作数据库 我可以使用 MS SQL Server Manag
  • 将包含宏的工作簿复制到不带宏的工作簿

    我能够复制工作簿 复制到所需位置 其中在后台包含宏 该副本还包含相同的宏 我的问题是我不希望这个重复的工作簿包含宏 谁能告诉怎么做吗 先感谢您 将您的工作簿保存为无宏 即简单地保存为 Excel 工作簿 对于我的 Excel 2007 这是
  • 我可以获取VBA代码中的注释文本吗

    可以说我有以下内容 Public Sub Information TEST End Sub 有没有办法得到 TEST 结果 不知何故通过VBA 例如 在 PHP 中 有一个获取注释的好方法 这里有什么想法吗 编辑 应该有办法 因为像 MZ
  • VBA ByRef 参数类型不匹配

    最初在我的主代码部分中 我有一个丑陋的 if 语句 尽管它会运行丑陋 我决定将其设为我要调用的函数 这导致我收到错误 编译错误 ByRef 参数类型不匹配 我的假设是该函数需要正确引用 尽管我一直在阅读文档并且不明白为什么 gt 声明 Sh
  • Excel 数字缩写格式

    这是我想要完成的任务 Value Display 1 1 11 11 111 111 1111 1 11k 11111 11 11k 111111 111 11k 1111111 1 11M 11111111 11 11M 11111111
  • 两个日期之间的小时数在 Excel 中不起作用

    根据要求 我提供了一张简化的屏幕截图来说明该问题 如您所见 我减去了两个日期并将其格式化为 h mm ss 为什么这不能提供两个日期之间经过的总小时数 有一个更好的方法吗 下面有一个很好的答案 但我试图弄清楚为什么按照此屏幕截图中所示的方式
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特

随机推荐

  • 我应该提交由 Eclipse 更改的文件吗?

    我以Eclipse项目的形式继承了一个Java项目 更改 Tomcat 配置 从 v6 到 v7 后 Subclipse 提示我提交以下文件 classpath org eclipse core prefs org eclipse comm
  • 为什么 Silverlight TextBox 使用 \r 作为换行符而不是 Environment.Newline (\r\n)?

    在 silverlight 中 如果 TextBox AcceptsReturn 则所有换行符均为 r 即使 Environment Newline 为 r n 为什么是这样 WPF 将 r n 作为文本框的换行符 我同意尔坦的回答 我遇到
  • 解码 Base64 图像

    我在 HTML 中嵌入了 Base64 图像 如何使用 C 或 VB net 对其进行解码 google com gt base64 图像解码 C gt http www eggheadcafe com community aspnet 2
  • 启用位置/GPS 设置而不使用 Play 服务 API

    大多数人可能已经知道 Google Play 服务中有一个新的位置设置对话框 API 对于那些不知道的人 这里是使用 Dialog API 的地图应用程序的屏幕截图 谷歌只在他们的播放服务中添加该 API 这有点不公平 另一方面 我认为如果
  • 仅静态链接某些库

    在与 GCC 链接时 如何将某些特定库静态链接到我的二进制文件 gcc static 尝试静态链接all链接库 但我还没有其中一些的静态版本 例如 libX11 gcc lsome dynamic lib code c some stati
  • CrossGeolocator 的 GetPositionAsync 不起作用

    我在用交叉地理定位器检索设备的当前纬度和经度 不过我在里面使用它出现时覆盖方法 但它不起作用 这异步获取位置方法挂起应用程序 protected override void OnAppearing base OnAppearing var
  • jQuery:如何更改标签名称?

    jQuery 如何更改标签名称 例如 tr 1 tr I need div 1 div 我可以 创建 DOM 元素 将tr内容复制到div 从 dom 中删除 tr 但我可以直接做吗 PS tr get 0 tagName div 结果是D
  • Liquibase Hibernate 插件不起作用

    如此处所述 https github com liquibase liquibase hibernate issues 74 我在使 liquibase hibernate 扩展正常工作时遇到问题 我想我已经设置好了一切 但似乎我一直遇到奇
  • Spring - mongodb - 聚合 - 需要“光标”选项

    执行以下聚合管道 public void getMostLikedItems UnwindOperation unwind Aggregation unwind favoriteItems GroupOperation group Aggr
  • 仅生成 8 个字符的 UUID

    UUID 库生成 32 个字符的 UUID 我想生成仅 8 个字符的 UUID 可以吗 这是不可能的 因为 UUID 每个定义都是 16 字节的数字 当然 您可以生成 8 个字符长的唯一字符串 请参阅其他答案 另外 生成较长的 UUID 并
  • 将文件从操作系统拖放到 Java 应用程序 (Swing)

    首先我要说的是我一直在阅读拖放教程以及类似的问题 但不幸的是我对这件事变得更加困惑 我想要实现的目标相对简单 所以我很惊讶它已经给我带来了这么多麻烦 我正在编写一个小型实用程序应用程序 它将把一堆结果文件 自定义定义的 xml 类型 合并到
  • 未找到“COM”类

    我一直在尝试在脚本中打开 Word 文档 但收到相同的错误 Fatal error Class COM not found in Applications XAMPP xamppfiles htdocs php on line 3 我的代码
  • 如何在 NodeJS 中创建带有路径的文件对象?

    我想知道是否可以创建一个FileNodeJS 中的对象 名称 大小 数据 以及现有文件的路径 我知道客户端可能有这种情况 但我没有看到 NodeJS 的任何内容 换句话说 我想要与 NodeJS 中相同的函数 function srcToF
  • CompositeCollection 内的绑定

    我想创建一个包含多个 静态 TabItem 在 XAML 中显式键入 和多个动态添加的 TabItem 的 TabControl 为了实现这一点 我尝试使用 CompositeCollection 作为 TabControl ItemSou
  • fft(DFT) x 轴的单位[重复]

    这个问题在这里已经有答案了 可能的重复 如何从 FFT 结果获取频率 我对 Matlab 中 fft DFT 命令的 x 轴感到困惑 当我们对在 n 点采样的信号执行 fft 命令时 我们会得到一个 x 轴为 0 到 n 1 的图 它的意思
  • 可以根据Android操作系统版本仅加载特定行的代码吗?

    是否有一行简单的代码允许仅在操作系统版本满足要求时加载代码 假设我的目标操作系统是 2 2 但 android 1 5 的最小 sdk 是 3 所以即使我的项目中有一些与 1 5 不兼容的代码 它仍然会编译 因为目标操作系统是 2 2 无论
  • Google 数据存储 - 查询键值

    我有一个 EntityKind SuggestedInterest 当我用键 GrpId 和属性 suggestedint 填充它时 现在 我需要请求的 GrpId 的 suggestedint 值 因此 我将查询写为 String fin
  • 闪亮 UI 中的帮助文本工具提示

    我想将复选框标签的帮助文本作为工具提示放置 在下面的示例中我使用shinyBS包 但我只让它适用于复选框输入组的标题 在 Lernerfolg 或 Enthusiasmus 标签之后它如何运作有什么想法吗 library shiny lib
  • AVAudioPlayer 的 IOS 最大音量级别?

    我使用 AVAudioPlayer 播放 caf 文件 我的问题是 对于我的目的来说 声音不够响亮 由于 iPhone 的铃声更大 我想知道如何归档此卷 我已经尝试操作 caf 文件 但没有真正成功 有任何想法吗 我到目前为止使用的代码 A
  • 运行 VBA 脚本导致 Excel 停止响应

    我有一个 VBA 脚本 可以将工作表添加到大约 500 个 Excel 文件中 我运行 VBA 脚本和添加简单的工作表没有任何问题 但是当我尝试添加其中包含 VBA 脚本以及图形和按钮的工作表时 它会工作一段时间然后冻结 这是代码 我知道它