Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
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

Modul in neue Arbeitsmappe übertagen

Modul in neue Arbeitsmappe übertagen
07.07.2016 15:36:43
Rookie
Hallo liebe VBA'ler,
und schon wieder stehe ich vor einem Rätsel! Über ein Makro kopiere ich ein Tabellenblatt aus der Ursprungsdatei in eine neue Arbeitmappe. Dabei füge ich auch zwei CommandButtons ein. Des weiteren Übertrage ich auch ein Modul in die neue Arbeitsmappe in denen die Makros für die CommmandButtons hinterlegt sind:
Sub CopyMP ()
Dim objShape As Shape
Call Massn.Copy
With ActiveSheet
.UsedRange.Value = .UsedRange.Value
For Each objShape In .Shapes
If objShape.Type = msoFormControl Then Call objShape.Delete
Next
End With
' Vorhandene Makros vorsorglich löschen
With ActiveWorkbook
With .VBProject.VBComponents(.Sheets("Maßnahmenplan").CodeName).codemodule
.DeleteLines 1, .CountOfLines
End With
End With
' Formeln zur Weiterverarbeitung in neue Arbeitsmappe("Maßnahmenplan") einfügen
Formel = "=ZÄHLENWENN(V:V;""ja"")"
ActiveSheet.Range("AE5").FormulaLocal = Formel
Formel = "=ZÄHLENWENN(V:V;""nein"")"
ActiveSheet.Range("AE6").FormulaLocal = Formel
Formel = "=AB5-AE5-AE6"
ActiveSheet.Range("AE7").FormulaLocal = Formel
' Modul in neue Arbeitsmappe("Maßnahmenplan") übertragen
Dim sPath As String
sPath = "R:\Vorlagen" & "\"
ThisWorkbook.VBProject _
.VBComponents("transfer").Export sPath & "transfer.bas"
With ActiveWorkbook.VBProject
.VBComponents.Import sPath & "transfer.bas"
.VBComponents("transfer").Name = "feedback"
End With
Kill sPath & "transfer.bas"
' Buttons in Arbeitmappe einfügen
Dim cmdm As Button
Dim wsm As Worksheet
Set wsm = ActiveWorkbook.Worksheets(1)
Set cmdm = wsm.Buttons.Add(Left:=700#, _
Top:=50#, _
Width:=200#, _
Height:=30#)
cmdm.Caption = "Rückmeldung Maßnahmen"
cmdm.OnAction = "feedbackM"
Dim cmdw As Button
Dim wsw As Worksheet
Set wsw = ActiveWorkbook.Worksheets(1)
Set cmdw = wsw.Buttons.Add(Left:=700#, _
Top:=90#, _
Width:=200#, _
Height:=30#)
cmdw.Caption = "Rückmeldung Wirksamkeit"
cmdw.OnAction = "feedbackW"
End Sub
Ab hier wird der Speichervorgang eingeleitet.
Soweit so gut. Die neue Arbeitsmappe wird erstellt, die Buttons werden eingefügt und das Modul _
ist auch in der neuen Arbeitsmappe.
Hier der Inhalt des kopierten Moduls:
Sub feedbackM()
If MsgBox(prompt:="Sind alle Ursachen und Maßnahmen definiert?", Buttons:=vbQuestion + vbYesNo)  _
_
= vbNo Then Exit Sub
ActiveSheet.Range("AF3") = Date
Dim OutApp As Object
Dim objOLMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set objOLMail = OutApp.CreateItem(0)
With objOLMail
.To = Range("AA9")
.Subject = "Rückmeldung Maßnahmen Kostenstelle " & Range("H5")
.Body = "Soeben wurden die Ursachen und Maßnahmen aus dem Audit der  _
Kostenstelle " & Range("H5") & "/" & Range("H4") & " " & "zurückgemeldet!"
.Send
End With
Set objOLMail = Nothing
Set OutApp = Nothing
MsgBox "Information über die Rückmeldung wurde an " & Range("AA9") & " versendet.", , "Rü _
ckmeldung"
End Sub
Sub feedbackW()
If MsgBox(prompt:="Wurde die Wirksamkeitsprüfung bei allen Korrekturmaßnahmen durchgeführt?",   _
_
Buttons:=vbQuestion + vbYesNo) = vbNo Then Exit Sub
ActiveSheet.Range("AF4") = Date
Dim OutApp As Object
Dim objOLMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set objOLMail = OutApp.CreateItem(0)
With objOLMail
.To = Range("AA9").Value
.Subject = "Rückmeldung Wirksamkeitsprüfung Kostenstelle " & Range("H5")
.Body = "Soeben wurde die Wirksamkeitsprüfung der Korrekturmaßnahmen aus dem   _
_
Audit der Kostenstelle " & Range("H5") & "/" & Range("H4") & " " & "zurückgemeldet!"
.Send
End With
Set objOLMail = Nothing
Set OutApp = Nothing
MsgBox "Information über die Rückmeldung wurde an " & Range("AA9") & " versendet.", , "Rü _
ckmeldung"
End Sub
Mein Problem:
Wenn ich jetzt in der neue Arbeitsmappe die Buttons aktiviere, dann greift Excel auf die Urspungsdatei zu und nicht auf das Makro welches in der kopierten Arbeitsmappe liegt.
Was muss ich denn machen, damit ich beim aktivieren der Buttons die in der kopierten Arbeitmappe hinterlegten Makros anspreche?
Vielen Dank schon mal
Liebe Grüße
Stefan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro auf Button
07.07.2016 16:29:49
Dieter(Drummer)
Hallo Stefan,
rechte Maustaste, un im öffnenden Menü das Makro aus der neuen Mappe auswählen, dan steht in der Kopfzeile dein neues Makro. Mit OK schliessen. Fertig.
Gruß, Dieter(Drummer)

AW: Sorry für Schreibfehler. owT
07.07.2016 16:30:35
Dieter(Drummer)

AW: Modul in neue Arbeitsmappe übertagen
07.07.2016 16:43:56
Rudi
Hallo,
cmdm.OnAction = activeworkbook.Name & "!feedbackM"
Gruß
Rudi

AW: Modul in neue Arbeitsmappe übertagen
08.07.2016 07:31:22
Rookie
Vielen Dank - funktioniert!
Gruß
Stefan
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige