我在HP UFT12中创建了一个脚本,该脚本针对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和this,但它们与TITUS for Outlook相关,而且这两个版本的问题都没有得到适当的解决。
有没有人知道如何解决这个问题,或者可以向我推荐一份研究材料来帮助我解决这个问题?
提前谢谢。
发布于 2016-07-01 21:10:54
它看起来非常简单(我不知道我以前怎么没有想到这一点),我设法解决了我的问题,只需在保存文件之前添加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发布于 2018-07-20 16:51:33
据我所知,上面的答案都没有对Excel工作簿进行分类(我在我们的工作内部网上发现了这一点,但在互联网上找不到任何代码)。
下面的代码应该将“分类”设置为“内部”,它可以根据您的需要进行修改,并且还将基于“ClassificationVal”创建页脚文本。
然后,代码设置分类,添加左侧页脚,同时删除恼人的分页符(注意:设置分类会自动设置分页符)。
在保存前禁用事件似乎是避免弹出框的唯一方法...
注意:您需要将“Company Name-”替换为“”。“‘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不知道为什么这很难找到解决方案-这是我工作过的第二家跨国公司感染了提图斯,所以肯定有很多人需要这个代码?!
发布于 2017-10-12 15:24:49
我不是一个VBA程序员,但是我的朋友们正在研究这个。
我们找到的解决方案是关于提图斯的行为
当你保存任何新的工作簿时,它会要求你对它进行分类。注意:新建工作簿不是已保存的工作簿。因此,我们创建了一个空白工作簿并将其保存(具有所需的分类)
修改了代码以获取该工作簿并向其中添加数据,并使用另存为创建所需的文件
它工作得很顺利,没有任何问题。
https://stackoverflow.com/questions/38109265
复制相似问题