excel - 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 在它之前没有找到分隔符时起作用。有时它显示为四个空格,有时显示为不可见的标签 - 这就是问题所在。
解决方案
推荐阅读
- java - 更改 disableProperty() 函数的颜色/如何禁用单击舞台
- excel - 在 Excel 的 VLOOKUP 函数中使用 MATCH 函数作为范围
- xcode - 如何在不改变操作系统主题的情况下使 Xcode 10 变暗?
- python-2.7 - py_compile 与 import 中的编码
- google-cloud-platform - 如何仅允许创建服务器的开发人员访问 GCE?
- php - 如何在 Symfony 环境之间切换?
- windows - 如何使用 Angular2 和 Typescript 获取设备信息
- reactjs - 纯减速器和画布上下文?
- php - Codeigniter如何从数据库中删除帖子数据中不存在的值
- service-worker - 工作箱:动态设置调试模式