2016-11-11 8 views
0

Ich habe derzeit ein Formular mit ein paar Tasten, Textfelder und einem AcroPDF. AcroPDF ist ein zusätzliches Steuerelement, das ich zu meiner Toolbox hinzugefügt habe, und ich bekomme es von "Adobe PDF Reader".Excel VBA entfernen Kontrollen

Dieses Makro wird auf verschiedenen Computern verwendet, und ich habe herausgefunden, dass das Makro aus irgendeinem Grund nicht auf allen Computern funktioniert. Aber wenn ich das AcroPDF-Steuerelement aus dem Formular lösche, funktioniert es für alle Computer. Für die Computer, die einen Fehler bekommen, passiert es, wenn ich die Datei zum ersten Mal öffne, bekomme ich automatisch eine Fehlermeldung und das Formular erscheint nicht automatisch (wie ich es programmiert habe).

Gibt es eine Möglichkeit, kann ich dies in meinem "Thisworkbook.open" programmieren, so dass ich, wenn es einen Fehler gibt, kann ich irgendwie diese zusätzliche Kontrolle löschen oder deaktivieren? etwas Ähnliches wie Sie Referenzen ein- und ausschalten können? (Siehe unten)

ThisWorkbook.VBProject.References.AddFromFile ("bibliotheks")

AKTUALISIERT: die Fehlermeldung, die ich von den Computern bekommen, die nicht funktionieren ist die folgende:

Systemfehler & H80004005 (-2147467259). nicht spezifizierter Fehler

Danke.

+0

Was ist die Fehlermeldung, wenn Sie die Datei auf den anderen Computern öffnen? –

+0

@DavidZemens Ich habe meine Frage aktualisiert, um den Fehler hinzuzufügen – NoobProgrammer

+0

Wenn Sie brechen und debuggen, welche Zeile erhöht diesen Fehler? –

Antwort

0

UserForm.Controls.Remove - dies funktioniert jedoch nur für Steuerelemente, die zur Laufzeit (dynamisch) hinzugefügt werden. Sie können die Methode Remove nicht für ein Steuerelement verwenden, das vom Designer hinzugefügt wurde.

Wahrscheinlich müssen Sie diese Logik umkehren, und nur hinzufügen das Steuerelement, wenn die Referenz auf dem Computer des Benutzers vorhanden ist.

Dim ctrl 
If Len(Dir("libraryname")) <> 0 Then 
    Set ctrl = UserForm1.Controls.Add ... 

End If 

Sie würden auch dann die Remove Methode verwenden möchten, wenn Sie das Formular zu schließen, auf diese Weise bleibt die Form in einem Zustand, der auf einem der Computer geöffnet werden konnte.

JEDOCH kann die Fehlermeldung, die Sie auf den anderen Maschinen bekommen, zusätzliches Licht auf die Quelle des Problems werfen. Je nachdem, um welchen Fehler es sich handelt, kann es andere Lösungen geben, bei denen das Steuerelement nicht entfernt wird.

+0

Hallo David, ich habe meine Frage aktualisiert, um den Fehler msg zu zeigen, ich bekomme – NoobProgrammer

+0

Hallo David, ich werde versuchen, Ihre Antwort oben, aber ich habe eine Frage. Nach welchem ​​"Bibliotheksnamen" suche ich? Ich habe keine Referenzen zu meiner Arbeitsmappe hinzugefügt, ich habe nur das Steuerelement hinzugefügt und dann habe ich es auf meinem Formular erstellt. Vielleicht verstehe ich das nicht richtig. Anleitung mir oh weise one – NoobProgrammer

+0

Sie benötigen den Referenzpfad zur Acrobat PDF Reader Bibliothek/DLL. –

0

Wenn es Ihnen nichts ausmacht, ein dupliziertes Formular ohne das AcroPDF-Steuerelement zu erstellen, können Sie möglicherweise Etiketten und die GoTo-Anweisung verwenden.

Sub Workbook_Open() 
' do stuff 
On Error GoTo AcroPDFError 
ThisWorkbook.VBProject.References.AddFromFile ("libraryName") 
' load your form with the AcroPDF control here. 
Continue: 
On Error GoTo 0 

' the rest of your Workbook_Open sub is here 
Exit Sub 
AcroPDFError: 
' load your form without the AcroPDF control here. 
GoTo Continue 
End Sub 
+0

Ich werde das versuchen, danke – NoobProgrammer