在没有Sendkeys的情况下运行VBA代码

时间:2017-05-22 12:46:33

标签: python excel vba excel-vba sendkeys

我想使用VBA将PDF读入Excel。我已经能够使用sendkeys这样做,但这不是一个可靠的解决方案,因为sendkeys通常很容易受到攻击。是否有任何其他方法或任何直接方法(在VBA或Python中)?

使用sendkeys的代码:

Sub Get_Pdf()
    Dim XLName As String, PDFPath As String, READERPath As String
    Dim OpenPDF, sh As Worksheet

    XLName = ThisWorkbook.Name
    Set sh = ThisWorkbook.Sheets(1)
    PDFPath = Application.GetOpenFilename(filefilter:="PDF file (*.pdf), *.pdf")

    If UCase(PDFPath) = "FALSE" Then Exit Sub
    '~~> Below path differs depending Adobe version and installation path
    READERPath = "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe"
    Shell READERPath & " " & PDFPath, vbNormalFocus: DoEvents

    Application.Wait Now + TimeValue("00:00:2")

    SendKeys "^a", True
    Application.Wait Now + TimeValue("00:00:2")

    SendKeys "^c"
    Application.Wait Now + TimeValue("00:00:2")

    Windows(XLName).Activate
    sh.Paste sh.Range("A1")
    SendKeys "%{F4}", True
End Sub

我研究了一种使用名为“copy to clipboard”的方法进行复制和粘贴的方法。但是,没有代码或任何东西可用。如果有人也可以提供帮助,我们将不胜感激。

另外,我发现了一种不使用sendkeys的方法。它实际上定义了一个使用虚拟键盘的功能。但显然,该方法也不起作用,因为代码根本没有运行/给出输出。

代码:

Function F4()
    keybd_event VK_F4, 1, 0, 0
End Function

我们可以直接定义相同的其他函数并直接调用这些函数而不是senkeys。但没有输出。

如果有人可以提供任何上述方法的帮助,那将是一个很大的帮助。

0 个答案:

没有答案