it-swarm.com.de

Das Makro kann nicht ausgeführt werden. Das Makro ist in dieser Arbeitsmappe möglicherweise nicht verfügbar

Ich versuche, ein Sub auf einem anderen Arbeitsblatt aufzurufen, aber ich habe eine Laufzeitfehlermeldung erhalten. 

Im Besonderen habe ich zwei Arbeitsblätter und mehrere VBA-Unterseiten in diesen Arbeitsblättern. In einem VBA-Projekt (z. B. workbook1.xlsm) habe ich den folgenden Code:

Sub AnalysisTableMacro()
Workbooks("Python solution macro.xlsm").Activate
Application.Run "Python solution macro.xlsm!.PreparetheTables"
End Sub

Ich habe aber folgenden Fehler erhalten. Die Makros auf beiden Arbeitsblättern sind aktiviert. In beiden Arbeitsblättern befinden sich die Subs in Module1. 

Das Makro "Workbook.xlsm! PrepareTheTables" kann nicht ausgeführt werden. Das Makro ist in dieser Arbeitsmappe möglicherweise nicht verfügbar, oder alle Makros sind möglicherweise deaktiviert.

Ich habe auch Application.Run "Python solution macro.xlsm!Module1.PreparetheTables" ausprobiert, aber nicht funktioniert.

Jede Hilfe wäre dankbar.

18
Ege Ozlem

Wenn Sie ein Leerzeichen im Namen der Arbeitsmappe haben, müssen Sie den Dateinamen in Anführungszeichen (') setzen. Ich habe auch den Punkt entfernt.

Application.Run "'Python solution macro.xlsm'!PreparetheTables"
10
ChipsLetten

Versuchen Sie pro Microsofts KB , den programmgesteuerten Zugriff auf das Visual Basic-Projekt zuzulassen:

  1. Klicken Sie auf die Microsoft Office-Schaltfläche und dann auf Excel-Optionen.
  2. Klicken Sie auf Vertrauensstellungscenter.
  3. Klicken Sie auf Trust Center-Einstellungen.
  4. Klicken Sie auf Makroeinstellungen.
  5. Aktivieren Sie das Kontrollkästchen Zugriff auf das VBA-Projektobjektmodell vertrauen.
  6. Klicken Sie auf OK, um das Dialogfeld Excel-Optionen zu schließen.
  7. Möglicherweise müssen Sie Excel schließen und erneut öffnen.
5
Ved Rai

Hatte das gleiche Problem und ich 'Kompiliertes VBA-Projekt', das einen Fehler feststellte. Nach der Korrektur und Kompilierung funktionierten die Makros.

4
Vignesh

Dieses Problem tritt auch auf, wenn Sie eine Routine in einem Klassenmodul erstellen. 

Wenn Sie versuchen, den Code extern auszuführen, wird dieser Fehler angezeigt.
Sie können einem Element eines Klassenmoduls auch kein Makro zuweisen. 

Wenn Sie versuchen, aus dem Code heraus zu laufen, indem Sie die grüne Wiedergabetaste drücken, wird derselbe Fehler angezeigt. 

Verschieben Sie die Routine entweder in ein reguläres Modul oder erstellen Sie eine neue Routine in einem regulären Modul, das den Klassenmitglied aufruft.

3
Kam

Ich hatte auch ein Problem mit diesem Fehler und stellte fest, dass der Dateiname das Problem verursacht hat.

Ich habe es so genannt: Application.Run "'" & strPath & strFName & "'! UPC.PrintaFew"

Die Variable strFName enthielt einen Apostroph, der natürlich alles durcheinander brachte. Ich habe Stunden gebraucht, um es herauszufinden. Aber sobald der Apostroph aus dem Dateinamen entfernt wurde, funktionierte er.

1
JovialJohn

In meinem Fall trat dieser Fehler auf, wenn der Subname mit dem Modulnamen identisch war.

1
Mor Sagmon

Löschen Sie Ihr Namensmakro und erstellen Sie es erneut .. Ich habe dies getan, und das Makro hat funktioniert.

0
Dhitta Hananda

In meinem Fall ist der Fehler aufgetreten, als ich mein Makro (public sub) in einem Abschnitt ThisWorkbook der Datei abgelegt habe, der erwartet, dass es für die Funktion Application.Run Sichtbar ist. Dies war nicht der Fall und ich habe den von Ihnen erwähnten Fehler erhalten.

Ich habe mein Makro in ein separates Modul verschoben und es hat das Problem behoben.

0
Peter Liapin

Ich musste alle Bindestriche und Unterstriche von Dateinamen und Makronamen entfernen, sicherstellen, dass das Makro aktiviert war, und es mit dem Modulnamen.Makro-Namen versehen

Dies ist, was ich mit endete: Application.Run ("'" & WbName & "'" & "! ModuleName.MacroName")

0
Matt R.

Ich hatte das gleiche Problem wie OP und stellte fest, dass die Optionsdeklaration falsch geschrieben wurde: 

' Comment comment  

Options Explicit  

Sub someMacroMakechart()

in einem Untermodul statt richtig;

' Comment comment  

Option Explicit  

Sub someMacroMakechart()
0
Doylet