"另存为"在pdf by vba

时间:2017-03-16 09:33:30

标签: vba pdf

我正在尝试创建一个VBA宏来将数据从PDF文件复制到Excel文件,但数据总是合并为1列,而不是与pdf文件相同的2列。 很难获得下一步的数据。

所以,我想在Pdf文件中使用tab "Save as other" ->Text将文件保存为包含2列的txt文件。我使用SendKeys"%fhx"显示另存为对话框,但我无法更改路径和文件名。

请帮我解决这个问题。

screenshot

代码如下:

Do While filepdf <> "" 
    task = Shell("C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe " & filename, 1) 
    Application.Wait Now + TimeValue("00:00:2") 
    SendKeys "%fhx" AppActivate (task) --- I dont know how to select Save as dialog to change path and file name --- 
    SendKeys "%s" Application.Wait Now + TimeValue("00:00:2") 
    SendKeys "%{F4}", True 
    filepdf = Dir(path & "*.pdf") 
Loop

2 个答案:

答案 0 :(得分:0)

在回答之前有两个免责声明:

  1. 我没有Acrobat Reader,这就是我使用Notepad.exe的原因。但是这个想法是一样的,你会设法适应它。
  2. 发送密钥通常不是一个好习惯。但每个人都使用它,所以......
  3. 这是代码,评论有希望解释。 你应该找到一种方法将它放在你的循环中。 玩得开心:

    Option Explicit
    
    Public Sub TestMe()
    
        Dim task    As Variant
    
        task = Shell("C:/Windows/Notepad.exe", 1)
    
        AppActivate task
    
        'save as
        SendKeys "%fa", True
    
        'name in the save as
        SendKeys "vityata.txt", True
    
        'press enter
        SendKeys "{ENTER}", True
    
        'exit notepad
        SendKeys "%fx", True
    
    End Sub
    

    编辑: 如果要更改destionation路径,请按以下方式更改:

    'name in the save as
    SendKeys "C:\Users\lili\ivanova\ale\new\vityata.txt", True
    

答案 1 :(得分:0)

我尝试了以下代码,发现没关系:

Sub SaveAsPdf()

Dim task

    task = Shell("C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe "    & namepdf, 1)
    SendKeys "%fhx"
    AppActivate (task)
    SendKeys nametxt, True
    SendKeys "{TAB}"
    SendKeys "{TAB}"
    SendKeys "{TAB}"
    SendKeys "{TAB}"
    SendKeys "{TAB}"
    SendKeys "{TAB}"
    SendKeys "{ENTER}"
    SendKeys path, True
    SendKeys "{ENTER}" 
    SendKeys "%s"

End sub