【问题标题】:Conflict between innertext VBA and excel内部文本VBA和excel之间的冲突
【发布时间】:2017-08-30 00:46:12
【问题描述】:

我需要帮助将信息从 InternetExplorer 抓取到 Excel 工作簿。 当我报废时,innertext 属性中的信息是正确的,但在 excel 中却出错了。 使用代码:

Workbooks("Automatizar PSA").Sheets(1).Cells(linha, 5).Value = ie.Document.getelementsbyclassname("tr-visualizar-detalhes text-center")(i + 1).innertext

我认为这是因为他们假设了不同的变量,我使用了变量检查并得到:

Watch : : ie.Document.getelementsbyclassname("tr-visualizar-detalhes text-center")(i + 1).innertext : 
"06/04/2017 11:09 " : Variant/String : Módulo11.PSAScrap

Watch : : Workbooks("Automatizar PSA").Sheets(1).Cells(linha, 5).Value : 
04/06/2017 11:09:00 : Variant/Date : Módulo11.PSAScrap

任何帮助,我该如何解决?对不起,我发布的方式,不熟悉论坛,我如何将它粘贴为代码? 谢谢!!

【问题讨论】:

  • 如果您在工作表中将包含数据的单元格设置为文本格式,则不会自动将其解释为日期。
  • 您可以按照@JohnColeman 的建议使用NumberFormat = "@" 将单元格设置为文本。只需将其添加到声明的末尾,例如 Workbooks("Automatizar PSA").Sheets(1).Cells(linha, 5).NumberFormat = "@"

标签: excel vba innertext


【解决方案1】:

这是一个区域性 DMY 与 MDY 问题。您的示例是 DMY/MDY 不明确的,因此无法确定日期的开始日期或系统的区域设置。

日期不明确(月份和日期都小于 13)的问题在于 Excel 会将 DMY 解释为 MDY,反之亦然。对于日期大于 12 的任何其他人,Excel 只会将错误日期作为文本输入。

这是一个“帮助”函数,可以将 DMY 转换为 MDY 或将 MDY 转换为 DMY。

function flipDMYMDY(str as string)
    str = trim(str)
    flipDMYMDY = mid(str, 4, 3) & left(str, 3) & right(str, 10)
end function

用作,

Workbooks("Automatizar PSA").Sheets(1).Cells(linha, 5).Value = _
   flipDMYMDY(ie.Document.getelementsbyclassname("tr-visualizar-detalhes text-center")(i + 1).innertext)

【讨论】:

  • 太完美了!!!!谢谢!!我花了 3 天时间试图解决这个问题,就像一个魅力!!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 2015-03-05
相关资源
最近更新 更多