按键精灵循环读取Excel问题

按键精灵循环读取Excel问题

读取Excel路径 = Form1.BrowseBox1.Path '设置路径
写入Excel路径 = Form1.BrowseBox2.Path '设置路径
y = Form1.InputBox1.Text + 0
h = Form1.InputBox2.Text + 0
s = Form1.InputBox3.Text + 0
Dim 内容()
Call Plugin.Office.OpenXls(读取Excel路径)
For i = h To 99999
Text = Plugin.Office.ReadXls(1, i, y)
            Shul = Plugin.Office.ReadXls(1, i, s)
TracePrint Text
    TracePrint Shul
If Text = "" Then
Exit For
Else
ReDim Preserve 内容(i)
内容(i) = Text
End If
Next
Call Plugin.Office.CloseXls()
数量 = UBound(内容)
TracePrint "数量: " & 数量
Delay 10
Call Plugin.Office.OpenXls(写入Excel路径)
For i = 1 To 数量
                Tex = Split(内容(i), ",")
Call Plugin.Office.WriteXls(1, i, 1, Tex(1))
            TracePrint Tex(1)
                TracePrint Shul
Next
Call Plugin.Office.CloseXls()
Sub OnScriptExit()
MessageBox "成功读取并保存" & 数量 & "个数据"
End Sub

这段代码里 Shul 第一次循环有信息, 结束循环到下一步输出的时候为空。 请教一下如何改一下,才能让Shul输出获取的内容

在第一次读取 Shul 的时候将其保存在一个变量中,然后在第二个循环中使用这个变量输出
你试一下这段行不行

Dim 内容(), shulArr()
Call Plugin.Office.OpenXls(读取Excel路径)
For i = h To 99999
Text = Plugin.Office.ReadXls(1, i, y)
Shul = Plugin.Office.ReadXls(1, i, s)
TracePrint Text
TracePrint Shul
If Text = "" Then
Exit For
Else
ReDim Preserve 内容(i)
内容(i) = Text
ReDim Preserve shulArr(i)
shulArr(i) = Shul
End If
Next
Call Plugin.Office.CloseXls()

数量 = UBound(内容)
TracePrint "数量: " & 数量
Delay 10

Call Plugin.Office.OpenXls(写入Excel路径)
For i = 1 To 数量
Tex = Split(内容(i), ",")
Call Plugin.Office.WriteXls(1, i, 1, Tex(1))
TracePrint Tex(1)
TracePrint shulArr(i)
Next
Call Plugin.Office.CloseXls()

该回答引用ChatGPT

从代码中看到,在第一次循环里 Shul 变量被赋值,但在后面的循环中并没有更新,导致输出为空。可以将 Shul 变量也加入到循环中,同样进行循环赋值和输出。具体实现可以参考以下示例代码:


Dim 内容()
Call Plugin.Office.OpenXls(读取Excel路径)
For i = h To 99999
    Text = Plugin.Office.ReadXls(1, i, y)
    Shul = Plugin.Office.ReadXls(1, i, s)
    TracePrint Text
    TracePrint Shul
    If Text = "" Then
        Exit For
    Else
        ReDim Preserve 内容(i)
        内容(i) = Text & "," & Shul ' 将Text和Shul的值合并存入数组中
    End If
Next
Call Plugin.Office.CloseXls()
数量 = UBound(内容)
TracePrint "数量: " & 数量
Delay 10
Call Plugin.Office.OpenXls(写入Excel路径)
For i = 1 To 数量
    Tex = Split(内容(i), ",")
    Call Plugin.Office.WriteXls(1, i, 1, Tex(0)) ' 输出Text
    Call Plugin.Office.WriteXls(1, i, 2, Tex(1)) ' 输出Shul
    TracePrint Tex(0)
    TracePrint Tex(1)
Next
Call Plugin.Office.CloseXls()

在循环读取Excel数据时,将 Text 和 Shul 的值合并存入数组 内容 中,以便在后面的循环中使用。在循环输出时,按照索引取出 Text 和 Shul 的值并输出即可。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^