【问题标题】:Excel Gets Stuck on Save Through MacroExcel 卡在通过宏保存
【发布时间】:2019-03-15 21:31:40
【问题描述】:

我有一个用 Excel VBA 编写的非常广泛的程序,它工作得非常好,除非它试图保存。有时,不一定每次,宏都会保存工作簿(在这种情况下,导出为 CSV),但会卡在标有“正在保存”的窗口中,一条状态消息声称它正在保存我的文件,并且进度条不会进一步进步。它还有一个标有“取消”的按钮,当按下该按钮时,宏将继续执行,因为文件已保存。

这是我正在使用的子程序:

Sub exportTable()
Dim varIsOpen As Boolean
Dim varSaveLocation1 As String, varSaveLocation2 As String
varIsOpen = False

If ThisWorkbook.Sheets("ControlSheet").Range("D2").Value = "" Then
    varSaveLocation1 = ThisWorkbook.Path & "\CSVREVIEW\"
    varSaveLocation2 = varSaveLocation1 & Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now)
Else
    varSaveLocation1 = ThisWorkbook.Sheets("ControlSheet").Range("D2").Value
    If Right(varSaveLocation1, 1) <> "\" Then varSaveLocation1 = varSaveLocation1 & "\"
    varSaveLocation2 = varSaveLocation1 & Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now)
End If
    For counter = 1 To Workbooks.Count
        If Workbooks(counter).Name = "TableBook.xls" Then varIsOpen = True

        If varIsOpen = True Then Exit For
    Next

    If varIsOpen = False Then GoTo isClosed

Workbooks("TableBook").Activate

'On Error Resume Next
If Len(Dir(varSaveLocation1, vbDirectory)) = 0 Then
   MkDir varSaveLocation1
End If
If Len(Dir(varSaveLocation2, vbDirectory)) = 0 Then
    MkDir varSaveLocation2
End If
'On Error GoTo 0

Application.DisplayAlerts = False

ActiveWorkbook.Sheets("test").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\test", xlCSV

ActiveWorkbook.Sheets("part").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\part", xlCSV

ActiveWorkbook.Sheets("logFile").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\logFile", xlCSV

ActiveWorkbook.Sheets("deltaLimits").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\deltaLimits", xlCSV

ActiveWorkbook.Close

Application.DisplayAlerts = True

isClosed:
End Sub

可能还值得注意的是,我目前正在保存到服务器,但不记得它是否在本地目录上测试时这样做了。

我怎样才能让它不挂起?这个问题的原因和/或解决方法是什么?

【问题讨论】:

  • 不记得在本地目录上测试它时是否这样做了。 那么,为什么不使用本地目录或桌面文件夹来测试它呢?它是否表现出同样的问题?如果没有,那么访问服务器似乎有问题。
  • 你有没有试过打破看看它卡在哪一行?
  • @DavidZemens 有几个问题,首先是获得 59,000 行需要 10 分钟,以及问题无法以可预测的方式重现。
  • @jmdon 程序显然卡在了 save 命令上。通常情况下,它似乎卡在ActiveWorkbook.SaveAs varSaveLocation2 + "\deltaLimits", xlCSV 线上,但又一次,无法预测地重现该问题。我只知道我打算让这个程序 24/7 运行,而人机交互的要求抑制了程序的能力。
  • 您可以尝试保存到本地目录,然后将文件移动到服务器。这会将问题分成两部分:(1) Excel 保存 CSV 文件是否存在问题,(2) 写入服务器是否存在问题。

标签: vba excel excel-2010


【解决方案1】:

我的工作表开始发生这种情况 - .saveas 周围的一对 doevents 为我解决了这个问题。我不知道为什么需要它,或者它为什么起作用,我在一个帖子上看到它(我现在找不到)。

【讨论】:

    【解决方案2】:

    看起来问题实际上只是它正在保存到服务器位置。保存本地运行程序完美无缺。

    感谢@TonyDallimore 的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多