VBA 스크립트를 사용하여 다른 워크 시트의 인스턴스 값 순서대로 텍스트 섹션을 작성하고 싶습니다. 나는 워크 시트 A에있는 텍스트의 체크를 쓰는 코드의 섹션이VBA 셀의 값에 따라 반복되는 행
Dim selectedTest As String
Dim activeCell As Range
Dim outputCell As Range
Dim currentValue As String
Dim activePage As String
Dim row As String
Dim instancecol As String
selectedTest = template.Range("I6, I6").value
Set activeCell = template.Cells.Find(selectedTest + " Data")
Set activeCell = activeCell.Offset(0, 1)
instancecol = Split(activeCell(1).Address(1, 0), "$")(0)
Set activeCell = activeCell.Offset(2, -1)
currentValue = activeCell.value
row = activeCell.row
activePage = template.Range("B" + row)
Set outputCell = json.Range("D26")
outputCell.Activate
outputCell.value = Chr(34) + "name" + Chr(34) + ": " + Chr(34) + activePage + Chr(34) + ","
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = Chr(34) + "instance" + Chr(34) + ": " + Chr(34) + "1" + Chr(34) + ","
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = Chr(34) + "Input" + Chr(34) + ": ["
Set outputCell = outputCell.Offset(0, 1)
While Not currentValue = "ENDPARSE"
If Not (activeCell.Offset(0, 1).value = "") Then
Dim currentPage As String
Dim referenceType As String
Dim reference As String
Dim action As String
Dim wait As String
Dim screenshot As String
Dim instance As String
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = "{"
Set outputCell = outputCell.Offset(1, 1)
row = activeCell.row
currentPage = template.Range("B" + row)
If Not (activePage = currentPage) Then
activePage = currentPage
Set outputCell = outputCell.Offset(-1, -1)
outputCell.value = ""
Set outputCell = outputCell.Offset(-1, 0)
outputCell.value = "}"
Set outputCell = outputCell.Offset(1, -1)
outputCell.value = "]"
Set outputCell = outputCell.Offset(1, -1)
outputCell.value = "},"
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = "{"
Set outputCell = outputCell.Offset(1, 1)
outputCell.value = Chr(34) + "name" + Chr(34) + ": " + Chr(34) + activePage + Chr(34) + ","
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = Chr(34) + "instance" + Chr(34) + ": " + Chr(34) + "1" + Chr(34) + ","
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = Chr(34) + "Input" + Chr(34) + ": ["
Set outputCell = outputCell.Offset(1, 1)
outputCell.value = "{"
Set outputCell = outputCell.Offset(1, 1)
End If
referenceType = template.Range("C" + row)
reference = template.Range("A" + row)
action = template.Range("F" + row)
wait = template.Range("H" + row)
screenshot = template.Range("I" + row)
instance = template.Range(instancecol + row)
currentValue = activeCell.value
outputCell.value = Chr(34) + "type" + Chr(34) + ": " + Chr(34) + referenceType + Chr(34) + ","
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = Chr(34) + "reference" + Chr(34) + ": " + Chr(34) + reference + Chr(34) + ","
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = Chr(34) + "action" + Chr(34) + ": " + Chr(34) + action + Chr(34) + ","
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = Chr(34) + "instance" + Chr(34) + ": " + Chr(34) + instance + Chr(34) + ","
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = Chr(34) + "wait" + Chr(34) + ": " + Chr(34) + wait + Chr(34) + ","
If Not (currentValue = "") Then
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = Chr(34) + "value" + Chr(34) + ": " + Chr(34) + currentValue + Chr(34) + ","
End If
Set outputCell = outputCell.Offset(1, 0)
outputCell.value = Chr(34) + "screenshot" + Chr(34) + ": " + Chr(34) + screenshot + Chr(34)
Set outputCell = outputCell.Offset(1, -1)
outputCell.value = "},"
End If
Set activeCell = activeCell.Offset(1, 0)
currentValue = activeCell.value
Wend
outputCell.value = "}"
Set outputCell = outputCell.Offset(1, -1)
outputCell.value = "]"
Set outputCell = outputCell.Offset(1, -1)
outputCell.value = "}"
Set outputCell = outputCell.Offset(1, -1)
outputCell.value = "]"
Set outputCell = outputCell.Offset(1, -1)
outputCell.value = "}"
Dim dataRange As Range
Set dataRange = json.UsedRange
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(template.Range("I2,I2") + "\\" + template.Range("I3,I3") + ".json", True)
For Each C In dataRange
a.WriteLine (C.value)
Next C
a.Close
template.Activate
End Sub
이 순간 워크 시트 A의 정보를 기록하는 워크 시트 B의 값을 취 내 출력은 다음과 같습니다
{
"name": "Search",
"instance": "1",
"Input": [
{
"type": "button",
"reference": "Search",
"action": "Click",
"instance": "1",
"wait": "10",
"screenshot": "true"
},
{
"type": "dropdown",
"reference": "PostcodeLogic",
"action": "SelectByText",
"instance": "2",
"wait": "10",
"value": "Is",
"screenshot": "true"
},
{
"type": "text",
"reference": "PostCodeInput",
"action": "SendKeys",
"instance": "3",
"wait": "10",
"value": "AL2 4ED",
"screenshot": "true"
},
{
"type": "button",
"reference": "Search",
"action": "Click",
"instance": "5",
"wait": "10",
"screenshot": "true"
},
{
"type": "link",
"reference": "ClientName ",
"action": "Click",
"instance": "4",
"wait": "10",
"screenshot": "true"
}
]
}
내가 원하는 모든 정보가 표시되며 제대로 작동합니다. 이제는 시험 덩어리를 instance
순으로 작성해야합니다. 나는 sequence
이라는 필드를 가지고 숫자를 읽고 instance
필드에 넣습니다.
사과가 잘 설명되지 않은 경우 사과해야합니다. 아직 VBA에 새로운 내용이 있습니다.
이전에 시퀀스 열에 정렬을 적용 할 수 있습니까? –
시퀀스 번호가있는 열이 있습니다. 어느 곳에서 각 텍스트 청크에서'instance' 값을 얻습니다. 그러나 현재는 상단에서 하단으로 행을 읽습니다. 해당 열의 값에 따라 읽으 려합니다. 예 : 시퀀스 값 1, 2 등이있는 행 – Ross
그래서 코드 앞에있는 열을 정렬 한 다음 정렬을 제거하십시오. –