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

Arbeitsblätter verschieben

Arbeitsblätter verschieben
11.06.2013 15:04:43
Hübner
Hallo Excel Fans,
ich habe eine aktive Datei mit Namen „Tisch1.xlsm“ mit unterschiedlich vielen Arbeitsblätter.
Nun möchte ich, dass alle Blätter außer Tabelle1 in eine andere Datei Name „Auftrag1.xlsm“ verschoben werden.
Habe folgendes gefunden, aber hier werden alle Blätter außer Tabelle1 gelöscht.
Sub Loeschenalle()
' Alle Register löschen bis auf Register Tabelle11
Dim I As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For I = ActiveWorkbook.Worksheets.Count To 1 Step -1
If Worksheets(I).Name  "Tabelle1" Then _
Worksheets(I).Delete
Next I
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Vielleicht kann jemand das ändern, nicht löschen sondern so verschieben, dass Tisch1 nur mit einen Blatt Tabelle1 gespeichert wird und die anderen Blätter in Auftrag.
Vielen Dank im Voraus.
Frank Hübner

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsblätter verschieben
11.06.2013 15:12:36
Klaus
Hi Frank,
einfach .delete gegen .move tauschen!
Beide Dateien müssen in der gleichen Excel-Instanz geöffnet sein.
Sub VerschiebeAlle()
' Alle Register löschen bis auf Register Tabelle11
Dim I As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For I = ActiveWorkbook.Worksheets.Count To 1 Step -1
If Worksheets(I).Name  "Tabelle1" Then _
Worksheets(I).Move Before:=Workbooks("Auftrag1.xlsm").Sheets(1)
Next I
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub '
Grüße,
Klaus M.vdT.

Anzeige
AW: Arbeitsblätter verschieben
11.06.2013 16:32:42
Hübner
Hallo Klaus,
Danke für Deine schnelle Antwort.
Leider bleibt es bei
"If Worksheets(I).Name "Tabelle1" Then _"
jetzt hängen.
löschen klappt.
Was ist noch falsch, beide Dateien sind geöffnet.
Tschau

AW: Arbeitsblätter verschieben
11.06.2013 17:28:45
Klaus
Hi,
wenn du den Code korrekt kopiert hast, kann es bei
"If Worksheets(I).Name "Tabelle1" Then _"
nicht hängen bleiben - denn das ist nur eine halbe Zeile! Lass mich raten, die Zeile drunter ist rot?
Die ganze Zeile ist diese
If Worksheets(I).Name <> "Tabelle1" Then Worksheets(I).Move Before:=Workbooks("Auftrag1.xlsm").Sheets(1)
Ich nehme mal an, beim kopieren ist der Zeilenumbruch "kaputt" gegangen. Rücke die Zeilen wieder zusammen und entferne den _
Grüße,
Klaus M.vdT.

Anzeige
AW: Arbeitsblätter verschieben
12.06.2013 08:12:04
Klaus
Hallo Frank,
sorry - mir geht gerade das Meme nicht aus dem Kopf ... "Not sure if trolling..."
WARUM hast du denn zwei Zeilen aus der einen gemacht?
Sub VerschiebeAlle()
' Alle Register löschen bis auf Register Tabelle11
Dim I As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For I = ActiveWorkbook.Worksheets.Count To 1 Step -1
   If Worksheets(I).Name  "Tisch1" Then
Worksheets(I).Move Before:=Workbooks("85761.xlsm").Sheets(1)
Next I
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Es ist EINE IF-Abfrage! Die gehört in EINE Zeile!
Sub VerschiebeAlle()
' Alle Register löschen bis auf Register Tabelle11
Dim I As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For I = ActiveWorkbook.Worksheets.Count To 1 Step -1
   If Worksheets(I).Name  "Tisch1" Then Worksheets(I).Move Before:=Workbooks("Auftrag1. _
xlsm").Sheets(1)
Next I
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

das _ ist ein ZEILENUMBRUCH damit es im Forum dargestellt werden kann. Den hat übrigens auch dein Löschmakro, das DIREKT darüber steht und komplett identisch ist - auf die Idee, da mal nachzusehen, bist du nicht gekommen?
So, jetzt extra für dich nochmal das verschieben - Makro in kopierbarer Form. Den Zeilenumbruch, den du nicht kopieren kannst, habe ich entfernt - dafür den Befehl in einen hier völlig sinnfreien IF-Block verpackt, das spart Zeilenlänge.
Sub VerschiebeAlle()
' Alle Register VERSCHIEBEN bis auf Register Tabelle11
Dim I As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For I = ActiveWorkbook.Worksheets.Count To 1 Step -1
  If Worksheets(I).Name  "Tisch1" Then
Worksheets(I).Move Before:=Workbooks("Auftrag1.xlsm").Sheets(1)
  End If
Next I
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Bitte sehr, eine komplett pfannenfertige Komplettlösung die du ohne mitdenken einfach kopieren und einfügen kannst :-)
Was ist das eigentlich in Modul3 und Modul4? Ich nehme an, dass sind einfach Makrorekorder Codes die du noch nicht gelöscht hast? Räum mal dein VBA auf, mit der Übersicht kommt auch bald die Einsicht ^^
In Modul2 hast du ein Sub "ablegen", in dem ist einiges im argen :-) Möchtest du dass ich da mal drüber schaue, oder sagst du dir "es funktioniert, Rest egal"?
Grüße,
Klaus M.vdT.

Anzeige
OT: Das Makro "ablegen"
12.06.2013 08:32:55
Klaus
Hallo Frank,
ich habe mir mal dein Makro "ablegen" vorgenommen. Folgende Variante sollte ganz ohne Bildschirmflackern und rasend schnell das gleiche erledigen:
Sub ablegen()
' ablegen Makro
Dim wkbOld As Workbook
Dim wkbNew As Workbook
Dim wksSheet As Worksheet
'Bildschirmflackern verhindern
Application.ScreenUpdating = False
Set wkbOld = ActiveWorkbook
Set wksSheet = ActiveSheet
wksSheet.Rows("5:6").Copy
Workbooks.Open Filename:="U:\Technik\Produktion\Zeiten.xlsm"
'Workbooks.Open Filename:="C:\TestTMP\85761.xlsm"
Set wkbNew = ActiveWorkbook
With wkbNew
'zwei Zeilen einfügen inkl. der kopierten Inhalte
.Sheets("Tabelle1").Rows("12:13").Insert Shift:=xlDown
'aus eventuellen Formeln machen wir feste Werte
.Sheets("Tabelle1").Rows("12:13").Value = .Sheets("Tabelle1").Rows("12:13").Value
'speichern und schließen
.Save
.Close
End With
wkbOld.Activate
'diese beiden Zeile ist eigentlich unnötig, da
'das alte Workbook/Sheet jetzt eh im Vordergrund sind. Dient nur der Sicherheit!
With wksSheet
With .Range("N28")
.Value = "Zeiten abgelegt:"
.HorizontalAlignment = xlRight
End With
.Range("O28").Value = Now
'Zeit direkt als Wert im VBA abgelegt, das erspart später das Einfügen-Als-Wert
With .Range("N28:O28").Font
.Color = -16776961
.TintAndShade = 0
End With
.Range("O28:P28").HorizontalAlignment = xlCenterAcrossSelection
'besser als "merge cells!"
End With
'Bildschirmflackern einschalten
Application.ScreenUpdating = True
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: OT: Das Makro "ablegen"
12.06.2013 13:21:21
Hübner
Hallo Klaus,
Besten Dank.
Es ist für mich als Laie erstaunlich, was alles doch viel einfacher zu realisieren ist.
Ich bin heute auf Dienstreise, werde mich morgen mit den Makros befassen.
Das Ablegen geht ja wirklich rasend schnell, besten Dank, melde mich bestimmt noch einmal.
Einen schönen Tag noch
Gruß Frank

AW: OT: Das Makro "ablegen"
12.06.2013 14:18:48
Klaus
Hallo Frank,
das ist nichmal Raketenwissenschaft. Rekordercode ist zwar funktional, enthält aber immer viel zu viel Information, die man einfach wegkürzen kann.
Schau dir mal den Rekordercode zum "Zellen formatieren" an, und dann meine Verkürzung. Der Rekorder gibt jedes mal alles an (Wrap Text? Nein. Shrink-to-fit? Nein!) was an der Zelle vorkommt, auch wenn du "nur" die Farbe ändern willst. Hier einfach mutig sein und alles löschen was dir unwichtig vorkommt! Wenns danach nicht mehr funktioniert, einfach wieder den Rekorder Code hinkopieren.
Der nächste Schritt ist dann, auf die wirklichen Bremsen "Select" und "Activate" zu verzichten. Da hole ich nicht weit aus, sondern verlinke auf den hervorragenden Tutorial von Peter Haserodt zu diesem Thema: http://www.online-excel.de/excel/singsel_vba.php?f=78
Das Makro zum Tabellen-Verschieben schau dir morgen in Ruhe an, ich bin die ganze Woche hier falls du Rückfragen hast ;-)
Grüße,
Klaus M.vdT.

Anzeige
AW: OT: Das Makro "ablegen"
13.06.2013 16:34:50
Hübner
Hallo Klaus,
das Makro "ablegen" ist der Hammer.
Vielen Dank, da muss ich mich einmal etwas genauer damit befassen.
Bis jetzt war ich mit dem Rekordercode zufrieden, habe auch nicht so viel damit gemacht.
Doch wenn man das jetzt so sieht, klasse.
Ich denke, ich komme jetzt, Dank Deiner Hilfe, schon klar.
Also Danke und ein schönes Wochenende.
Gruß Frank

Danke für die Rückmeldung! owT.
13.06.2013 19:40:33
Klaus
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige