VBA切断字符串?

时间:2016-12-13 23:40:56

标签: excel vba excel-vba

我公开承认我对vba一无所知..

我正在研究项目的遗留工具,并用VBA编写。有一个我正在处理的错误,我已经缩小了问题,但无法弄清楚为什么我的字符串显然被切断了?

 strXPlusLast4 = "xxxxxxxxxxxx" & strDCLast4
    For Each varItem In objIE.Document.getElementsByTagName("tr")
        If InStr(varItem.innerhtml, strXPlusLast4) Then
            strDCStatus = Replace(Split(Split(varItem.innerhtml, "<TD>")(3), "</TD>")(0), "&nbsp;", "")

使用IE对象导航到某个页面,它会查看所有tr。在它找到的tr内,它正在查看字符串是否存在。

如果找到这个字符串,它会进入我被卡住的IF statement

在这里,我检查varitem.innerHTML的值,并且在实际行数据的中间位置大约有250个字符。

我试图找出是否有任何限制,为什么innerHTML的值不是完整的HTML内容,我希望看到我在网页上查看它正在刮擦。

当我向手表添加varItem并查看对象的innerHTML时,此数据也会被截止。

任何人都可以对我能够发布此问题的一小段代码有所了解吗?我的根本问题是我没有得到我期望的strDCStatus,因为它没有搜索完整的数据行,因为有些东西正在截止。

更新

以下是我可以为TR提供的最佳内容:

<tr class="">
  <td>
    &nbsp;
  </td>
  <td>2 Blah Blah &nbsp;</td>
  <td class="AccountNumber">
    xxxxxxxxxxxx1234 &nbsp;&nbsp;
    <a href="#" onclick="view(this, event,'12345', '45678');return false" class=""><img src="https://MySite" title="Click to Expand" alt="!"></a>
    &nbsp;
  </td>
  <td>Closed&nbsp;</td>
  <td>Jan 1, 2011&nbsp;</td>
  <td>Nov 30, 2011&nbsp;</td>
  <td>N/A&nbsp;</td>
  <td>
    xx/xxxx &nbsp;&nbsp;
    <a href="#" onclick="view(this, event,'12345', '56789'); return false;" class=""><img src="https://MySite" title="Click to Expand"></a>
    &nbsp;
  </td>
</tr>

它使用innerHTML所以<tr>标记之间的所有内容。它会在onClick HTML数据周围被切断。

我最终会尝试获得的状态是&#34;已关闭&#34;在第4 td但我无法尝试,因为我似乎没有完整的行html来浏览。

1 个答案:

答案 0 :(得分:6)

Watches窗口仅显示长字符串的一部分(尽管与Locals窗口不同,它并不表示终止...)。

例如,当我将监视放在变量t中时:

Sub test()
    Dim s As String, t As String
    Dim i As Long
    For i = 0 To 9
        s = s & String(50, CStr(i))
    Next i
    t = s
End Sub

然后将值复制粘贴到记事本中我看到:

"0000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444

即使字符串显然更长。

代码本身的真正错误可能是由于Split中字符串的区分大小写,以及分隔符<td>与分隔符<TD>