首页 > 解决方案 > VBA:xmlhttp响应粘贴有时会省略标签?

问题描述

EDIT2:我找不到为什么它可能会错误地粘贴它,但是 responseText 每次都读取为选项卡,我可以将它拆分为一个数组并完全避免使用剪贴板。如果有人对为什么会发生这种情况有任何想法,我仍然会很感激。

  Sub example()

  Dim clip As Object, D As Object, H As Object, URL As String

  Set clip = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
  Set H = CreateObject("WinHTTP.WinHTTPRequest.5.1")
  Set D = CreateObject("HTMLFile")

'authentication
'xmlrequest
'here

    URL = "https:/someinternal.site/tsv?filter=querystring"

  H.Open "GET", URL
  H.send

  clip.SetText H.responseText
  clip.PutInClipboard
  Sheet1.Range("A1").PasteSpecial
  End Sub

我正在尝试查询以 .TSV 响应的内部站点,但结果不一致。有时它会正确拆分成列粘贴,有时它会省略所有分隔符并将其放入如下:

FullNameFirstLast
John SmithJohnSmith

什么时候应该:

FullName    First    Last
John Smith    John    Smith

我找到了人们谈论手动使用 TextToColumns 来设置分隔符的默认值的资源,但是当我粘贴到 Excel 中时,它看起来是一样的——所有选项卡都被删除了。如果我将网站(只是一个原始的 .TSV)粘贴到 notepad++ 并从那里粘贴到 Excel 中,它会在编辑器上正确显示制表符和换行符并在 Excel 中工作。如果我调试.Print H.responseText,它给我的响应会用 4 个空格替换所有选项卡,我猜这对于即时窗口来说是很正常的,但它对我没有帮助。

在代码的其他地方,我还使用我认为破坏它的相同方法查询 .CSV 文件。我可以设置任何参数来正确解析响应,或者使用其他方法吗?为此,我可以使用查询表连接,但由于需要首先进行身份验证,这有其自身的问题,我尽量避免它们像瘟疫一样。

编辑:将 Excel 中的转储粘贴为图像而不是文本。更令人困惑的是,当我将 Excel 输出复制并粘贴到记事本或 notepad++ 中时,它会正确显示选项卡。将其粘贴回 Excel 会产生相同的结果。这意味着响应是正确的,但是 Excel 本身对选项卡做了一些奇怪的事情......手动 TextToColumns 在它之前没有找到分隔符时起作用。有时它显示为四个空格,有时显示为不可见的标签 - 这就是问题所在。

输出

标签: excelvba

解决方案


推荐阅读