qtp中怎么得到excel中某一列的行数?
在excel表里的一个sheet中A列有10行数据,B列有20行数据,C列有30行数据。怎么获得A列的行数? Set objExcel = CreateObject("Excel.Application")
Set ResBook=objExcel.WorkBooks.open("C:\test.xls")
Set ResSheet=ResBook.WorkSheets("Sheet1")
msgbox ResSheet.Range("A65535").End(xlUp).Row
Range("A65535").End(xlUp)等同于先选中A65535这个单元格,然后按End+Up,如果A列什么都没有,会打出1. 这个写法还是拿不到具体列的行数,等我回去想想弄个好用的上来。 下面的代码凑合能用,但是不flexible
Set xlHandler = CreateObject("Excel.Application")
xlHandler.DisplayAlerts = False
Set xlBook = xlHandler.WorkBooks.Open("D:\Temp01\test.xls")
'xlBook.RunAutoMacros xlAutoOpen
xlHandler.Run "Sheet1.test"
xlBook.Save
xlBook.Close
xlHandler.Quit
Set xlBook = Nothing
Set xlHandler = Nothing
'Macro define in the Sheet1
Sub test()
Set Rng = Worksheets(1).Range("A:A")
MsgBox Application.WorksheetFunction.CountA(Rng)
End Sub QTP中不是有专门的获取表格总数的方法吗?用那个试试,具体我忘了,呵呵,可以帮你看看 QTP中不是有专门的获取表格总数的方法吗?用那个试试,具体我忘了,呵呵,可以帮你看看 QTP中不是有专门的获取表格总数的方法吗?用那个试试,具体我忘了,呵呵,可以帮你看看 QTP中不是有专门的获取表格总数的方法吗?用那个试试,很久没用具体我忘了,呵呵,可以帮你看看 QTP中不是有专门的获取表格总数的方法吗?用那个试试,很久没用具体我忘了,呵呵,可以帮你看看 QTP中不是有专门的获取表格总数的方法吗?用那个试试,很久没用具体我忘了,呵呵,可以帮你看看 获取sheet中的usedRange,就可以计算出某列的行数了 usedrange()只能算出最长的列的行数,不能算指定列,最好的办法是从QTP调用formula,但是有点不太好用,manual写的太少,需要自己探索。 回复 2# ermine
谢谢版主, 我还有个问题,在excel表的一个sheet中,只写一个功能点的测试数据好,还是可以把多个功能点的测试数据在一个sheet中写在不同列好?
比如有个登陆和添加两个功能点,在一个sheet中A、B列分别写用户名和密码测试数据,在其他列写添加功能的测试数据,这样写好,还是登陆和添加的测试数据分别写在不同的sheet中好? 回复 4# softCore
Set xlHandler = CreateObject("Excel.Application")
xlHandler.DisplayAlerts = False
Set xlBook = xlHandler.WorkBooks.Open("D:\Temp01\test.xls")
'xlBook.RunAutoMacros xlAutoOpen
xlHandler.Run "Sheet1.test"
xlBook.Save
xlBook.Close
xlHandler.Quit
Set xlBook = Nothing
Set xlHandler = Nothing
'Macro define in the Sheet1
Sub test()
Set Rng = Worksheets(1).Range("A:A")
MsgBox Application.WorksheetFunction.CountA(Rng)
End Sub
十分感谢,能对您的这段代码简单解释下吗?
你创建的excel对象对它的操作实现什么功能了?
'xlBook.RunAutoMacros xlAutoOpen这一句是什么作用?
在sub,与你创建的excel对象是什么关系呀? 回复 12# softCore
谢谢您提供的思路,呵呵。。。 回复 13# kudianxin
看业务流程吧,如果流程是先登录,再添加,是一套的流程,那感觉多个功能点写成一个sheet比较好,这样比较直观. 用了那个ID, 添加了什么信息,比较好维护.
如果是分开来, 登录的ID就是用来测试登录的,添加的数据就是用来测试添加的,最好分开不同的sheet. 这样的话, 就不会出现A列有10行, B列有20行的数据了.
不了解你们什么样的业务,仅供参考了 回复 16# ermine
多谢版主,我们有个简单的流程是这样的,登陆—添加部门—给部门添加用户—给用户建立账号。
我之所以问怎么获得一个sheet中某列的行数,就是想把着一串业务数据放在一个sheet中的不同列的。
一个账号登陆后可以建立多个部门,在一个部门中可以键多个用户,这样势必是要循环嵌套的,获得某列的行数就是为了控制循环次数的。 Function Getdata()
Dim avalue,count
'对excel进行操作
Set Excel = CreateObject(Excel.Application)
Set OpenExcel = Excel.Wrokbooks.open("D:\test.xls")
Excel.Visible = True
OpenExcel.WorkSheets("Sheet").Activate
count = OpenExcel.ActiveSheet.UsedRange.Rows.Count'获取行数
For i=1 To count
OpenExcel.WorkSheets("Sheet").Activate
avalue = Excel.Cells(i,1).Value
Next
Set Excel = Nothing
End Function Function GetRowCountByColumn(strPath, strSheetName, iColumnNum)
Dim i, iRowCount, xlApp, OpenExcel
Set xlApp = CreateObject("Excel.Application")
Set OpenExcel = xlApp.Workbooks.Open(strPath)
iRowCount = OpenExcel.WorkSheets(strSheetName).UsedRange.Rows.Count
For i = 1 To iRowCount
If OpenExcel.Worksheets(strSheetName).Cells(iRowCount - i + 1, iColumnNum) <> "" Then
GetRowCountByColumn = iRowCount - i + 1
Exit For
End If
Next
OpenExcel.Close
Set xlApp = Nothing
End Function Function GetRowCountByColumn(strPath, strSheetName, strColumnNum)
Dim i, iRowCount, xlApp, OpenExcel
Set xlApp = CreateObject("Excel.Application")
Set OpenExcel = xlApp.Workbooks.Open(strPath)
iRowCount = OpenExcel.WorkSheets(strSheetName).UsedRange.Rows.Count
For i = 1 To iRowCount
If OpenExcel.WorkSheets(strSheetName).Cells(iRowCount - i + 1, strColumnNum) <> "" Then
GetRowCountByColumn = iRowCount - i + 1
Exit For
End If
Next
If GetRowCountByColumn = "" Then
GetRowCountByColumn = 0
End If
OpenExcel.Close
Set xlApp = Nothing
End Function
页:
[1]
2