Live-Forum - Die aktuellen Beiträge
Datum
Titel
03.05.2024 10:49:02
03.05.2024 10:43:56
03.05.2024 07:38:32
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makrocode mit Makro in Excelzelle einf.?

Makrocode mit Makro in Excelzelle einf.?
27.04.2023 04:25:18
Frank Dreier

Hallo Gemeinde,

-Ich öffne eine Excelmappe mit zwei Makros
-Ich möchte den Code des ersten Makros PER zweitem Makro in eine Excelzelle (z.B. A1) einfügen, also er soll automatisch den Code von Makro1 (z.B. in Textform) in Zelle A1 schreiben bei Ausführung von Makro2.

Ist so etwas möglich?

(Beispiel für Makro1 was ausgelesen werden soll und in Zelle A1 als Text eingefügt werden soll):

----------------------
Sub makro1()

dim i as long

For i = 1 to 5

Range("start").End(xlDown).Offset(1, 0).EntireRow.Insert Shift:=xlDown

Next

End Sub
--------------------

Vielen Dank

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makrocode mit Makro in Excelzelle einf.?
27.04.2023 09:23:00
Heli
Guten Morgen,
kann man z. B. für ein ganzes Modul so machen:
Sub Makro_Exportieren()

With ThisWorkbook.VBProject.VBComponents("Modul1").CodeModule
    ThisWorkbook.Sheets("Tabelle1").Range("A1") = .Lines(1, .CountOfLines)
End With

End Sub
Tabellenname & Modulname musst Du natürlich anpassen.

VG, Heli


Super, vielen Dank!
27.04.2023 12:15:47
Frank Dreier
Deine Variante ist die die ich wohl benutzen werde, da ich mir hier die entsprechende Stelle raussuchen kann (brauche nur eine aus dem Code) und ohne dass ich tief ins System greifen muss bei Excel aber Rudi's Variante ist natürlich der Hammer :)


Anzeige
AW: Makrocode mit Makro in Excelzelle einf.?
27.04.2023 09:47:37
Rudi Maintaire
Hallo,
Sub Makro2()
  Range("A1") = Code2Text("makro1")
End Sub

Function Code2Text(sMatch As String)
  Dim vbc As Object, iCounter As Long, sCode As String
  
  On Error GoTo errhandler
  
  sMatch = "*" & Trim(LCase(sMatch)) & "*"
  
  For Each vbc In ActiveWorkbook.VBProject.VBComponents
      If vbc.codemodule.CountOfLines > 1 Then
        With vbc.codemodule
          iCounter = 1
          Do While iCounter  .CountOfLines
            Select Case True
              Case Trim(LCase(.Lines(iCounter, 1))) Like sMatch
                sCode = .Lines(iCounter, 1)
                Do While .Lines(iCounter, 1) > "End Sub"
                iCounter = iCounter + 1
                sCode = sCode & vbLf & .Lines(iCounter, 1)
              Loop
            End Select
            iCounter = iCounter + 1
            Loop
       End With
     End If
   Next vbc
   
   Code2Text = sCode
   
errhandler:
   If Err.Number > 0 Then
   MsgBox Err.Description, , "Fehler"
   End If
End Function
Gruß
Rudi


Anzeige
AW: Makrocode mit Makro in Excelzelle einf.?
27.04.2023 10:11:58
Heli
Hallo Rudi,
sehr cool, das ist natürlich die "Luxusvariante"!!
Gleich mal mit in meine Sammlung aufgenommen - Danke :-)
VG, Heli


Vielen Dank Rudi
27.04.2023 12:21:52
Frank Dreier
Rudi, vielen Dank, das war sehr nett von Dir, da lernt man gleich wieder etwas :)


an Heli und Rudi
27.04.2023 10:21:21
Oberschlumpf
Hi ihr Beiden,

hab gerad mal Rudi's "Luxus-Variante" ausprobiert.

Mit Aufruf der Zeile...
For Each vbc In ActiveWorkbook.VBProject.VBComponents
..."springt" der VBE sofort in die Error-Behandlung.

Ich denke, weil Level VBA = bescheiden, solltet ihr vielleicht Frank darüber informieren, dass bei Verwendung von Code, der Befehlsteile wie z Bsp "VBProject" und/oder "VBComponents" enthält, in den Einstellungen von Excel unbedingt die Option "dem Projekt vertrauen" oder ähnlich...aktiviert werden muss.

Und dann vllt noch die Info, dass, wenn diese Option aktiviert ist, dass ab dem Moment jeder mit VBa-Code sehr stark ins System eingreifen könnte...ich werf mal den Begriff "Makro-Virus" in den Raum.

Ciao
Thorsten


Anzeige
AW: an Heli und Rudi
27.04.2023 10:35:51
Heli
Hi Thorsten,
danke erstmal fürs mitlesen und Deinen Hinweis, habe ich ehrlich nicht weiter drüber nachgedacht - leider geht man viel zu oft von den eigenen Kenntnissen auch beim Fragesteller aus...
Ich gelobe Besserung!
VG, Heli


AW: an Heli und Rudi bzgl. VBProject Problem
27.04.2023 12:20:51
Frank Dreier
Thorsten schrieb:

"Ich denke, weil Level VBA = bescheiden, solltet ihr vielleicht Frank darüber informieren, dass bei Verwendung von Code, der Befehlsteile wie z Bsp "VBProject" und/oder "VBComponents" enthält, in den Einstellungen von Excel unbedingt die Option "dem Projekt vertrauen" oder ähnlich...aktiviert werden muss."

Danke Thorsten!
Kann man im Makro nicht am Anfang setzten: "Vertraue dem Projekt"=true und am Ende "Vertraue dem Projekt"'=false? (so wie mit dem Display-Alert usw.).
Dann würde nur in dem Lauf dieses Makros VBProject bzw. VBComponents vollen Zugriff haben?


Anzeige
AW: an Heli und Rudi bzgl. VBProject Problem
27.04.2023 13:01:53
Heli
Hehe das wäre so wie wenn Du dem Virenscanner sagen kannst "mich als Datei prüfst Du nicht, ok?"

Nein, das geht nicht da der Zugriff auf die Option bereits diesen Zugriff benötigt :-)
Musst Du vorher manuell einstellen - ich weiß nicht wo das in 2007 zu finden ist, in 365 unter Optionen > Trust Center > Makroeinstellungen > Zugriff auf das VBA-Projektmodell vertrauen

VG, Heli


AW: an Heli und Rudi bzgl. VBProject Problem
27.04.2023 15:52:32
Frank Dreier
Haha, ja, das habe ich mir fast gedacht :)) - aber danke, dass Du es nochmal bestätigt hast ! Das heißt also wenn ich den Code auslesen will dann (logischerweise) muss ich in den sauren Apfel beißen. Vielen Dank Heli


Anzeige
bitte gerne owT
27.04.2023 18:54:06
Heli

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige