Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
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 Code verkürzen

VBA Code verkürzen
09.12.2016 13:53:08
Silke
Guten Tag,
kann man diesen Code verkürzen und die geöffnete Dateien gleich schliessen lassen?
Ausgeführt wird der Code über eine Schaltfläche:
Sub Test()
Sheets("Tabelle1").Select
Sheets("Tabelle1").Name = "WH25"
Range("B36").Select
Workbooks.OpenText Filename:="L:\Büro\Allgemein\Datei Txt\freie Lagerplätze WH25.txt",  _
Origin:=xlWindows, _
StartRow:=9, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(10 _
, 1)), TrailingMinusNumbers:=True
Columns("A:B").Select
Selection.Copy
Windows("Anzahl Neu.xlsb").Activate
Range("A1").Select
ActiveSheet.Paste
Range("D11").Select
Sheets("Tabelle2").Select
Sheets("Tabelle2").Name = "GD65"
Range("C34").Select
Workbooks.OpenText Filename:="L:\Büro\Allgemein\Datei Txt\freie Lagerplätze GD65.txt",  _
Origin:=xlWindows, _
StartRow:=7, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=True, OtherChar:=";", FieldInfo:=Array(Array(1, 1 _
), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), TrailingMinusNumbers:=True
Columns("A:C").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Anzahl Neu.xlsb").Activate
Range("A1").Select
ActiveSheet.Paste
Range("G12").Select
Columns("B:B").EntireColumn.AutoFit
Columns("C:C").EntireColumn.AutoFit
Sheets("Tabelle3").Select
Sheets("Tabelle3").Name = "RB umwandeln"
Range("C30").Select
ChDir "L:\Büro\Allgemein\WE"
Workbooks.Open Filename:= _
"G:\Transfer\Allgemein\WE\Makro frei Lagerplätze.xlsb"
Sheets("RB umwandeln").Select
Columns("A:B").Select
Range("A166").Activate
Application.CutCopyMode = False
Selection.Copy
Windows("Anzahl Neu.xlsb").Activate
Range("A1").Select
ActiveSheet.Paste
Range("D13").Select
Sheets("Tabelle4").Select
Sheets("Tabelle4").Name = "belegte Lagerplätze"
Range("D39").Select
Application.CutCopyMode = False
Workbooks.Open Filename:= _
"L:\Büro\Allgemein\WE\Makro frei Lagerplätze.xlsb"
ActiveWindow.SmallScroll Down:=-15
Sheets("belegte Lagerplätze").Select
ActiveWindow.SmallScroll Down:=-144
Columns("A:B").Select
Selection.Copy
Windows("Anzahl Neu.xlsb").Activate
Range("A1").Select
ActiveSheet.Paste
Rows("1:1").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D11").Select
Sheets("GD65").Select
Sheets("Tabelle5").Select
Sheets("Tabelle5").Name = "Maße Rollregal"
Workbooks.Open Filename:= _
"L:\Büro\Allgemein\WE\Makro frei Lagerplätze.xlsb"
Sheets("Maße Rollregal").Select
Columns("A:C").Select
Selection.Copy
Windows("Anzahl Neu.xlsb").Activate
Range("H41").Select
Sheets("Maße Rollregal").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Tabelle6").Select
Sheets.Add
Sheets("Tabelle1").Select
Sheets("Tabelle1").Name = "Auswertung"
Range("G37").Select
Sheets("Auswertung").Select
Range("D11").Select
End Sub
Habt ihr eine Idee?
Vielen lieben Dank

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code verkürzen
09.12.2016 18:43:12
silke
keiner eine Idee:-(
AW: VBA Code verkürzen
09.12.2016 18:48:20
Daniel
Hi
doch, lies dir das mal durch und wende es an:
http://www.online-excel.de/excel/singsel_vba.php?f=78
wenn du das Kopieren und Einfügen mit dem Recorder aufzeichnest, dann verwende das Kontextmenü "Inhalte einfügen" (ggf mit der Option "alles"), damit wird eine Methode zum Einfügen aufgezeichnet, die sich besser kürzen lässt, als das normale einfügen.
Gruß Daniel
AW: VBA Code verkürzen
09.12.2016 19:25:45
Silke
Hallo Daniel,
danke aber ich mach sowas net sehr oft :-(
Aber wie schließe ich die Dateien ?
Danke
AW: VBA Code verkürzen
09.12.2016 19:40:29
Daniel
Hi
ja und?
dafür gibt es ja diese Anleitungen im Internet, wo man nachlesen kann wie man es machen muss.
Wenn es da schon steht, ist es ja nicht notwendig, dass es jemand anderes nochmal hin schreibt.
im Prinzip ist es nichst anderes, als das du das Selektieren und aktivieren weglässt und stattdessen die Zellbezüge immer vollständig angbist, mit Workbook(...).Worksheet(...).Range(...)
dh aus
Columns("A:B").Select
Selection.Copy
Windows("Anzahl Neu.xlsb").Activate
Range("A1").Select
ActiveSheet.Paste

macht man
Columns("A:B").Copy
Workbooks("Anzahl Neu.xlsb").Sheets("Tabelle1").Range("A1").PasteSpecial xlpasteall
Wenn man den Code dann so verkürzt hat, fallem einem dann auch oft schnell weitere Verbesserungsmöglichkeiten auf, weil der Code so übersichtlicher ist.
um Dateien zu schließen, gibt es den Close-befehl:
Workbooks("Dateiname.xlsx").Close
wenn du an der Datei was verändert hast, aber diese Änderung nicht speichern willst und auch nicht gefragt werden willsst, verwende
Workbooks("Dateiname.xlsx").Close False
Gruß Daniel
Anzeige
AW: VBA Code verkürzen
10.12.2016 06:55:49
Silke
Hallo
ich optimiere gerade meinen Code.
wenn ich den Code :
Workbooks.Open Filename:= _
"L:\Büro\Allgemein\WE\Makro frei Lagerplätze.xlsb"
Sheets("belegte Lagerplätze").Columns("A:C").Copy
Workbooks("Anzahl.xlsb").Sheets("belegte Lagerplätze").Range("A1").PasteSpecial xlPasteAll
Workbooks("Makro frei Lagerplätze.xlsb").Close False
kommt folgende Fehlermeldung:
Es befindet sich eine große Menge von Informationen in der Zwischenablage, Wollen sie diese Informatioenn später in andere Programme einfügen ?
Ja Nein Abbrechen

Wie kann ich das ignorieren?
Danke
Anzeige
AW: VBA Code verkürzen
12.12.2016 12:23:58
Daniel
Hi
das ist keine Fehlermeldung, sondern die normale Hinweismeldung die auch beim normalen Arbeiten mit Excel bekommst, wenn ich sich noch größerer Daten im Zwischenspeicher befinden.
Man den Zwischenspeicher per Befehl leeren, um die diese Meldung zu verhindern:
...
Workbooks("Anzahl.xlsb").Sheets("belegte Lagerplätze").Range("A1").PasteSpecial xlPasteAll
application.cutCopyMode = False
Workbooks("Makro frei Lagerplätze.xlsb").Close False
Gruß Daniel
AW: Kopieren
10.12.2016 09:39:55
Gerd
Hallo Silke,
in der Kürze liegt nicht immer ...
Statt Copy + .PasteSpecial xlPasteAll langt .Copy Destination
Sub Deklariert()
Dim wbQuelle As Workbook, wbZiel As Workbook
Dim wsQuelle As Worksheet, wsZiel As Worksheet
Dim rngQuelle As Range, rngZiel As Range
Set wbQuelle = Workbooks.Open(Filename:= _
"L:\Büro\Allgemein\WE\Makro frei Lagerplätze.xlsb")
Set wsQuelle = wbQuelle.Worksheets("belegte Lagerplätze")
Set rngQuelle = wsQuelle.Range("A:C")
Set wbZiel = Workbooks("Anzahl.xlsb")
Set wsZiel = wbZiel.Worksheets("belegte Lagerplätze")
Set rngZiel = wsQuelle.Range("A1")
rngQuelle.Copy Destination:=rngZiel
Application.CutCopyMode = False
wbQuelle.Close False
Set rngQuelle = Nothing: Set rngZiel = Nothing
Set wsQuelle = Nothing: Set wsZiel = Nothing
Set wbQuelle = Nothing: Set wbZiel = Nothing
End Sub

Gruß Gerd
Anzeige
AW: Kopieren-korrigiert!
10.12.2016 09:44:46
Gerd

Sub Deklariert()
Dim wbQuelle As Workbook, wbZiel As Workbook
Dim wsQuelle As Worksheet, wsZiel As Worksheet
Dim rngQuelle As Range, rngZiel As Range
Set wbQuelle = Workbooks.Open(Filename:= _
"L:\Büro\Allgemein\WE\Makro frei Lagerplätze.xlsb")
Set wsQuelle = wbQuelle.Worksheets("belegte Lagerplätze")
Set rngQuelle = wsQuelle.Range("A:C")
Set wbZiel = Workbooks("Anzahl.xlsb")
Set wsZiel = wbZiel.Worksheets("belegte Lagerplätze")
Set rngZiel = wsZiel.Range("A1")
rngQuelle.Copy Destination:=rngZiel
Application.CutCopyMode = False
wbQuelle.Close False
Set rngQuelle = Nothing: Set rngZiel = Nothing
Set wsQuelle = Nothing: Set wsZiel = Nothing
Set wbQuelle = Nothing: Set wbZiel = Nothing
End Sub

Anzeige
AW: Kopieren-korrigiert!
10.12.2016 19:18:48
silke
aber wie bekomme ich die andern Daten drauf wie die
GD 65 usw.?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige