【问题标题】:How to copy/paste data from excel to a webpage (VBA)?如何将数据从excel复制/粘贴到网页(VBA)?
【发布时间】:2021-09-15 17:50:52
【问题描述】:

所以我正在尝试使用 VBA 将数据从 excel 复制/粘贴到网页文本框中。但是,我的问题是,如果我复制了 3 或 4 行数据,当使用 vba 将值粘贴到网页中时,只会复制 1 行而不是所有行。

这是我的代码:

.Document.getElementsByTagName("textarea")(0).Value = ActiveCell.Value

有什么想法吗?如果我取出 (0) 我会得到一个错误:

对象不支持此属性或方法。

【问题讨论】:

  • 第一,don't use ActiveCell/.Activate/.Select,第二,你是不是想用...Value = Selection.Value
  • 好的,谢谢!我试过 selection.value 但得到一个“自动化错误”
  • 当您尝试调试某些东西时,使用硬编码值并不是一个坏主意。例如。 .Value = "Some test" 看看问题出在哪里并排除可能的原因。
  • 您的错误是因为 .value 不是元素集合的属性,如果您删除索引,您将拥有该属性,例如0. 您是否尝试将范围(行数)中的数据粘贴到单个元素中?或者您是否需要对行进行循环以分配给不同的元素?
  • @QHarr,我在 excel 中有一个数据集,并设置了过滤器,第一列的所有行都被自动复制。这是我想粘贴到网页文本框中的数据。

标签: html excel vba


【解决方案1】:

这是我的一些有效的代码:

Sub FillOutInvoice(Account As Account)

    Dim ie As InternetExplorer
    Dim elem As HTMLLinkElement

    Set ie = New InternetExplorer
    ie.Visible = True
    ie.navigate Settings.ErpAddress

    Do While ie.Busy Or ie.readyState <> 4
        DoEvents
    Loop

    With ie.document
        .getElementsByClassName(Settings.InputClass)(0).innerText = Account.InvoiceNumber
        .getElementsByClassName(Settings.InputClass)(1).innerText = Day(Account.InvoiceDate)
    End With

    Do While ie.Busy Or ie.readyState <> 4
        DoEvents
    Loop

    Application.Wait Now + #12:00:02 AM#
    ie.Quit

End Sub

如您所见,所需的属性是 .InnerText 而不是 .Value

【讨论】:

    【解决方案2】:

    这是一个使用剪贴板将一系列行文本发送到 textarea 元素的示例

    Option Explicit
    'VBE > Tools > References:
    ' Microsoft Internet Controls
    
    Public Sub InsertData()
        Dim ie As New InternetExplorer
        With ie
            .Visible = True
            .Navigate2 "https://www.google.com/search?q=google+translate&rlz=1C1GCEB_enGB815GB815&oq=google+tran&aqs=chrome.0.0j69i57j0l4.2057j0j7&sourceid=chrome&ie=UTF-8"
    
            While .Busy Or .readyState < 4: DoEvents: Wend
    
            Dim clipboard As Object
            Set clipboard = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    
            ActiveSheet.Range("A1:A3").Copy
    
            With clipboard
                .GetFromClipboard
                ie.document.getElementsByTagName("textarea")(1).innerText = .GetText
            End With
            Application.CutCopyMode = False
            Stop
            .Quit
        End With
    End Sub
    

    范围的内容("A1:A3")

    【讨论】:

      猜你喜欢
      • 2021-10-10
      • 1970-01-01
      • 2017-10-08
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多