Tôi muốn chuyển đổi qua lại giữa ứng dụng với lệnh shell trong VBA. Tôi đang sử dụng SendKeys để thực hiện các công việc trong tiến trình A rồi chuyển sang tiến trình B, rồi xử lý A rồi xử lý B. Nó hoạt động tốt cho lần lặp đầu tiên. Khi tôi sử dụng AppActivate để quay trở lại quá trình B, nó thực sự chuyển tiêu điểm trở lại quá trình B. BAO GIỜ, nó bỏ qua các lệnh tiếp theo từ SendKeys.Sử dụng lệnh AppActivate và Sendkeys trong lệnh shell VBA
đangVí dụ:
Sub pastePDF2TXT_v3(pdfName As String, txtName As String)
Dim acrobatID
Dim acrobatInvokeCmd As String
Dim acrobatLocation As String
Dim notepadID
Dim acrobatID2
Dim notepadID2
Debug.Print "here"
acrobatLocation = "C:\Program Files\Adobe\Acrobat 9.0\Acrobat\Acrobat.exe"
acrobatInvokeCmd = acrobatLocation & " " & pdfName
acrobatID = Shell(acrobatInvokeCmd, 1)
AppActivate acrobatID
SendKeys "^a", True '^A selects everything already in the pdf file.
SendKeys "^c", True '^C copies the selection to the clipboard.
notepadID = Shell("NOTEPAD.EXE " & txtName, 1) ' invoke notepad on the text file.
AppActivate notepadID ' set the new app as teh active task.
SendKeys "^a", True '^A selects everything already in the text file.
SendKeys "^v", True '^V pastes the new stuff over the top of the old text file (deleting the old stuff)
SendKeys "%{END}", True ' makre sure last line of text file
SendKeys "{ENTER}", True
AppActivate acrobatID ' NOTE: APPEARS TO WORK UP TO THIS POINT.
SendKeys "{ENTER}", True ' NOTE: SECOND APP IGNORES SUBSEQUENT COMMANDS FROM HERE DOWN.
SendKeys "^a", True '^A selects everything already in the pdf file.
SendKeys "^c", True '^C copies the selection to the clipboard.
SendKeys "%f", True 'alt f, x to exit Notepad.exe
SendKeys "x", True
'acrobatID.Quit
Debug.Print "start second"
AppActivate notepadID ' set the new app as teh active task.
SendKeys "%{END}", True 'Go to end of text file.
SendKeys "^v", True '^V pastes the new stuff at end of file.
SendKeys "{ENTER}", True
SendKeys "^s", True
SendKeys "%f", True 'alt f, x to exit Notepad.exe
SendKeys "x", True
notepadID.Quit
acrobatID.Quit
End Sub
Những gì tôi có một bó (hơn 1000) của file PDF có văn bản mà tôi muốn là phân tích cú pháp. Một số văn bản có dạng tự do và không sử dụng được. Các phần khác của văn bản được định dạng gần như nhất quán và tôi có thể nhận được thông tin đó và đưa nó vào cơ sở dữ liệu (bảng tính excel) để phân tích sau này. Sau khi dữ liệu được đưa vào một tệp văn bản, tôi phân tích cú pháp thông qua tập lệnh perl để lấy nội dung tôi muốn và tạo CSV. Đây là một cách sucky để làm điều này - vì những lý do bạn đưa ra, cũng bởi vì nó là thẩm mỹ xấu xí và nó dường như không hoạt động nhất quán trong mọi trường hợp. – elbillaf
Phương pháp chung hoạt động nếu pdf chỉ là một trang, nhưng đối với nhiều trang, acrobat chỉ chọn một trang trên^A (từ các phím gửi) vì vậy tôi phải đi qua lại - điều này có vẻ không hoạt động. Tôi đã có thể giải quyết vấn đề này cho nhiệm vụ hiện tại của mình, nhưng tôi muốn một phương pháp chung để giải quyết loại vấn đề này để các phương pháp trong tương lai sẽ không gây khó chịu. – elbillaf
Bạn có thể sử dụng một cái gì đó như http://www.pdf2txt.com/ thay vì cố gắng để tự động hoá Acrobat GUI? –