AW: Makro trotz "DragAndDrop = False"
11.11.2006 20:40:32
fcs
Hallo Dieter,
ich sehe 2 sinnvolle Möglichkeiten:
1.) Du baust das Makro in jede Original-Datei ein.
Damit ist die Quelldatei fest, die Kopiedatei wird per Datei-Auswahl-Dialog ausgewählt
2.) Du speicherst das Makro in einer separaten Excel-Datei, von der aus du den Kopiervorgang vorbereitest (Original-Datei auswählen (Datei-Auswahl-Dialog oder Drop-Down-Auswahl-Liste), Kopie-Datei (Datei-Auswahl-Dialog) wählen
Die Dateinamen sind nicht fix.
Das kann man wie oben beschrieben per Auswahlliste lösen oder Datei-Auswahl-Dialog.
Ist es möglich 1 Makro (Kopieren) in der gerade aktiven Datei zu starten und nach anwahl der 2ten Datei das 2te Makro (Einfügen) anzuwählen(auszuführen)
Hab es probiert, geht irgendwie nicht. Mit dem Start des 2. Makros geht die Info über den kopierten Zellbereich in der Originaldatei verloren.
Macht aber für dich auch keinen Sinn, denn da hättest du jede Menge Handarbeit die nicht unbedingt nötig ist. Alles mit einem Makro in der Originaldatei zu machen oder einer Steuerungsdatei ist der bessere Weg.
Ich habe versucht auch ohne Blattschutz das Makro auszuführen, aber es wird gemeldet "Laufzeitfehler 1004 ....Die Zelle oder das Diagramm ist geschützt"
Der Blattschutz muss für jedes Tabellenblatt in der Kopie-Datei vor dem Löschen/Einfügen der Daten aufgehoben und danach wieder aktiviert werden, geht per Makro. Falls du auch noch mit Passwort arbeitest, dann kann man das auch einbauen.
Kannst du mir weiterhelfen?
siehe oben :D
Ich kann auch mal die Datei hochladen.
Noch nicht unbedingt nötig
Ich hab das Kopiermakro mal etwas angepasst. Das Makro muss du in ein Modul der Original-Datei einfügen.
Evtl. ist ja auch die etwas einfachere Variante etwas für dich. Diese speichert unter dem gewählten Dateinamen eine Kopie der aktiven Arbeitsmappe.
Gruss
Franz
Sub AlleDatenKopieren2()
'Nur Werte in Kopie übertragen
Dim wbQuelle As Workbook, wbZiel As Workbook, Schutz As Boolean, Pfad As String
Dim wksQuelle As Worksheet, wksZiel As Worksheet, DateiKopie As Variant
Set wbQuelle = ThisWorkbook 'Diese Datei = Originaldatei
Pfad = ActiveWorkbook.Path
ChDir ("C:\Test") 'Startverzeichnis für nachfolgende Dateiauswahl ANPASSEN!!
DateiKopie = Application.GetOpenFilename(Filefilter:="Exceldatei(*.xls),*.xls", _
Title:="Bitte Kopie-Datei auswählen")
If DateiKopie = False Then Exit Sub 'Abbrechen geklickt
Set wbZiel = Workbooks.Open(DateiKopie)
For Each wksQuelle In wbQuelle.Worksheets
Set wksZiel = wbZiel.Worksheets(wksQuelle.Name)
If wksZiel.ProtectContents = True Then
wksZiel.Unprotect ' oder .Unprotect Password:="XYZ"
Schutz = True
Else
Schutz = False
End If
wksZiel.UsedRange.ClearContents
wksZiel.Range(wksQuelle.UsedRange.Address).Value = wksQuelle.UsedRange.Value
If Schutz = True Then wksZiel.Protect ' oder .Protect Password:="XYZ"
Next wksQuelle
wbZiel.Save
ChDir (Pfad)
'wbZiel.Close
End Sub
Sub DateiKopie()
'Kopie der Datei speichern
Dim Pfad As String, DateiKopie As Variant
Pfad = ActiveWorkbook.Path
ChDir ("C:\Test") 'Startverzeichnis für nachfolgende Dateiauswahl ANPASSEN!!
DateiKopie = Application.GetOpenFilename(Filefilter:="Exceldatei(*.xls),*.xls", _
Title:="Bitte Kopie-Datei auswählen")
If DateiKopie = False Then Exit Sub 'Abbrechen geklickt
ActiveWorkbook.SaveCopyAs FileName:=DateiKopie
ChDir (Pfad)
End Sub