我们的业务使用基于浏览器的程序进行操作.我正在自动化解决方案以浏览此站点,并在最后检索一些数据.
该网站本身非常使用常规框架.但是,在我的过程的最后,它不会将我的数据填充到框架中,而是填充到iFrame中.整个网站上也有非常广泛的JavaScript,让事情变得混乱.
抓取iFrame的src URL并在新浏览器中打开错误页面(即页面显示错误文本而不是内容).
我的问题:
如何通过VBA从iFrame中获取文本?
到目前为止我尝试过的 (随意跳过):
定位特定帧中的特定iFrame,并获取innerHTML
With ie.document.frames(myFrameNum).document.getElementsByTagName("iframe")(1).document.body
stringResult = .innerHTML
Run Code Online (Sandbox Code Playgroud)
在特定帧中按ID定位特定的iFrame,并获取innerHTML
Dim iFrm As HTMLIFrame
Set iFrm = ie.document.frames(myFrameNum).document.getElementByID("iFrameID")
Debug.Print iFrm.document.body.innerText
Run Code Online (Sandbox Code Playgroud)
找到iFrames的任何实例,并抓住它们(没有结果 - 也许是因为iframe被嵌入到框架中?)
Dim iFrm As HTMLIFrame
Dim doc As HTMLDocument
For iterator = 0 To ie.document.all.Length - 1
If TypeName(ie.document.all(iterator)) = "HTMLIFrame" Then
Set iFrm = ie.document.all(iterator)
Set doc = iFrm.document
Debug.Print & doc.body.outerHTML
End If
Next
Run Code Online (Sandbox Code Playgroud) 解决了!请参阅下面的解决方案
我在Excel 2010中通过数据透视表数据连接从Excel 连接到多个独立的 Access 2010数据库.
刷新所有连接会导致最终刷新失败.顺序没关系,我手动刷新了不同的顺序,同样的错误.
但是,如果我在刷新几个后保存并关闭,然后返回并刷新最后一个,则完全没有问题.
让我相信我正在点击某种内存上限,当我保存并关闭时它会被重置.
我是否可以通过VBA重新创建该效果而无需实际保存/关闭?这个问题有更好的解决方案吗?
错误消息 - 这三个按此顺序弹出:
现行守则
Private Sub CommandButton1_Click()
On Error GoTo ErrHndlr
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.StatusBar = "Refreshing Data - Please Be Patient"
ActiveWorkbook.Connections("Connection_1").Refresh
ActiveWorkbook.Connections("Connection_2").Refresh
ActiveWorkbook.Connections("Connection_3").Refresh
Application.Calculation = xlCalculationAutomatic
Application.StatusBar = "Ready"
[LastUpdated].Value = FormatDateTime(Now, vbGeneralDate)
Application.ScreenUpdating = True
Exit Sub
ErrHndlr:
Application.StatusBar = "Ready"
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
[LastUpdated].Value = "Update Error"
Exit Sub
End Sub
Run Code Online (Sandbox Code Playgroud)
连接字符串
Provider=Microsoft.ACE.OLEDB.12.0
;User …Run Code Online (Sandbox Code Playgroud) 我正在使用Access 2010.
我的错误似乎是别名的结果.
我读过的解决方案指出应该在每个级别(我已经完成)使用不同的别名,并且Access喜欢大量的SELECT*(所以我也添加了这些)但是它没有解决我的问题.
我在ServiceZipSpec.Service_Product上收到错误.有什么指针吗?谢谢!
SELECT DISTINCT ServiceZipSpec.Service_Product, ServiceZipSpec.Specificity, Service_Availability.Available, Service_Availability.Zip_Code, Service_Availability.State
FROM
( SELECT * FROM
( SELECT * FROM Service_Availability AS C_Avail1
INNER JOIN
(
SELECT C_Avail2.Service_Product, MAX(C_Avail2.Specificity) AS Spec
FROM Service_Availability AS C_Avail2
WHERE (C_Avail2.State = "TX" OR C_Avail2.State = "CW")
GROUP BY C_Avail2.Service_Product
) MaxSpec
ON C_Avail1.Service_Product = MaxSpec.Service_Product
AND C_Avail1.Specificity = MaxSpec.Spec
) Service_Spec
LEFT JOIN TABLE_ZipCodes ON Service_Spec.State = TABLE_ZipCodes.State
) ServiceZipSpec
WHERE ServiceZipSpec.Available = TRUE AND (ServiceZipSpec.State = "TX" OR ServiceZipSpec.State = "CW") …Run Code Online (Sandbox Code Playgroud) 我在同一个Access DB中有两个与不同查询的数据连接.第二个总是失败(无论我先跑哪个).
当我查看数据库时,我注意到它有一个锁定文件,我认为这会导致问题.在我关闭Excel文件之前它一直处于锁定状态.导入完成后,任何人都可以帮我解锁数据库吗?
附加信息:
我正在使用Excel和Access 2010.
错误:
"文本文件规范' MyQuery Link Specification'不存在.您无法使用规范导入,导出或链接."
连接字符串(注意:我正在使用命令类型:表):
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin
;Data Source=A:\folder\folder\My Database.accdb
;Mode=Share Deny None
;Extended Properties=""
;Jet OLEDB:System database=""
;Jet OLEDB:Registry Path=""
;Jet OLEDB:Engine Type=6
;Jet OLEDB:Database Locking Mode=0
;Jet OLEDB:Global Partial Bulk Ops=2
;Jet OLEDB:Global Bulk Transactions=1
;Jet OLEDB:New Database Password=""
;Jet OLEDB:Create System Database=False
;Jet OLEDB:Encrypt Database=False
;Jet OLEDB:Don't Copy Locale on Compact=False
;Jet OLEDB:Compact Without Replica Repair=False
;Jet OLEDB:SFP=False
;Jet OLEDB:Support Complex Data=False
;Jet OLEDB:Bypass UserInfo Validation=False
Run Code Online (Sandbox Code Playgroud)
最后,根据 …
概观
我在几个视图中有几个Check Box控件.这些复选框用作切换以隐藏/取消隐藏同一视图中的各个部分.
相关规则设置为该部分,条件为chkbx1!="True",格式设置为隐藏此控件.它工作正常.
此外,在视图的基础上,我有一个文本框,其默认值利用XPath公式.
XPath用于根据是否选中某些框来创建消息.以下示例,它也可以正常工作.
substring("Box was checked.", 1, (../@chkbx1 = "True")*16)
Run Code Online (Sandbox Code Playgroud)
问题
但是,在开发这一系列观点的过程中,我会定期回去重新测试.在这些测试中,我注意到看似随机,其中一些盒子停止触发他们的规则.他们停止触发XPath.
当我进入XPath的字段列表时,它们仍在显示.但就像IP失去了对它们的追踪,而忽略了它们.
这发生在此项目之前,我找到的唯一解决方案是完全删除复选框,然后重新创建它.
然而,除了单调乏味之外,我对于不知道原因和频率感到紧张.
有没有人有这种古怪的经历?
我正在使用InfoPath 2010,它与Access 2010建立了数据库连接.