2016-03-21 15 views
6

Napisałem małą przydatność w Excel VBA, który także współdziała z Acrobat JavaScript w kilku oddzielnych plikach pdf.GetJSObject zawiedzie podczas uruchamiania Microsoft Surface (Excel VBA)

Kod został przetestowany i działa dokładnie tak, jak ma na moim komputerze stacjonarnym. Jednak ostatecznie muszę wdrożyć ten kod na platformie Microsoft Surface. Kiedy próbuję uruchomić ten sam kod z pliku Excela na powierzchni Microsoft Surface, kod balkuje się na dowolnych liniach wykorzystujących "GetJSObject".

Np. Następujące działa poprawnie na moim komputerze, ale powoduje błąd "obiekt lub metoda nie obsługiwana" na mojej powierzchni.

Set gAPP = CreateObject("AcroExch.App") 

Set gPDDOC = CreateObject("AcroExch.PDDoc") 

If gPDDoc.Open(pdfFileName) Then Set jso = gPDDOC.GetJSObject 

Do tej pory udało mi się znaleźć jakieś wskazówki online, które GetJSObject robi dobrze działać w środowisku 64-bitowym i mój Surface działa 64 bitowych systemów Windows 10 i 32 bit Excel.

Jednak nie sądzę, że to samo może stanowić różnicę w zachowaniu całej obu maszyn; na moim komputerze działa 64-bitowy system Windows 7 z 32-bitowym Excelem i wszystko działa zgodnie z przeznaczeniem.

Gdzie należy szukać, aby pomóc odkryć źródło (a) rozwiązanie tego problemu?

EDIT/UPDATE: Oświadczenie getJSObject faktycznie działa zgodnie z przeznaczeniem, IF biorę dodatkowy etap ręcznego otwierania kopię jednej z odpowiednich plików .pdf w Acrobat przed uruchomieniem mojego kodu VBA. Zakładam, że to oznacza, że ​​jest w jakiś sposób definicje obiektów (np Set gAPP = CreateObject("AcroExch.App")), które pracują w różny sposób w stosunku do powierzchni do komputera - a nie polecenia getJSObject konkretnie, jak początkowo sądzono?

Do tej pory nie zmodernizowano większego sensu dla mnie jak/dlaczego to może być prawdziwe (nie mówiąc już jak mogę iść o rozwiązanie problemu).

+1

Tylko sugestia ... Spróbuj ... zmień linię 'Jeśli gPDDoc.Open (pdfFileName) Następnie ustaw jso = gPDDOC.GetJSObject' na' gPDDoc.Open pdfFileName: DoEvents: Set jso = gPDDOC.GetJSObject' –

Odpowiedz

1

Nie wiem, czy to było jeszcze odpowiedzi, jednak istnieją dwa kierunki działania chciałbym podjąć do badań:

1.

Sprawdź, czy możesz uruchomić go bez konstruktora za pomocą:

Set AcroApp = New AcroApp 

Zamiast

Set AcroApp = CreateObject("AcroExch.App") 

2.

Upewnij się, że używasz tej samej wersji programu Acrobat, z moich badań ten błąd występuje od pierwszego wyniku w Google dla wyszukiwanego hasła:

createobject acroexch.app error 429 
You cannot do this with Adobe Reader, you need Adobe Acrobat. 

Ten interfejs OLE jest dostępna za pomocą programu Adobe Acrobat, a nie Adobe Czytelnik.

Powiązane problemy