Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
368to372
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
368to372
368to372
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Einlesen des Dateinamens in Makro

Einlesen des Dateinamens in Makro
27.01.2004 13:59:44
Clemens
Hallo,
ich habe hier folgendes Problem.
Der nachfolgende Code funktioniert einwandfrei bis auf den
Rücksprung von der geöffneten Datei "Bezeichnungen.xls"
zur vorherigen Datei "Jan_bis_Okt_2003 Version 2004.xls".
d.h.
ich öffne zuerst die Datei "Jan_bis_Okt_2003 Version 2004.xls"
und starte darin das in der "Persönlich.xls" hinterlegte Makro.

Das Makro formatiert daraufhin meine geöffnete Datei "Jan_bis_Okt_2003 Version 2004.xls" und soll dann noch die Datei "Bezeichnungen.xls" öffnen,
wieder zurück in die Datei "Jan_bis_Okt_2003 Version 2004.xls" springen
und dort meine Formel eintragen sowie die Datei fertigformatieren.
(Die Datei "Bezeichnungen.xls" will ich vorher öffnen, damit die Berechnung
nicht so lange dauert.)
Hier ein Auszug aus dem Code:

'Bezeichnung öffnen
Workbooks.Open Filename:= _
"O:\GRUPPEN\Abt-1-2\SONSTIGE\Plus\Bezeichnungen.xls"
Sheets("Hauptabteilungen").Select
Windows("Jan_bis_Okt_2003 Version 2004.xls"). _
Activate
Range("B20").Select

Wie könnte man hier die vorherige Datei als Variable zuweisen ??
Windows("Jan_bis_Okt_2003 Version 2004.xls"). _
Activate

Dies funktioniert auch soweit
jedoch muß ich noch den Dateiname "Jan_bis_Okt_2003 Version 2004.xls"
im Code hinterlegt lassen.
Es gibt mehrere Dateien die den gleichen Aufbau haben wie die "Jan_bis_Okt_2003 Version 2004.xls" und somit würde ich gerne dass der Dateiname eingelesen wird
und über den vorab eingelesenen Dateiname weiß wohin er zurückspringen soll.


Sub Makro_PLUS()
' Makro_PLUS Makro
' Tastenkombination: Strg+e
'Hinweise auf Tabellenblatt nach rechts verschieben
Range("F4:K6").Select
Selection.Cut Destination:=Range("Y4:AD6")
Range("Y4:AD6").Select
ActiveWindow.SmallScroll ToRight:=-12
Range("A4:D6").Select
Selection.Cut Destination:=Range("T4:W6")
Range("T4:W6").Select
ActiveWindow.SmallScroll ToRight:=-14
'Spalten ausblenden
Columns("E:H").Select
Selection.EntireColumn.Hidden = True
Columns("M:P").Select
Selection.EntireColumn.Hidden = True
'Bei Spalte B eine neue Spalte einfügen.Hier kommt später der  Text rein
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
'Druckbereich einrichten
Range("A1:Y806").Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$Y$806"
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = "Seite:  &P;  &D"
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.78740157480315)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.511811023622047)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 70
.PrintErrors = xlPrintErrorsDisplayed
End With
'ActiveWindow.SelectedSheets.PrintPreview
Columns("M:M").ColumnWidth = 11.29
Range("A1").Select
ActiveWindow.View = xlNormalView
'Wiederholzeilen einrichten
With ActiveSheet.PageSetup
.PrintTitleRows = "$17:$19"
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = "$A$1:$Y$806"
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = "Seite:  &P;  &D"
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.78740157480315)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.511811023622047)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 70
.PrintErrors = xlPrintErrorsDisplayed
End With
ActiveWindow.View = xlNormalView
'Bezeichnung öffnen
Workbooks.Open Filename:= _
"O:\GRUPPEN\Abt-1-2\SONSTIGE\Plus\Bezeichnungen.xls"
Sheets("Hauptabteilungen").Select
Windows("Jan_bis_Okt_2003 Version 2004.xls"). _
Activate
Range("B20").Select
'Einfügen der Berechnungsformel und ausfüllen der Berechnungsspalte
'Spaltenbezeichnung und Spaltenbreite festlegen
'Druckansicht heruntersetzen
Range("B20").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-1],'O:\GRUPPEN\Abt-1-2\SONSTIGE\Plus\Bezeichnungen.xls'!Katalog_04,3,FALSE)),"""",VLOOKUP(RC[-1],'O:\GRUPPEN\Abt-1-2\SONSTIGE\Plus\Bezeichnungen.xls'!Katalog_04,3,FALSE))"
Range("B20").Select
Selection.Copy
Range("B20:B803").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("B18").Select
ActiveCell.FormulaR1C1 = "Bezeichnung"
With ActiveCell.Characters(Start:=1, Length:=11).Font
.Name = "Times New Roman"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Range("C18").Select
Selection.Copy
Range("B18").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Columns("B:B").Select
Range("B2").Activate
'Selection.ColumnWidth = 25
Selection.ColumnWidth = 50
Range("B18").Select
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = "Seite:  &P;  &D"
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.78740157480315)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.511811023622047)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 60
.PrintErrors = xlPrintErrorsDisplayed
End With
'ActiveWindow.SelectedSheets.PrintPreview
ActiveWindow.View = xlNormalView
Range("A2").Select
'Bezeichnungen schließen
Windows("Bezeichnungen.xls").Activate
ActiveWorkbook.Close
Range("A1").Select
'Hinweise auf Tabellenblatt wieder nach links verschieben
Range("U4:X6").Select
Selection.Cut Destination:=Range("A4:D6")
Range("Z4:AE6").Select
Selection.Cut Destination:=Range("R4:W6")
Range("A1").Select
End Sub

Hat jemand eine Idee ?
Vielen Dank für das Interesse.

Clemens

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

Betreff
Datum
Anwender
Anzeige
AW: Einlesen des Dateinamens in Makro
27.01.2004 14:03:41
Dirk
Hallo.
variable = ActiveWorkbook.Name & ".xls"
Damit wird in Variable der Namen des aktiven Workbook + der Dateiendung gespeichert.
Cheers
AW: Einlesen des Dateinamens in Makro
27.01.2004 15:02:01
Clemens
Hallo Dirk,
danke für Deine rasche Info.

Das Makro läuft und springt zur Datei "Bezeichnungen.xls".
Da bleibt es jedoch hängen und bringt die Fehlermeldung:
"Index außerhalb der gültigen Bereiches
Laufzeitfehler 9"
Nachfolgend habe ich mal meine Änderungen dargestellt.
Kann es nicht sein, dass er ja jetzt in diese Variable die
neue aktive Datei "Bezeichnungen.xls" einliest ?

Dim Var1 As String
Var1 = ActiveWorkbook.Name & ".xls"

'DRG-Bezeichnung öffnen

Sub DRG_Bezeichnung_öffnen()
Workbooks.Open Filename:= _
"O:\GRUPPEN\Abt-1-2\SONSTIGE\E1Plus\E1Plus_DRG_Bezeichnungen.xls"
Sheets("Hauptabteilungen").Select
Windows(Var1). _
Activate
Range("B20").Select
End Sub


Habe ich da noch einen Fehler drin ???
Danke
Clemens
Anzeige
AW: Einlesen des Dateinamens in Makro
27.01.2004 15:08:11
Dirk
Hm, irgendwie komm ich heute wohl nicht klar.
Warum nicht "workbooks(var1).activate" ?
AW: Einlesen des Dateinamens in Makro
27.01.2004 15:09:27
Knut
In activeworkbook.name ist das xls doch schon enthalten.
Wenn du da nochmal xls ranhängst, kann das nichts werden.
Knut
AW: Einlesen des Dateinamens in Makro
27.01.2004 15:34:39
Dirk
Sorry.
Bei mir ist ".xls" nicht enthalten. Office 2000. Vielleicht liegts daran?
Cheers
AW: Einlesen des Dateinamens in Makro
27.01.2004 15:36:40
Knut
Dann ist es noch nie gespeichert worden!
Dann ist der Fehler auch logisch, oder?
Knut
AW: Einlesen des Dateinamens in Makro
27.01.2004 15:39:42
Dirk
Hass. Natürlich. Ich mach Feierabend.
AW: Einlesen des Dateinamens in Makro
27.01.2004 15:54:12
Clemens
Hallo Dirk und Knut,
danke für die Hilfe.
Die Variable verliert vermutlich beim wechseln in die
Datei "Bezeichnungen.xls" den Wert.
Nach dem Wechsel zur Datei "Bezeichnungen.xls" bleibt das Makro stehen.
Am Anfang des Codes hat die Variable noch den Wert der richtigen Datei gespeichert.
Da ja dann der Wechsel zur Datei "Bezeichnungen.xls" durchgeführt wird
verliert die Variable anscheinend den Wert.
Die Variable ist dann leer.
Kann man den Wert nicht "Fix" irgendwie speichern ?
Ich denke, dass da das Hauptproblem liegt.

Vielen Dank .

Clemens
Anzeige
AW: Einlesen des Dateinamens in Makro
28.01.2004 10:35:00
Problem behoben
Hallo,
die Var1 mußte ich als globale Variable dimensionieren.
Public Var1 As String
Sub Makro()

'Dateiname der aktuellen Datei wird an die Variable übergeben.
Var1 = ActiveWorkbook.Name
'Aktivieren der zuvor übergebenen Datei
Windows(Var1).Activate

Danke für die Hilfe.

Clemens

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige