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

Verschieben/Kopieren - Dialog; Code löschen

Verschieben/Kopieren - Dialog; Code löschen
23.10.2008 09:09:58
Thomas
Guten Morgen,
ich möche den Dialog zum Verschieben/Kopieren eines Tabellenblattes per VBA nutzen.
Kennt jemand einen geeigneten Weg, wie dies erreicht werden kann?
Kongret: Ich möchte aus einer bestehenden Arbeitmappe per Dialog ausgewählte Blätter in eine andere Arbeitsmappe kopieren und dabei den Code in jedem kopierten Arbeitsblatt löschen. Es wäre schön, wenn ich dazu den bereits vorhandenen Dialog (Verschieben/Kopieren) nutzen könnte.
Vielen Dank für die hoffentlich zahlreichen Tipps.
Gruß
Thomas

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verschieben/Kopieren - Dialog; Code löschen
23.10.2008 11:02:35
ANdreas
Hallo Thomas,
ein kurzer Blick in die Hilfe hilft weiter...
'xlDialogWorkbookMove name_array, dest_book, position_num
Application.Dialogs(xlDialogWorkbookMove).Show , "blabla.xls", 2
'xlDialogWorkbookCopy name_array, dest_book, position_num
Gruß
Andreas
AW: Verschieben/Kopieren - Dialog; Code löschen
23.10.2008 11:07:00
Thomas
Hallo Andreas,
danke für deine Hinweise.
Leider sehe ich noch nicht die Lösung für mein Problem.
Beziehen sich die Dialoge nicht auf die gesamte Excel-Arbeitsmappe?
Ich möchte nur ausgewählte Blätter kopieren - oder funktioniert das auch über xlDialogWorkbookCopy?
Gruß
Thomas
AW: Verschieben/Kopieren - Dialog; Code löschen
23.10.2008 11:21:00
Thomas
Ich bekomme beim Aufruf der Hilfefunktion auch keine Erläuterung von xlDialogWorkbookCopy.
Deshalb kann ich mir kein Bild von der Syntax des Befehls machen.
Wer kann helfen?
Anzeige
AW: Verschieben/Kopieren - Dialog; Code löschen
23.10.2008 14:59:50
Chris
Servus,
so:

Sub zeig()
Application.Dialogs(xlDialogWorkbookMove).Show
End Sub


dann wird der Dialog aufgerufen, hier kannst du nun die aktuelle Arbeitsmappe aussuchen und deine Blätter kopieren (neue Arbeitsmappe = ActiveSheet.Copy, ergibt neues Workbook, Mappexy.xls = Activesheet.Copy after... odser before..., bzw. das Verschieben geht auch).
Gruß
chris

AW: Erweiterung
23.10.2008 15:38:33
Chris
Servus,
das müsste da du ja auch Code löschen willst hinhauen:

Sub cop_lösch()
Application.Dialogs(xlDialogWorkbookMove).Show
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.ActiveSheet.CodeName).CodeModule
.DeleteLines 1, .countOflines
End With
End Sub


Häkchen bei Makro- Sicherheit- vetrauenwürdige Herausgeber - Zugriff auf Viual Basic Project vertrauen
nicht vergessen.
Gruß
Chris

Anzeige
AW: Erweiterung
23.10.2008 18:13:38
Thomas
Hallo Chis,
ich habe erst jetzt Zeit gehabt Deinen Code zu testen.
Es sieht alles super klasse aus.
Vielen Dank für Deinen Beitrag.
Jetzt komme ich einen großen Schritt weiter.
Gruß
Thomas
xlDialogWorkbookMove + Code in Zieldatei löschen
24.10.2008 10:10:00
Thomas
Hallo,
ich nutze erfolgreich den Dialog "xlDialogWorkbookMove" und möchte nun per VBA erreichen, dass der Code aus den kopierten Blättern in der Zielarbeitsmappe gelöscht wird.
Kennt dazu jemand eine Lösung?
Dank vorab.
Gruß
Thomas
AW: ?
24.10.2008 13:42:26
Chris
Servus Thomas,
den Code hab ich dir doch gepostet.
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.ActiveSheet.CodeName).CodeModule
.DeleteLines 1, .countOflines
End With
Diese Zeilen erledigen das bei Aufruf des makros für das jeweilige Tabellenblatt, daher vertsehe ich deine erneute Anfrage nicht.
Gruß
Chris
Anzeige
AW: ?
24.10.2008 14:00:25
Thomas
Hallo Chris,
ich hatte durch irgend eine Sache den Code in der Ursprungsdatei nicht mehr gesehen.
Gerade habe ich es nochmals probiert und es funktioniert.
Hast Du vielleicht auch noch eine hilfreiche Zeile für mich, wie ich beim Kopieren alles Buttons auf den kopierten Blättern entfernen kann?
Sorry, wollt hier keine Verwirrung stiften.
Gruß
Thomas
AW: ?
24.10.2008 14:12:00
Chris
Servus Thomas,
um welche Buttons handelt es sich Shapes (Formular) oder CommandButtons (Toolbar)?
Gruß
Chris
AW: ?
24.10.2008 14:16:32
Thomas
Hallo Chris,
es handelt sich um CommandButtons (Toolbar).
Diese sollen, auch wenn ich mehrere Blätter zum kopieren ausgewählt hatte, in den Kopien gelöscht sein.
Siehst Du eine Möglichkeit, wie das zu bewerkstelligen wäre?
Thomas
Anzeige
Ergänzungsfrage
24.10.2008 14:33:00
Thomas
Hallo Chris,
mir ist noch etwas aufgefallen.
Was ist, wenn ich 2 Tabellenblätter mit Code zum Kopieren ausgewählt habe?
Ich glaube es wird ja immer nur der Code des ersten Blattes gelöscht.
Lässt sich das erweitern,so dass auch der Code und die Commandbuttons auf allen Blättern entfernt wird?
Ich hoffe, ist stehle Dir nicht so viel Zeit mit meinem Problem.
Gruß
Thomas
AW: zur Mehrfachselektion
24.10.2008 18:11:00
Chris
Servus Thomas,
das ist richtig, da immer nur das erste Sheet das ActiveSheet ist.
Das kann man so lösen:

Sub cop_lösch()
Dim ws As Worksheet
Dim x As Long, NamenArray() As String
For Each ws In ActiveWindow.SelectedSheets
ReDim Preserve NamenArray(x)
NamenArray(x) = ws.Name
x = x + 1
Next ws
Application.Dialogs(xlDialogWorkbookMove).Show
For i = LBound(NamenArray()) To UBound(NamenArray())
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets(NamenArray(i)). _
CodeName).CodeModule
.DeleteLines 1, .countOflines
End With
Next i
End Sub


Allerdings dürfen dann in der Zieldatei keine Tabellen mit gleichem Namen sein sonst, wird da gelöscht, weil der neue Nmae dann z.B. Tabelle1(2) heißt und nicht mehr Tabelle1.
Das mit den Buttons geh ich erst an, wenn ich weiß, welche Buttons das sind.
Gruß
Chris

Anzeige
AW: Sorry, hab das mit den Buttons übersehen
24.10.2008 19:00:00
Chris
kümmer mich drum, kann aber dauern.
AW: zur Mehrfachselektion
25.10.2008 11:48:00
Chris
Servus,

Sub cop_lösch()
Dim ws As Worksheet, z As Long
Dim x As Long, NamenArray() As String
For Each ws In ActiveWindow.SelectedSheets
ReDim Preserve NamenArray(x)
NamenArray(x) = ws.Name
x = x + 1
Next ws
Application.Dialogs(xlDialogWorkbookMove).Show
For i = LBound(NamenArray()) To UBound(NamenArray())
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets(NamenArray(i)). _
CodeName).CodeModule
.DeleteLines 1, .countOflines
End With
With ActiveWorkbook.Sheets(NamenArray(i))
For z = .OLEObjects.Count to 1 step - 1
.OLEObjects(z).Delete
Next z
End with
Next i
End Sub


ungetestet:
gruß
Chris

Anzeige
Dank - alle funktioniert bestens
27.10.2008 10:52:19
Thomas
Hallo Chris,
ich habe gerade Deinen Vorschlag getestet.
Das Ergebnis ist beeindruckend.
Alles funktioniernt wie gewünscht.
Im Moment fällt mir nichts ein, was ich gerne anders hätte.
Es bleibt mir nur Dir ganz, ganz herzlich zu danken.
Ich hätte bestimmt noch einiges an Zeit investieren müssen und vermutlich wäre meine Lösung nicht so effizient.
Nochmals besten Dank.
Gruß
Thomas
AW: bitteschön owT
27.10.2008 12:19:00
Christian
.

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige