如何保存工作簿并处理 TITUS(或任何其他文档分类加载项)弹出窗口?

How to save workbook and handle TITUS (or any other document classification add-in) popup?

我正在 HP UFT 12 中创建一个脚本,该脚本针对 CSV 文件执行网格数据验证并将结果保存在包含两个工作表的 Excel 文件中。
我为此使用 Excel,因为它对用户来说更清晰,因为它允许单元格格式化,更容易比较数据等等。

我的代码在我的机器上运行,但我的客户端安装了 TITUS 文档分类加载项,所以每次他们 运行 我的脚本时,它都会挂起,因为 TITUS 弹出消息要求用户保存时对文档进行分类。消息没有显示给用户,可能是因为 objExcel.DisplayAlerts = False,但脚本没有继续执行。

以下是我的代码中与此事相关的部分(出于保密原因,我省略了大部分代码)。

Dim objExcel : Set objExcel = CreateObject("Excel.Application")
Dim objWorkbook : Set objWorkbook = objExcel.Workbooks.Add
objExcel.Visible = False
Dim wsGrid : Set wsGrid = objWorkbook.Worksheets(1)
wsGrid.Name = "Grid Data"
Dim wsExported : Set wsExported = objWorkbook.Worksheets.Add
wsExported.Name = "Exported Data"

' Internal code to perform validation and fill worksheets ...

objExcel.DisplayAlerts = False
objWorkbook.SaveAs "C:\my_folder_path\my_file_name.xls"    ' This is where it hangs in machines where the add-in is installed
objWorkbook.Close
objWorkbook.Quit
Set objWorkbook = Nothing
Set objExcel = Nothing

我在网上搜索过,但到目前为止还没有找到相关的内容。我确实找到了 this and this,但它们与 TITUS for Outlook 相关,但没有一个问题得到妥善解决。
有谁知道如何解决这个问题,或者可以指出一项研究 material 来帮助我解决这个问题?

提前致谢。

虽然看起来简单得离谱(我不知道我以前怎么没有想到这一点),我设法通过在保存文件之前添加 objExcel.EnableEvents = False 来解决我的问题:

objExcel.DisplayAlerts = False
objExcel.EnableEvents = False   ' this is the problem solver for the matter!
objWorkbook.SaveAs "C:\my_folder_path\my_file_name.xls"
objExcel.EnableEvents = True    ' Not sure if this statement is necessary, though
objWorkbook.Close
objWorkbook.Quit
Set objWorkbook = Nothing
Set objExcel = Nothing

我不是 VBA 编码员,但我的朋友们正在研究这个

我们找到的解决方案是针对 Titus 的行为

当你保存它时,它会要求你对任何新的工作簿进行分类。注意新的不是已经保存的工作簿。 所以我们创建了一个空白工作簿并保存它(具有所需的分类)

修改了代码以获取该工作簿并向其添加数据并使用另存为创建所需的文件

它运行顺利,没有任何问题。

据我所知,上述答案中的 none 实际上对 Excel 工作簿进行了分类(我在我们的工作内部网上发现了这个,但在互联网上找不到任何代码)。

下面的代码应将分类设置为内部分类,您可以根据需要进行修改,并且还将根据 'ClassificationVal'.

创建页脚文本

代码然后设置分类,添加左页脚并同时删除烦人的分页符(注意:设置分类自动设置分页符)。

保存前禁用事件似乎是避免弹出框的唯一方法...

注意:您需要将“[公司名称]-”替换为例如'IBM-'(如果贵公司将其名称添加到分类中,如果他们仅使用 TITUS 分类,则删除“[公司名称]-”。此外,根据我的经验,这些分类似乎是为每家公司定制的,所以您可能需要相应更新。


ClassificationVal = "[Company Name]-1nternal"

ClassificationDesc = "[Company Name]: "
ClassificationDesc2 = ""
    Select Case ClassificationVal
        Case "[Company Name]-1nternal"
            ClassificationDesc2 = "Internal"
        Case "[Company Name]-pub1ic"
            ClassificationDesc2 = "Public"
        Case "[Company Name]-Confidentia1"
            ClassificationDesc2 = "Confidential"
        Case "[Company Name]-5ecret"
            ClassificationDesc2 = "Secret"
        Case "[Company Name]-pr1vate"
            ClassificationDesc2 = "Private"
    End Select
    If ClassificationDesc2 = "" Then Stop
ClassificationDesc = ClassificationDesc & ClassificationDesc2

With ActiveWorkbook.CustomDocumentProperties
     .Add Name:="[Company Name]Classification", _
     LinkToContent:=False, _
     Type:=msoPropertyTypeString, _
     Value:=ClassificationVal
End With

For Each ws In ActiveWorkbook.Worksheets
    ws.PageSetup.LeftFooter = ClassificationDesc
    ws.DisplayPageBreaks = False
Next ws

Application.EnableEvents = False    'disable TITUS pop-up

ActiveWorkbook.SaveAs Filename:= _
        "C:\Data\kelvinj\My Documents\TITUS Test.xlsx", 'Change to suite your requirements
             FileFormat:=xlOpenXMLWorkbook _
             , CreateBackup:=False

Application.EnableEvents = True

不知道为什么这么难找到解决方案 - 这是我工作过的第二家被 TITUS 感染的跨国公司,所以肯定有很多人需要这个代码?!