Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用Selenium将文本粘贴到Excel中_Vba_Excel_Selenium_Selenium Webdriver - Fatal编程技术网

Vba 使用Selenium将文本粘贴到Excel中

Vba 使用Selenium将文本粘贴到Excel中,vba,excel,selenium,selenium-webdriver,Vba,Excel,Selenium,Selenium Webdriver,rSource设置为单元格A1的值,其中包含一个数字 代码的下一部分将打开一个网站,并将rSource输入到字段“num”中,该字段只是一个输入框。然后单击按钮,这会导致网站计算输入数字的平方根,然后将其显示在“应答”框中 我的代码似乎存在以下问题: variableName = driver.findElementByName("answer").getAttribute("value") 我想要的是获取'answer'的属性,它将是我先前输入的数字的平方根,然后将它粘贴到单元格A2中 我注

rSource设置为单元格A1的值,其中包含一个数字

代码的下一部分将打开一个网站,并将rSource输入到字段“num”中,该字段只是一个输入框。然后单击按钮,这会导致网站计算输入数字的平方根,然后将其显示在“应答”框中

我的代码似乎存在以下问题:

variableName = driver.findElementByName("answer").getAttribute("value")
我想要的是获取'answer'的属性,它将是我先前输入的数字的平方根,然后将它粘贴到单元格A2中

我注意到一件事,getAttribute似乎与“复制”不同,因为当我尝试手动粘贴到单元格中时,我从未得到“答案”。我希望做的是以某种方式“复制”该值,然后使用类似“工作表(“Sheet1”).Range(“A2”).PasteSpecial”的东西将“答案”粘贴到单元格A2中。。。虽然我玩了很多次,但似乎还是没法让它发挥作用。任何帮助都将不胜感激


上面的代码是使用Selenium创建的,然后我使用VBA对其进行了修改。

正如我在评论中所说的,
Selenium
可以使用
SendKeys
实现这一点。但是,如果您确实需要复制粘贴操作,我建议您使用
剪贴板

请注意,这需要在引用中检查Microsoft Forms 2.0对象库。如果没有显示,请向文件中添加一个UserForm,默认情况下它将显示为选中状态

下面的子例程将把一个文本字符串放入剪贴板。运行此操作后执行
Ctrl-V
,将模拟粘贴操作

Sub Boom()
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
With DataObj
    .SetText "Answer"
    .PutInClipboard
End With
End Sub
只要用你想要的值替换“答案”。更好的是,修改上述内容,以便能够接收如下文本字符串:

Sub Boom(Str As String)
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
With DataObj
    .SetText Str
    .PutInClipboard
End With
End Sub
现在你可以在上面做
Boom(“Answer”)
,它会把“Answer”放到剪贴板上。然后可以使用
Range(“A1”).PasteSpecial xlPasteAll
或其他任何方法粘贴它

希望这能帮到你。不是真正的
Selenium
路径,但至少它是一个非常干净的选项

编辑:要使用Selenium的SendKeys,它类似于:

Sub CopyTest()

Dim Sel As New SeleniumWrapper.WebDriver
Dim keys As New SeleniumWrapper.keys

Sel.SendKeys keys.Control & "c"

End Sub

希望有帮助。:)

正如我在评论中所说,
Selenium
可以使用
SendKeys
进行此操作。但是,如果您确实需要复制粘贴操作,我建议您使用
剪贴板

请注意,这需要在引用中检查Microsoft Forms 2.0对象库。如果没有显示,请向文件中添加一个UserForm,默认情况下它将显示为选中状态

下面的子例程将把一个文本字符串放入剪贴板。运行此操作后执行
Ctrl-V
,将模拟粘贴操作

Sub Boom()
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
With DataObj
    .SetText "Answer"
    .PutInClipboard
End With
End Sub
只要用你想要的值替换“答案”。更好的是,修改上述内容,以便能够接收如下文本字符串:

Sub Boom(Str As String)
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
With DataObj
    .SetText Str
    .PutInClipboard
End With
End Sub
现在你可以在上面做
Boom(“Answer”)
,它会把“Answer”放到剪贴板上。然后可以使用
Range(“A1”).PasteSpecial xlPasteAll
或其他任何方法粘贴它

希望这能帮到你。不是真正的
Selenium
路径,但至少它是一个非常干净的选项

编辑:要使用Selenium的SendKeys,它类似于:

Sub CopyTest()

Dim Sel As New SeleniumWrapper.WebDriver
Dim keys As New SeleniumWrapper.keys

Sel.SendKeys keys.Control & "c"

End Sub

希望有帮助。:)

正如我在评论中所说,
Selenium
可以使用
SendKeys
进行此操作。但是,如果您确实需要复制粘贴操作,我建议您使用
剪贴板

请注意,这需要在引用中检查Microsoft Forms 2.0对象库。如果没有显示,请向文件中添加一个UserForm,默认情况下它将显示为选中状态

下面的子例程将把一个文本字符串放入剪贴板。运行此操作后执行
Ctrl-V
,将模拟粘贴操作

Sub Boom()
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
With DataObj
    .SetText "Answer"
    .PutInClipboard
End With
End Sub
只要用你想要的值替换“答案”。更好的是,修改上述内容,以便能够接收如下文本字符串:

Sub Boom(Str As String)
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
With DataObj
    .SetText Str
    .PutInClipboard
End With
End Sub
现在你可以在上面做
Boom(“Answer”)
,它会把“Answer”放到剪贴板上。然后可以使用
Range(“A1”).PasteSpecial xlPasteAll
或其他任何方法粘贴它

希望这能帮到你。不是真正的
Selenium
路径,但至少它是一个非常干净的选项

编辑:要使用Selenium的SendKeys,它类似于:

Sub CopyTest()

Dim Sel As New SeleniumWrapper.WebDriver
Dim keys As New SeleniumWrapper.keys

Sel.SendKeys keys.Control & "c"

End Sub

希望有帮助。:)

正如我在评论中所说,
Selenium
可以使用
SendKeys
进行此操作。但是,如果您确实需要复制粘贴操作,我建议您使用
剪贴板

请注意,这需要在引用中检查Microsoft Forms 2.0对象库。如果没有显示,请向文件中添加一个UserForm,默认情况下它将显示为选中状态

下面的子例程将把一个文本字符串放入剪贴板。运行此操作后执行
Ctrl-V
,将模拟粘贴操作

Sub Boom()
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
With DataObj
    .SetText "Answer"
    .PutInClipboard
End With
End Sub
只要用你想要的值替换“答案”。更好的是,修改上述内容,以便能够接收如下文本字符串:

Sub Boom(Str As String)
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
With DataObj
    .SetText Str
    .PutInClipboard
End With
End Sub
现在你可以在上面做
Boom(“Answer”)
,它会把“Answer”放到剪贴板上。然后可以使用
Range(“A1”).PasteSpecial xlPasteAll
或其他任何方法粘贴它

希望这能帮到你。不是真正的
Selenium
路径,但至少它是一个非常干净的选项

编辑:要使用Selenium的SendKeys,它类似于:

Sub CopyTest()

Dim Sel As New SeleniumWrapper.WebDriver
Dim keys As New SeleniumWrapper.keys

Sel.SendKeys keys.Control & "c"

End Sub

希望有帮助。:)

有一个简单的解决方法。不要使用复制粘贴。将
.getattribute(value)
替换为
.text

variableName = driver.findElementByName("answer").Text
仅供参考,对于多个元素,我使用
.GetData
如下:

arrayName = driver.findElementsByClassName("answer").GetData

有一个简单的解决方法。不要使用复制粘贴。将
.getattribute(value)
替换为
.text

variableName = driver.findElementByName("answer").Text
仅供参考,对于多个元素,我使用
.GetData
如下:

arrayName = driver.findElementsByClassName("answer").GetData

有一个简单的解决方法。不要使用复制粘贴。答复