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

VBA - Dateien von allen Namen in A:A anlegen

VBA - Dateien von allen Namen in A:A anlegen
06.09.2015 17:03:10
allen
Hallo,
Eine Frage hätte ich zum folgenden Code:
Der Code soll für jeden Namen in Spalte A (die Namen können auch mehrfach vorkommen) diese Datei separat speichern und zwar im gleichen Ordner. Funktioniert auch tadellos.
Frage: Gibt es eine Möglichkeit, dass ich die Hilfsspalte nicht benötige?
Option Explicit
Sub Speichern()
Dim Start As Long
Dim LzB1 As Long
Dim LzB2 As Long
Dim StrName As String
Dim i As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
.Cursor = xlWait
End With
Start = 6
LzB1 = Application.Max(6, Cells(Rows.Count, 1).End(xlUp).Row)
Columns(10).ClearContents
Range(Cells(Start, 1), Cells(LzB1, 1)).Copy
Cells(Start, 10).PasteSpecial xlPasteValues 'Spalte 10
Range(Cells(Start, 10), Cells(LzB1, 10)).RemoveDuplicates Columns:=1, Header:=xlNo ' Spalte  _
10
LzB2 = Application.Max(6, Cells(Rows.Count, 10).End(xlUp).Row) 'Spalte 10
For i = 1 To LzB2 - 5
StrName = ThisWorkbook.Path & "\" & Cells(Start - 1 + i, 10)
ActiveWorkbook.SaveAs StrName
Next i
With Application
.StatusBar = False
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
.Cursor = xlDefault
End With
Application.DisplayAlerts = False
ThisWorkbook.Close savechanges:=False
Application.DisplayAlerts = True
End Sub

Besten Dank für Eure Hilfe
Servus Walter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Warum?
06.09.2015 17:29:32
RPP63
Hallo Walter!
Sicherlich kann man dies mittels ScriptingDictionary lösen.
Aber die Version mit "Duplikate entfernen" ist wahrlich schnell genug (zumal die "Bremse" ja das Speichern der Dateien ist).
Allerdings würde ich mit Spalte 12.345 arbeiten (nicht ganz ernst gemeint) und sie vor Ende des Makros wieder löschen (dies war jetzt Ernst).
Gruß Ralf

AW: Warum?
06.09.2015 17:34:26
WalterK
Hallo Ralf,
Löschen "vor Ende des Makros" habe ich schon versucht.
Konnte allerdings nicht nicht richtige Position für das Löschen finden.
Wo müsste die Zeile denn stehen?
Danke und Servus, Walter

Anzeige
Grob hier:
06.09.2015 17:49:39
RPP63
Hi!

Columns(10).Delete
With Application
.StatusBar = False
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
.Cursor = xlDefault
End With

Aber ich habe noch ein paar Anmerkungen:
Die ganzen Events, die Du abschaltest, sind überflüssig (bis auf ScreenUpdating).
Denn die Bremse ist, wie schon geschrieben, das Speichern, welches Du auch nicht beschleunigen kannst.
Ganz wichtig!
Wenn Du diese kritischen Events abschaltest, musst Du unbedingt dafür sorgen, dass sie auch bei einem versehentlichen Abfliegen des Makros in Zuge einer Fehlerbehandlung wieder eingeschaltet werden!
(On Error Goto ErrHdl)
Gruß Ralf

Anzeige
AW: Grob hier:
06.09.2015 18:18:31
WalterK
Hallo Ralf,
Columns(10).Delete hat an Deiner angezeigten Position leider nichts gebracht.
Vermutlich müsste es innerhalb der Schleife passieren, ich weiß allerdings nicht wie?
Servus, Walter

Referenzierung
06.09.2015 18:38:49
RPP63
Ja, Du hast Recht.
Columns(10) bezieht sich auf das ActiveSheet des ActiveWorkbook, welches zu diesem Zeitpunkt eine SaveAs-Kopie ist.
Referenziere korrekt: ThisWorkbook.Worksheets("DeineTabelle").Columns(10).Delete.
Die Stelle im Makro bleibt gleich.
Gruß Ralf

AW: Referenzierung
06.09.2015 18:45:47
WalterK
Hallo Ralf,
das hat leider auch nichts gebracht, in allen Dateien bleibt die Spalte 10 belegt.
Ich werde jetzt einen anderen Lösungsweg versuchen.
Besten Dank jedenfalls, Servus, Walter
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige