Office: Makro als Addin auf aktuelle Arbeitsmappe anwenden

Helfe beim Thema Makro als Addin auf aktuelle Arbeitsmappe anwenden in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Leute,*:)* ich hab da nocheinmal ein älteres Thema was ich aktuell wieder weiter bearbeite. Aufgabe: Ich habe einen Code den ich als Addin... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Creator-X, 25. Februar 2023.

  1. Makro als Addin auf aktuelle Arbeitsmappe anwenden


    Hallo Leute,Makro als Addin auf aktuelle Arbeitsmappe anwenden *:)*
    ich hab da nocheinmal ein älteres Thema was ich aktuell wieder weiter bearbeite.
    Aufgabe: Ich habe einen Code den ich als Addin abgespeichert habe und in Excel in die Register oben eingebunden habe und dort per Button aufrufen kann.
    Leider bezieh ich mich ja in dem Code auf die Arbeitsmappe wo der Code drinnen steht und nicht auf die Arbeitsmappe mit den aktuellen Daten. Siehe Anhang.
    Makro als Addin auf aktuelle Arbeitsmappe anwenden :(Lösungsansatz: Ich wollte mich mit "ThisWorkbook.Tabelle1" auf die aktuelle Arbeitsmappe beziehen wo der Code drinnen steht. Aber ich bekomme dort eine Fehlermeldung. "Laufzeitfehler '138': Objekt unterstützt diese Eigenschaft oder Methode nicht."

    Kennt jemand eine Möglichkeit wie man sich noch auf die aktuelle Arbeitsmappe beziehen kann?Makro als Addin auf aktuelle Arbeitsmappe anwenden :confused:

    Code:
    Sub SpaltenAusblenden()
        Columns("A:CC").Hidden = True
    End Sub
    
    Sub Ausblenden(WelcherButton As Byte)
    Dim Adresse As String
    
    Call SpaltenAusblenden
    
    Dim s As String
    Select Case WelcherButton
        Case 1: s = "Ltg.Nr.|Pos.Nr.|*Ø*|Mo|Ni|Mn|Cr|Si"                   'C-Stahl
        Case 2: s = "Ltg.Nr.|Pos.Nr.|*Ø*|Mo|Nb|Ni|Mn|Cr|Ti|Si"             'austenitische Stähle
        Case 3: s = "Ltg.Nr.|Pos.Nr.|*Ø*|Nb|Ni|Mn|Cr|Ti|Si|Cu|Co"          'Alloy
        Case 4: s = "Ltg.Nr.|Pos.Nr.|*Ø*|Mo|Ni|Mn|Si|Nb|Ti"                'CrNi-Stähle
        Case 5: s = "Ltg.Nr.|Pos.Nr.|*Ø*|Mo|Nb|Ni|Mn|Cr|V|Si"                'Cr-Stähle
        Case 6: s = "Ltg.Nr.|Pos.Nr.|*Ø*|Mo|Nb|Ni|Mn|Cr|Si|V"              'Schweißzusatzwerkstoff
        Case 7: Cells.EntireColumn.Hidden = False: Exit Sub             'alles Einblenden
    End Select
    'Range(s).EntireColumn.Hidden = False
    SpaltenEinblendenDetail s
    
    'Gehe zu Adresse
    Application.Goto Reference:=Range("A1"), Scroll:=True
    
    End Sub
    
    Sub SpaltenEinblendenDetail(s As String)
       Dim Sp() As Long, SpTitel() As String, I As Long
      
      'Alle Spalten einblenden
       ThisWorkbook.Tabelle1.Columns.Hidden = False
      'Spaltennummern Sp zu den Spaltentiteln s ermitteln
      'Spaltennummern für nicht vorhandene Spaltentitel erhalten Sp=0
       SpTitel = Split(s, "|")
       ReDim Sp(UBound(SpTitel)) As Long
        For I = 0 To UBound(SpTitel)
          Sp(I) = HoleSpalte(ThisWorkbook.Tabelle1, SpTitel(I))
        Next I
     
      'Spalten A:CC ausblenden
       SpaltenAusblenden
      'Spalten mit den Spaltennummern Sp, sofern sie nicht 0 sind, wieder einblenden
        For I = 0 To UBound(Sp)
          If Sp(I) Then ThisWorkbook.Tabelle1.Columns(Sp(I)).Hidden = False
        Next I
    End Sub
     
    Zuletzt bearbeitet: 25. Februar 2023
    Creator-X, 25. Februar 2023
    #1
  2. Hajo_Zi
    Hajo_Zi Erfahrener User
    ich konnte nicht sehen was Du es ersetzt hast. Ich konnte auch nicht sehen wie Du den Fehler auslöst.
    Ich vermute mal Du hast nicht ActiveWorkbook gescvhrieben.
    nur wenige schauen auf Deinen Rechner und sehen die Datei.
    Ich möchte gerne den Fehler im Original sehen.

    Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.

    Ein Nachbau sieht meist anders aus als das Original. <B>Darum sollte das Original verlinkt werden.</b>

    Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
    Hinweis - Anonymisierung und Pseudonymisierung von Beispielmappen - MS-Office-Forum
    änderrn.
    Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster*, Test*, Mappe*, Beispiel*, Fehler*, Kalender* usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
    Es sollte ein aussagekräftiger Name sein.

    Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)3

    Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.

    Bilder statt Datei | Excel ist sexy!

    Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.

    Das ist nur meine Meinung zu dem Thema.



    Makro als Addin auf aktuelle Arbeitsmappe anwenden GrußformelMakro als Addin auf aktuelle Arbeitsmappe anwenden Homepage
     
    Hajo_Zi, 25. Februar 2023
    #2
  3. Hi Hajo_Zi,
    Makro als Addin auf aktuelle Arbeitsmappe anwenden :confused: ja klar, hast ja Recht.
    das ist der Code der Funktioniert wenn der code in der Arbeitsmappe gespeichert ist.
    und ich möchte ja den Code als Addin in der Aktiven Arbeitsmappe ausführen. Dort gibt es auch immer ein Tabellenblatt1.

    Code:
    Sub SpaltenEinblendenDetail(s As String)
       Dim Sp() As Long, SpTitel() As String, I As Long
     
      'Alle Spalten einblenden
       Tabelle1.Columns.Hidden = False
      'Spaltennummern Sp zu den Spaltentiteln s ermitteln
      'Spaltennummern für nicht vorhandene Spaltentitel erhalten Sp=0
       SpTitel = Split(s, "|")
       ReDim Sp(UBound(SpTitel)) As Long
        For I = 0 To UBound(SpTitel)
          Sp(I) = HoleSpalte(Tabelle1, SpTitel(I))
        Next I
     
      'Spalten A:CC ausblenden
       SpaltenAusblenden
      'Spalten mit den Spaltennummern Sp, sofern sie nicht 0 sind, wieder einblenden
        For I = 0 To UBound(Sp)
          If Sp(I) Then Tabelle1.Columns(Sp(I)).Hidden = False
        Next I
    End Sub
     
    Creator-X, 25. Februar 2023
    #3
  4. Hajo_Zi
    Hajo_Zi Erfahrener User

    Makro als Addin auf aktuelle Arbeitsmappe anwenden

    meine Änderung möchtest Du nicht machen und Deinen Code möchtest Du nicht ins Add In kopieren.
    Gut ich bin dann raus.

     
    Hajo_Zi, 25. Februar 2023
    #4
  5. Makro als Addin auf aktuelle Arbeitsmappe anwenden :confused: Oh hab ich da irgenwas nicht ganz verstanden? Ich hab mal meine aktuellen Arbeitsmappen und Addin hochgeladen.
    also in der Datei:
    Happy_PMI_V1.2.1.xlsm -> Daten mit Code - funtktioniert
    Happy_PMI_V1.2.1.xlam.xlsm -> das Addin
    417718.xlsx - Testdaten auf die ich das Addin anwenden möchte, Hier kommt der Fehler wie oben beschrieben wenn ich das Addin ausführe.

    Gruß CXMakro als Addin auf aktuelle Arbeitsmappe anwenden :rolleyes:



     
    Creator-X, 25. Februar 2023
    #5
  6. Exl121150 Erfahrener User
    Hallo,

    du hast den VBA-Code der SUB
    Sub SpaltenEinblendenDetail(s As String)
    Dim Sp() As Long, SpTitel() As String, I As Long

    'Alle Spalten einblenden
    Tabelle1.Columns.Hidden = False
    'Spaltennummern Sp zu den Spaltentiteln s ermitteln
    'Spaltennummern für nicht vorhandene Spaltentitel erhalten Sp=0
    SpTitel = Split(s, "|")
    ReDim Sp(UBound(SpTitel)) As Long
    For I = 0 To UBound(SpTitel)
    Sp(I) = HoleSpalte(Tabelle1, SpTitel(I))
    Next I

    'Spalten A:CC ausblenden
    SpaltenAusblenden
    'Spalten mit den Spaltennummern Sp, sofern sie nicht 0 sind, wieder einblenden
    For I = 0 To UBound(Sp)
    If Sp(I) Then Tabelle1.Columns(Sp(I)).Hidden = False
    Next I
    End Sub

    in einem Add-In stehen, während du an 3 Stellen auf "Tabelle1" zugreifst, wobei, wie ich vermute, es sich um den Workbook-internen Namen eines Arbeitsblattes handelt. Dieser ist im Add-In nicht bekannt.

    Daher sollte man in einem solchen Fall die Tabulatorbezeichnung des Arbeitsblattes verwenden. Ich nehme an, dieser Name lautet bei dir "PMI Testdatei". Da aber an den 3 Stellen ein Objektzeiger auf eine Arbeitsblatt-Instanz benötigt wird, musst du zu Anfang der SUB einen solchen deklarieren und dann erzeugen und verwenden:
    Dim Wb As Workbook, Ws As Worksheet
    Set Wb = ActiveWorkbook
    Set Ws = Wb.Worksheets("PMI Testdatei")

    und dann
    Ws.Columns.Hidden = False
    weiters
    Sp(I) = HoleSpalte(Ws, SpTitel(I))
    und
    If Sp(I) Then Ws.Columns(Sp(I)).Hidden = False

    Dabei habe ich mit "Set Wb = ActiveWorkbook" vorausgesetzt, dass die Arbeitsmappe, in der das Arbeitsblatt "PMI Testdatei" enthalten ist, bereits die aktive Arbeitsmappe ist.
    Anmerkung: Dagegen würdest du mit "Set Wb = ThisWorkbook" auf die Arbeitsmappe verweisen, in der der soeben verwendete Programmcode steht.
     
    Exl121150, 25. Februar 2023
    #6
  7. Hallo Exl121150,

    mercy. Ja so in die Richutng war mein Gedanke auch. Ich wußte nur nicht wie ich das Workbook und Worksheet richtig deklarieren sollte. in den Arbeitsmappen die ich mit dem Addin bearbeiten will ist das Worksheet immer Tabelle1. Ich habe den Namen PMI Tesdatei nur mal für ein Test verwendet ihn aber wieder umbenannt in Tabelle 1.
    Aber genau so funktioniert es gut.
    Danke.
    Gruß CX
     
    Creator-X, 26. Februar 2023
    #7
  8. Exl121150 Erfahrener User

    Makro als Addin auf aktuelle Arbeitsmappe anwenden

    Hallo,

    dir ist aber schon klar, dass die 3 Dinge im VBA-Code
    Tabelle1
    "Tabelle1"
    Wb.Worksheets("Tabelle1")

    grundlegend verschieden sind.
     
    Exl121150, 26. Februar 2023
    #8
  9. Makro als Addin auf aktuelle Arbeitsmappe anwenden :oops:Makro als Addin auf aktuelle Arbeitsmappe anwenden o_O
    Weil? Greif ich da nicht immer auf Tabelle1 zu?
     
    Creator-X, 26. Februar 2023
    #9
  10. Exl121150 Erfahrener User
    Hallo,
    • Tabelle1: Wenn im VBA-Code dieser Bezeichner auftaucht, so wird er meistens unmittelbar gefolgt von einem Punkt und von einer Eigenschaft oder Methode, zB. wie Tabelle1.Range("A1"). Bei dieser Verwendung bezeichnet Tabelle1 einen im aktiven Workbook (Arbeitsmappe) lokalen Zeiger auf eine Arbeitsblatt-Objektinstanz. Dieser Zeigerbezeichner ist somit in einer anderen Arbeitsmappe unbekannt. Im Projekt-Fenster des VBA-Editors ist das der erste Bezeichner eines Arbeitsblattes. In der VBA-Programmierpraxis wird dieser Bezeichner kaum verwendet.
    • "Tabelle1": ist eine Zeichenkette. "Tabelle1" stellt letztlich nur eine Zeichenkette dar, die als solche beliebig manipuliert/verändert/verwendet werden kann.
    • Wb.Worksheets("Tabelle1"): Hier wird "Tabelle1" dazu verwendet, einen Objektinstanzzeiger auf ein einzelnes Element einer Auflistung zu erstellen. Dieser Zeiger zeigt dabei auf ein einzelnes Worksheet-Objekt und er kann zB. in einem "Set-Statement" einer Objektinstanzzeigervariablen zugewiesen werden, zB. Set Ws = Wb.Worksheets("Tabelle1"), wobei die Variable Ws mit Dim Ws As Worksheet deklariert/definiert ist. Im Projekt-Fenster des VBA-Editors ist das der zweite Bezeichner (in runden Klammern) eines Arbeitsblattes. In der VBA-Programmierpraxis ist das der in der Regel verwendete Bezeichner.
     
    Exl121150, 27. Februar 2023
    #10
  11. HKindler
    HKindler Erfahrener User
    Hi,

    Vielleicht in deiner Programmierpraxis. Ich und viele andere verwenden fast ausschließlich Taballe1 oder besser gesagt den Codename eines Tabellenblatts. Wieso? Weil der sich so gut wie nie ändert. Der Blattname Worksheets("Tabelle1") kann ganz leicht vom Benutzer geändert werden. Dann läuft der Code auf einen Fehler. Worksheets(1) also die Position des Tabellenblatts ist genauso unzuverlässig. Der Codename kann nur händisch im VBA-Editor geändert werden. Und das macht keiner, ohne sich der Konsequenzen bewusst zu sein,

    Bei einem AddIn hingegen macht es den meisten Sinn ActiveSheet zu verwenden. Dann braucht man nicht den unbekannten Codename zu suchen und ist auch unabhängig von Blattname und -position.

    Und wenn man doch mal den Codename in einem anderen Workbook verwenden will, dann muss man den halt in einer schleife suchen. Das könnte so aussehen:
    Code:
    Function GetSheetFromCodeName(ByVal strCodeName As String, _
                                  Optional Arbeitsmappe As Workbook) As Worksheet
    'Gibt eine Tabelle bzw. ein Diagramm basierend auf dem CodeName zurück
    Dim ws As Object
    If Arbeitsmappe Is Nothing Then Set Arbeitsmappe = ThisWorkbook
    For Each ws In Arbeitsmappe.Sheets
        If LCase(ws.CodeName) = LCase(strCodeName) Then
            Set GetSheetFromCodeName = ws
            Exit Function
        End If
    Next
    End Function
     
    HKindler, 27. Februar 2023
    #11
  12. Hallo HKindler,
    ja Du hast Recht. Hab es heute mitbekommen das ein Kollege wohl auf irgend einen Rechner bei uns im unternehmen Excel auf Englisch umgestellt hat und dann stand "Sheet1" im Tabellenblatt und somit hat das Addon nicht mehr funktioniert.

    Aber ich sag mal Standard ist bei uns deutsch und dann steht Tabelle1 drinnen.
    Vielleicht kann man das ja später noch mit einbauen .
    Aber die Überlegung ist gut.
     
    Creator-X, 28. Februar 2023
    #12
Thema:

Makro als Addin auf aktuelle Arbeitsmappe anwenden

Die Seite wird geladen...
  1. Makro als Addin auf aktuelle Arbeitsmappe anwenden - Similar Threads - Makro Addin aktuelle

  2. Makro Zip-Datei von Webseite runterladen, auspacken, kopieren

    in Microsoft Excel Hilfe
    Makro Zip-Datei von Webseite runterladen, auspacken, kopieren: Hallo Zusammen, ich habe ein Makro gefunden von dem ich denke, dass es koennen sollte was ich braeuchte, eine Datei herunterladen, auspacken und den Inhalt in die Datei kopieren in der das Makro...
  3. Makro für variable Anzahl von Datensätzen

    in Microsoft Excel Hilfe
    Makro für variable Anzahl von Datensätzen: Hallo zusammen, ich habe wieder einmal ein kleines Excel-Problem, bei dem Ihr mir sicherlich helfen könnt. Ich habe eine Excel-Liste, das ist ein Export aus einem anderen Programm (siehe...
  4. Makro aus personal.xls starten

    in Microsoft Excel Hilfe
    Makro aus personal.xls starten: Auf einem Arbeitsblatt habe ich mehrere Buttons. Die zugehörigen Makros sind in personal.xls gespeichert. Aus dem Code-Editor heraus kann ich die Makros ohne Problem starten. auf dem Arbeitsblatt...
  5. Dokumente und Blatt umbenennen

    in Microsoft Word Hilfe
    Dokumente und Blatt umbenennen: Ich lade mir jeden Tag csv-Dateien von meiner Bank herunter. Diese sind mit Datum versehen, also die Datei selbst und das erste Blatt, z.B. "Konto_13.02.2024". Wenn ich ein Makro erstelle, in dem...
  6. Speichern mit dem Titel der Zelle A2

    in Microsoft Excel Hilfe
    Speichern mit dem Titel der Zelle A2: Moin moin, Ich habe per Makro einen Arbeitsablauf aufgezeichnet der soweit auch funktioniert. Dieser Endet jedoch im "Speichern Unter" Fenster, welches durch das Klicken von "Drucken als PDF"...
  7. Barcode Scanliste Makro anpassen

    in Microsoft Excel Hilfe
    Barcode Scanliste Makro anpassen: Hallo zusammen! Einer der Mitglieder hier hat mir eine Funktionsliste erstellt, mit der man Barcodes scannt und danach einen Wert über die Bildschirmtastatur eingibt. Die Barcodes hatten bisher...
  8. Alte 2002er-Makros in 2010

    in Microsoft Word Hilfe
    Alte 2002er-Makros in 2010: Bin von Office 2002 auf Office 2010 umgestiegen und zunächst überrascht, dass all meine Makros und AddIns noch (fast) einwandfrei weiterfunktionieren, bis auf ein Makro: Es handelt sich um das...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden