【问题标题】:Automatical repair of number of corrupted .xlsx files via VBA script通过 VBA 脚本自动修复损坏的 .xlsx 文件数量
【发布时间】:2019-03-01 04:07:43
【问题描述】:

我的目录中有许多损坏的 .xlsx 文件。 我想打开每个文件进行修复并通过 VBA 脚本以相同的名称保存它。

我尝试了以下代码来解决这个问题:

Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As Workbook

Pathname = ActiveWorkbook.Path & "\output\"
Filename = Dir(Pathname & "*.xlsx")
Do While Filename <> ""
    Set wb = Workbooks.Open(Pathname & Filename, CorruptLoad:=xlRepairFile)
    wb.Close SaveChanges:=True
    Filename = Dir()
Loop
End Sub

但此代码仅修复第一个文件并打开 Windows 资源管理器手动保存文件。

有没有办法自动修复所有同名文件到同一个文件夹?

【问题讨论】:

  • 文件夹循环在这里有很好的记录。请浏览几个问题以了解如何实现Dir() 循环
  • @urdearboy 我知道如何循环遍历目录,这只是目录循环内部的一段代码。正如我在问题中所说,问题是循环中的每个文件都必须手动保存
  • @takeshi6 也许应该发布整个代码,而不是让我们猜测:)
  • @Rawrplus 用整个代码编辑问题
  • 好多年没接触VBA了,难道没有明确的wb.Save方法可以调用吗?

标签: excel vba


【解决方案1】:

我已经很多年没有接触过 VBA,但有一个明确的 wb.SaveAs 方法可以调用。

【讨论】:

    【解决方案2】:

    你设置Application.DisplayAlert = False了吗?你的代码看起来不错。你只需要稍后再打开它。

    【讨论】:

    • 不,这行不通。窗口资源管理器仍然弹出询问保存修复文件的位置
    • 这很奇怪。我用“SaveAs”和没有“SaveAs”复制了你的代码,看起来很好。
    • 可以附上你用过的文件吗?
    猜你喜欢
    • 2019-09-26
    • 2020-01-03
    • 2018-06-07
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多