on 01-24-2018 4:47 PM
Hi, I'm doing a macro in excel and I need to know how you can go through all rows of GuiTableControl to store the information of the channels in my Excel cells
- Something like this
'Found the pattern matched table, assign to tObj for item maintenance
Set tobj = session.FindById(tGuiTableControl)
Set tObjChild = tobj.Children
' Count the array length (dimension 1)
tDataRows = UBound(tData, 1)
' Count the array width (dimension 2)
'tDataColumns = UBound(tData, 2)
' Count the target table width, since thats what we are populating values across.
tDataColumns = tobj.Columns.Count
visiblerows = tobj.VisibleRowCount
tDataLoopRow = 1
tDataLoopColumn = 1
tObjRow = 0
tObjItemNum = 0
Do 'Loop over pages to update in depth
Do While tObjRow < visiblerows 'Loop over the rows to update in a page
Do While tDataColumns >= tDataLoopColumn 'Loop over the columns to update in a row
If tData(tDataLoopRow, tDataLoopColumn) <> "" Then
If tObjChild.Item(tObjItemNum + 0).Type = "GuiCTextField" Or tObjChild.Item(tObjItemNum + 0).Type = "GuiTextField" Then
If IsDate(tData(tDataLoopRow, tDataLoopColumn)) = True Then
If tData(tDataLoopRow, tDataLoopColumn) = #12/31/1899# Then 'excel dates in the deep past are weird due to Lotus 1-2-3
tObjChild.Item(tObjItemNum + 0).text = DateConvert(tData(tDataLoopRow, tDataLoopColumn) + 1, ".")
Else:
tObjChild.Item(tObjItemNum + 0).text = DateConvert(tData(tDataLoopRow, tDataLoopColumn), ".")
End If
Else:
tObjChild.Item(tObjItemNum + 0).text = tData(tDataLoopRow, tDataLoopColumn)
End If
ElseIf tObjChild.Item(tObjItemNum + 0).Type = "GuiComboBox" Then
tObjChild.Item(tObjItemNum + 0).Key = tData(tDataLoopRow, tDataLoopColumn)
ElseIf tObjChild.Item(tObjItemNum + 0).Type = "GuiCheckBox" Then
tObjChild.Item(tObjItemNum + 0).Selected = True
Else:
'other conditions
End If
End If
'Are we exiting the updates?
If tData(tDataLoopRow, 1) = "" Then
tDataFinished = "X"
Exit Do
End If
tObjItemNum = tObjItemNum + visiblerows
tDataLoopColumn = tDataLoopColumn + 1
Loop
'Are we exiting the updates?
If tDataFinished = "X" Then
Exit Do
End If
'check if we should commit current batch
If CommitAfterX > 0 Then
If tDataLoopRow Mod CommitAfterX = 0 Then
Call commitCurrentUpdates(session, TargetTable, tTargetTransport)
'Reset the Obj Update index
tObjRow = -1
'Reset the pattern matched table, assign to tObj for item maintenance
Set tobj = session.FindById(tGuiTableControl)
Set tObjChild = tobj.Children
Else:
x = y
End If
End If
tDataLoopColumn = 1
tDataLoopRow = tDataLoopRow + 1
tObjRow = tObjRow + 1
tObjItemNum = tObjRow
Loop
tObjRow = 1
tObjItemNum = 1
'set next row in preparation for either commit, or next page of visible rows
session.FindById("wnd[0]/mbar/menu[2]/menu[2]").Select
'check & manage data entry issues.
Call PreSaveHandler(session)
'Reset the pattern matched table, assign to tObj for item maintenance
Set tobj = session.FindById(tGuiTableControl)
Set tObjChild = tobj.Children
Loop Until tDataFinished = "X"
- I made this to maintain tables via SM30. You can probably rip out what you need to read the table contents inversely.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
85 | |
10 | |
9 | |
8 | |
6 | |
6 | |
6 | |
5 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.