2016-11-05 55 views
0

我的访问应用程序中有一个类模块,它将所有表(系统除外)导出到excel文件,以使表名称为工作表名称。由于这需要大约5秒钟,我将导出for循环包装在进度条中。这工作没有问题。一个问题仍然存在:似乎DoCmd.TransferSpreadsheet命令为用户提供了终止操作的选项。这由访问应用程序显示在进度条所在的相同位置,这就是为什么我的进度条被一些文本读取中断,原因大致如下:“如果您想停止按Esc”。我不知道哪一行vba可以防止这种情况出现。有任何想法吗?谢谢!停止访问干扰进度条

Dim subTdf As TableDef 
Dim subIntStatus As Integer 
Dim subIntTableCount As Integer 

For Each subTdf In pDbPfandDb.TableDefs 
    If Not (Left(subTdf.Name, 4) = "msys" Or Left(subTdf.Name, 4) = "usys") Then 
     subIntTableCount = subIntTableCount + 1 
    End If 
Next 

SysCmd acSysCmdInitMeter, "Exportiere Tabellen", subIntTableCount 

For Each subTdf In pDbPfandDb.TableDefs 
    If Not (Left(subTdf.Name, 4) = "msys" Or Left(subTdf.Name, 4) = "usys") Then 
     DoCmd.TransferSpreadsheet acExport, , subTdf.Name, pStrFilePath & pStrFileName & pStrFileExtension, True, subTdf.Name 
     subIntStatus = subIntStatus + 1 
     SysCmd acSysCmdUpdateMeter, subIntStatus 
    End If 
Next 

SysCmd acSysCmdRemoveMeter 

Here is how it should always look like

回答

0

循环之前试试这个:

DoCmd.SetWarnings (WarningsOff)

然后重新启用该警告的循环具有完成后。

DoCmd.SetWarnings (WarningsOn)

+0

感谢回复。我之前尝试过,不幸的是它不适合我。消息仍会在进度栏所在的区域弹出。 –

+0

你能提供此讯息的截图吗? –

+0

我编辑了这个问题。然而,我只能捕获显示我的消息的进度条屏幕截图,而不是显示“按esc ...”的屏幕截图,因为该屏幕快速消失(每循环弹出一个毫秒)。再次清楚:消息仅在进度条上可见。这就是为什么我猜这与警告不一样。 –