51Testing软件测试论坛

标题: QTP输出数据到已存在excle文件. [打印本页]

作者: onlonely    时间: 2009-3-31 10:43
标题: QTP输出数据到已存在excle文件.
'输出数据到excle中
exclefile = "D:\QTP\reg\reguser"®now&".xls"
Set ExcelObj = CreateObject("Excel.Application")
ExcelObj.Workbooks.Add '增加一个工资表
Set NewSheet = ExcelObj.Sheets.Item(1) '取得新添加的工作表
NewSheet.Name = "reguser"      '重命名工作表名字
row = 1            '从第一行开始
NewSheet.Cells(1,1) = "username"
NewSheet.Cells(1,2) = "password"
NewSheet.Cells(2,1) = DataTable("long_name", dtGlobalSheet)®now
NewSheet.Cells(2,2) = DataTable("password", dtGlobalSheet)®now
NewSheet.Columns("A:A").ColumnWidth = 20  '宽度
NewSheet.Columns("A:A").Font.Bold = True   '加粗
NewSheet.Columns("B:B").ColumnWidth = 20
NewSheet.Columns("B:B").HorizontalAlignment = -4108 ' 剧中
'保存文件,exclefile为文件路径
ExcelObj.ActiveWorkbook.SaveAs exclefile
ExcelObj.Quit
Set ExcelObj = Nothing
'--------------------------------------------------------------------------------------------

有如上代码,是输出数据到excl文件中,可是实际运行发现,是新建一个文件保存到里面.如果新建的文件存在,会提示是否覆盖
所以我的问题是,
如何做到是添加数据到已经存在的文件中

[ 本帖最后由 onlonely 于 2009-3-31 14:06 编辑 ]
作者: wuei9090    时间: 2009-3-31 11:22
ExcelObj.Workbooks.Add

或者 ExcelObj.ActiveWorkbook.SaveAs exclefile
后面可能会可以加参数 一个true什么的就可以是强制覆盖 自己查vbs函数吧
作者: willturner    时间: 2009-3-31 12:05
你用Workbooks.Add 当然是新建一个excel文件了....

应该用Workbooks的Open方法,如下
Set xlsApp = CreateObject("Excel.Application")
xlsApp.Visible = False
//excelFile为你要打开的文件,需要文件所在的全路经
Set xlsWorkBook = xlsApp.Workbooks.Open(excelFile)
//做你要做的操作
..
...
....
//保存
xlsWorkBook.Save
作者: onlonely    时间: 2009-3-31 14:03
标题: 回复 3# 的帖子
问题搞定,为了帮助后面需要帮助的人,贴出代码来供参考,注释以及比较详细了.

'输出内容到已经存在的excle中-----------------------------------------
xlsworkname ="reguser"                       '工作表名称
workbookurl="D:\QTP\reg\" & xlsworkname & ".xls"      'excle文件路径
Set ExcelObj = CreateObject("Excel.Application")     ' 创建excle工作表对象
ExcelObj.Visible = False                       '激活工作表
Set xlsWorkBook = ExcelObj.Workbooks.Open(workbookurl)  '打开excle文件
Set NewSheet = xlsWorkBook.Sheets(xlsworkname) '选择添加数据的工作表
row = 1            '从第一行开始
Do
'msgbox(NewSheet.cells(row,1)) '调试语句
If NewSheet.Cells(row,1) ="" then    '写入数据
NewSheet.Cells(row,1) = DataTable("long_name", dtGlobalSheet)®now
NewSheet.Cells(row,2) = DataTable("password", dtGlobalSheet)®now
exit do
end if
row = row  + 1
loop
xlsWorkBook.Save   ''保存文件
xlsWorkBook.close  '关闭工作表
Set xlsWorkBook = Nothing
'--------------------------------------------------------------------------------------------





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2