Unterschiedliche Behandlung von xla und xls?

Hallo Leute,

ich habe ein Makro geschrieben, was nun auch anderen Kollegen zugänglich gemacht werden soll. Daher habe ich es nun in ein Addin umgeschrieben.

Es erstellt unter anderem ein Tabellenblatt, welches eine Schaltfläche enthält.

Über folgende Anweisung habe ich dem Button eine Aktion zugewiesen:

With ActiveWorkbook.VBProject.VBComponents(7).CodeModule
 .InsertLines .CountOfLines + 1, "Private Sub cmd\_projektauswahl\_Click()"
 .InsertLines .CountOfLines + 1, "Application.Run ""Personl.xls!projektauswahl\_öffnen"""
 .InsertLines .CountOfLines + 1, "End Sub"
End With

Das hat alles super funktioniert aus der persönlichen Arbeitsmappe. Nachdem ich nun den Code ins Addin „Auswertung.xla“ kopiert habe, funktionierts nicht mehr (Error 1004: Excel kann das Makro nicht finden)

With ActiveWorkbook.VBProject.VBComponents(7).CodeModule
 .InsertLines .CountOfLines + 1, "Private Sub cmd\_projektauswahl\_Click()"
 .InsertLines .CountOfLines + 1, "Application.Run ""Auswertung.xla!projektauswahl\_öffnen"""
 .InsertLines .CountOfLines + 1, "End Sub"
End With

Ich habe in allen Modulen und Userforms „Personl.xls“ mit „Auswertung.xla!“ ersetzt. Auswertung.xla ist auch offen (Denn aus diesem Addin heraus wird ja alles gestartet).

Setze ich jedoch folgenden Code ein, funktioniert es.

With ActiveWorkbook.VBProject.VBComponents(7).CodeModule
 .InsertLines .CountOfLines + 1, "Private Sub cmd\_projektauswahl\_Click()"
 .InsertLines .CountOfLines + 1, "Workbooks.Open Filename:=""\>\Auswertung.xla"""
 .InsertLines .CountOfLines + 1, "Application.Run ""projektauswahl\_öffnen"""
 .InsertLines .CountOfLines + 1, "End Sub"
End With

Das ist aber blöd, weil jeder Kollege das Makro dorthin verschieben können soll, wo er will und nicht alle Rechner auf alle Netzlaufwerke zugreifen können.

Wie kann man dieses Problem lösen? Wäre cool wenn einer nen Tipp hat. Ich benutze übrigens Excel 2003 SP2

Gruß,
Micha

hi Micha

kann es sein, dass du im excel unter extras->makro->sicherheit->vertrauenswürdige herausgeber die option „allen installierten add-ins und vorlagen vertrauen“ nicht aktiviert hast?

dann ignoriert excel nämlich die makros aus add-ins.

lg
erwin

ich habe ein Makro geschrieben, was nun auch anderen Kollegen
zugänglich gemacht werden soll. Daher habe ich es nun in ein
Addin umgeschrieben.

With ActiveWorkbook.VBProject.VBComponents(7).CodeModule
.InsertLines .CountOfLines + 1, „Private Sub
cmd_projektauswahl_Click()“
.InsertLines .CountOfLines + 1, „Application.Run
„„Personl.xls!projektauswahl_öffnen“““
.InsertLines .CountOfLines + 1, „End Sub“
End With

Hi Micha,
mir wäre das zu risikohaft, die 7 zu benutzen, ich würde das Modul über einen Namen ansprechen und vorher die Existenz prüfen und ggfs. neu anlegen.

Und, ich glaube mich zu erinnern, die Reihenfolge muss nicht zwangsläufig „DieseArbeitsmappe“ als 1 usw sein, aber bin mit dieser Aussage noch unsicher, muß das zuhause mal raussuchen, ich gaube da gibt es eine Datei wo die Reihenfolge unnormal war.
Aber ist auch möglich dass dies eine Testdatei war wo ich mit den beiden Namen jedes Moduls rumexperimetierte.

Gruß
Reinhard

Die 7 meinte ich: .VBComponents(7) o.w.T.

Nee, hab ich gerade nachgeguckt. ist ein Haken dran.
Trotzdem danke für den Tipp

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Eigentlich sollte das egal sein, denn es wird zu Beginn ein neues Workbook erstellt und der Nutzer kann erst nach dem ganzen Code wieder eingreifen. Oder wie meinst du die Sicherheitsbedenken?

Und die cmd_Click-Prozedur, die ich da rein schreibe, wird auch an die korrekte Stelle gesetzt. Nur ist eben das Problem, dass beim Klicken auf die Schaltfläche das Add-In nicht gefunden wird, es sei denn ich öffne es noch einmal explizit mit pfad-Angabe. Also so hier:

With ActiveWorkbook.VBProject.VBComponents(7).CodeModule 
.InsertLines .CountOfLines + 1, "Private Sub cmd\_projektauswahl\_Click()" 
.InsertLines .CountOfLines + 1, "Workbooks.Open Filename:=""\>\Auswertung.xla""" 
.InsertLines .CountOfLines + 1, "Application.Run ""projektauswahl\_öffnen""" 
.InsertLines .CountOfLines + 1, "End Sub"
End With

Kann ich die Pfadangabe aus einem Add-In auslesen? Dann könnte ich nämlich innerhalb dieser Click-Prozedur diesen Pfad an eine Variable übergeben, das Add-In noch einmal öffnen und mein Ziel wäre erreicht, dass jeder Nutzer das Add-In ablegen kann wo er/sie will.

Aber geht das?