如何使用 SendKeys 点击访问报告

Posted

技术标签:

【中文标题】如何使用 SendKeys 点击访问报告【英文标题】:How to click through Access Report using SendKeys 【发布时间】:2015-07-30 09:17:53 【问题描述】:

在为我的访问报告创建目录后,我终于到达了代码工作的地步,并创建了一个目录。

作为来自 Microsoft 状态的 instructions,我需要手动单击打印预览直到最后一页,以便创建目录。这行得通。

到目前为止,这是我的代码......它运行良好,除了 SendKeys 什么都不做!

'Click through report so that TOC code is executed
Dim rptCurReport As Report
Set rptCurReport = Screen.ActiveReport

With rptCurReport
    Application.DoCmd.SelectObject acReport, "rptFundSelectionList"
    .Visible = True 'switch to false once code is ok
    'go through all pages
    For i = 1 To .Pages
        SendKeys "PGDN", True
    Next i

    'DoCmd.Close acReport, "rptFundSelectionList"
End With

【问题讨论】:

我不熟悉这种特殊情况的方法,但我建议不要使用SendKeys。可能有多个问题。如果您将代码运行到.Visible = True 并且它什么都不做,那么您的选择没有成功。您的SendKeys 可能在页面加载之前已经执行了多次,在这种情况下它会做一些事情,但不会太多。 由于手册提到为什么你必须滚动浏览,我会尝试通过其他方式选择所有记录 我可以运行代码直到.Visible = True,如果我将它切换为 False 它也可以工作(这也是我知道我有正确焦点的方式)。在我打开报告时如何浏览记录有什么建议吗?我还没有这样的例子。 好的。因此,使用 SendKeys 方法会产生一系列完全不同的问题,正如我在此处记录的那样:***.com/questions/15932743/… 我正在尝试寻找一种不同的方式来逐步完成报告...所以我认为您的方法是正确的 user3819867 【参考方案1】:

我终于自己解决了这个问题。这是代码。愿它帮助其他一些可怜的灵魂!

'Open report containing code to create TOC with list of ISINs from above
DoCmd.OpenReport "rptFundSelectionList", acViewPreview, , strWhere
Set dict = Nothing

'Click through report so that TOC code is executed
Dim rptCurReport As Report
Set rptCurReport = Screen.ActiveReport

With rptCurReport
    Application.DoCmd.SelectObject acReport, .Name
    .Visible = True 'switch to false once code is ok
    'go through all pages
    SendKeys "End", True
    DoEvents
    Application.DoCmd.SelectObject acReport, .Name
    DoCmd.Close acReport, .Name, acSaveNo
End With

【讨论】:

以上是关于如何使用 SendKeys 点击访问报告的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 网格执行 - 如何使用 sendkeys 将多个文件一起(一次)上传到网页

pywinauto:如何在不接受 SendKeys 的 ListView 上发送 Keys?

当sendKeys不工作时,如何在Selenium中上传文件

访问 VBA SendKeys 替代方案

如何使用 vb.net 从查询创建访问报告

来自 MFC 的呼叫访问 2007 报告