मैं वीबीए में खोल कमांड के साथ आवेदन के बीच आगे और पीछे स्विच करना चाहता हूं। मैं प्रक्रिया में सामान करने के लिए SendKeys का उपयोग कर रहा हूं ए फिर बी को संसाधित करने के लिए आगे बढ़ें, फिर प्रक्रिया ए को संसाधित करने के लिए। यह पहले पुनरावृत्ति के लिए ठीक काम करता है। जब मैं प्रक्रिया बी पर वापस जाने के लिए AppActivate का उपयोग करता हूं, तो यह वास्तव में बी को संसाधित करने के लिए फ़ोकस स्विच करता है। फिर भी, यह SendKeys के बाद के आदेशों को अनदेखा करता है।वीबीए खोल कमांड में AppActivate और Sendkeys का उपयोग
उदाहरण कोड:
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
क्या मैं पीडीएफ़ पाठ है कि का एक समूह (1000 से अधिक) है कि मैं चाहता हूँ समय ध्यान में उस खिड़की को लाने के लिए अनुमति देने के लिए के माध्यम से पार्स कुछ पाठ मुक्त रूप और अनुपयोगी है। पाठ के अन्य हिस्सों को लगभग लगातार स्वरूपित किया गया है और मैं बाद में विश्लेषण के लिए उस जानकारी को प्राप्त कर सकता हूं और इसे डेटाबेस (एक्सेल स्प्रेडशीट) में डाल सकता हूं। डेटा को टेक्स्ट फ़ाइल में डालने के बाद, मैं अपनी इच्छित सामग्री प्राप्त करने और एक CSV बनाने के लिए एक पर्ल स्क्रिप्ट के साथ विश्लेषण करता हूं। ऐसा करने का यह एक चतुरा तरीका है - आपके द्वारा दिए जाने वाले कारणों से, क्योंकि यह सौंदर्यपूर्ण रूप से बदसूरत है और यह सभी मामलों में लगातार काम नहीं कर रहा है। – elbillaf
सामान्य विधि काम करता है यदि पीडीएफ केवल एक पृष्ठ है, लेकिन बहुविध के लिए, एक्रोबैट केवल^ए (प्रेषक से) पर एक पृष्ठ का चयन करता है, इसलिए मुझे आगे और पीछे जाना होगा - जो काम नहीं करता है। मैं अपने वर्तमान कार्य के लिए इस मुद्दे को हल करने में सक्षम था, लेकिन मुझे इस तरह की समस्या को हल करने के लिए एक सामान्य विधि चाहिए ताकि भविष्य के तरीके इतनी परेशान न हों। – elbillaf
क्या आप Acrobat GUI को स्वचालित करने की कोशिश करने के बजाय http://www.pdf2txt.com/ जैसे कुछ उपयोग कर सकते हैं? –