Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
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-Problem mit Dateibezeichnung

VBA-Problem mit Dateibezeichnung
01.08.2013 09:10:37
Toumas
Hallo zusammen,
da ich VBA erst lerne habe ich bei untenstehenden Makro ein kleines Problem, oder eher einen Denkfehler.
Das Makro soll mir aus einer bereits geöffneten Datei Werte in eine andere Datei kopieren. So weit habe ich es auch damit schon gebracht :
Sub Daten_öffnen_kopieren()
'MsgBox " ! Das öffnen und kopieren der Daten kann etwas Zeit beanspruchen, bitte Geduld haben ! _
Windows("AAAAA_BBBBB.TTMMJJ.UUUU.xls").Activate
With Sheets("Scanakten")
.Range(Cells(3, 1), Cells(Cells(Rows.Count, 6).End(xlUp).Row, 6)).SpecialCells( _
xlCellTypeVisible).Copy Workbooks("MPL - Test - Leer.xlsm").Sheets("XXX XXX XXXX").Range("A2")
End With
Application.DisplayAlerts = False
Workbooks("AAAAA_BBBBB.TTMMJJ.UUUU.xls").Close True
Application.DisplayAlerts = True
End Sub

Wie gesagt, das funktioniert auch einwandfrei, auch wenn es euch Profis vermutlich die Zehennägel hochbiegt. ;-)
Jetzt habe ich folgendes Problem
Die Dateien, die jeden Tag geöffnet werden, haben folgendes Format :
AAAAA_BBBBB.TTMMJJ.UUUU.xls
Die Buchstaben (ausser A und B) stehen für sich ändernde Werte.
Nun dachte ich mir, dass ich die Zeile :
Windows("AAAAA_BBBBB.TTMMJJ.UUUU.xls").Activate
"einfach" durch
Windows("AAAAA_BBBBB.*.*.xls").Activate
ersetze..... aber das war leider nichts.
Hat mir jemand freundlicherweise einen Tipp ?
Danke schon mal im Voraus.
Viele Grüße
Toumas

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Problem mit Dateibezeichnung
01.08.2013 09:18:08
thomas
hey toumas
was willst du mit den Sternchen erreichen?
gruß thomas

AW: VBA-Problem mit Dateibezeichnung
01.08.2013 09:23:27
Toumas
Hallo Thomas
ich dachte (vermutlich falsch) als Platzhalter für die sich veränderten Werte
Beispiel :
Datei heißt heute : AAAAA_BBBBB.010813.0815.xls
Morgen : AAAAA_BBBBB.020813.1345.xls
usw.
Der Tei A/B bleibt immer gleich...

AW: VBA-Problem mit Dateibezeichnung
01.08.2013 09:28:37
thomas
hey toumas
sry stehe gerade auf dem Schlauch
willst du da tatsächlich ein * reinmachen?
du musst ihm ja schon sagen welche Datei du aufmachen willst im dem du zum Beispiel das heutige Datum einträgst oder ...
gruß Thomas

Anzeige
AW: VBA-Problem mit Dateibezeichnung
01.08.2013 09:40:40
Toumas
Hallo Thomas,
Ich brauche sozusagen eine Platzhalter, so wie im Normalen System auch wenn du etwas suchst, kannst du doch die unbekannten Zeichen durch ein * oder ? ersetzen.
Wie erwähnt hat die Datei die, von Hand, geöffnet wird, jeden Tag einen anderen Namensteil und somit kann ich nicht jeden Morgen in das Makro einsteigen, den Namen ändern und dann das Ding starten.
Ich habe gehofft, dass es eine Lösung gibt, dass ich somit jeden Namensteil, der sich verändert "abfange"

AW: VBA-Problem mit Dateibezeichnung
01.08.2013 09:53:48
thomas
hey
wie meinst du denn das mit abfangen
willst du es dann von Hand eingeben?
oder automatisch über eine formel?
wen du es von Hand eingibst ist es ja kein Problem
ich check nur nicht ganz durch
gruß thomas

Anzeige
AW: VBA-Problem mit Dateibezeichnung
01.08.2013 10:12:21
Toumas
Ok ich versuch es mal anders herum:
Ich habe zwei Dateien
Datei 1 (in der nachher das Makro steht) ist ein Datensammler
Datei 2 ist eine tägliche aufkommende Datei bei uns, die die entsprechenden Daten beinhaltet.
Die Kollegen öffnen von Hand immer beide Dateien
Bisher haben Sie die Werte aus Datei 2 markiert, kopiert und in Datei 1 eingefügt (von Hand)
jetzt kam man auf die Idee, dass man dies doch auch per Makro machen könnte.
Wie mein Makro am Anfang aufgeführt ist funktioniert es auch wundervoll, wenn ich den Dateinamen der Datei 2 vor dem Kopieren bei dem Wechsel angebe :
Windows("AAAAA_BBBBB.TTMMJJ.UUUU.xls").Activate
Ein typischer Name der Datei 2 wäre : Daten_Eingang.130731.2013.xls
wenn die Datei am 31.07.2013 um 20.13 Uhr entstanden ist.
Das Problem ist nun, dass sich ein Teil des Dateinamens immer ändert
Typischer Dateiname heute wäre : Daten_Eingang.130801.0958.xls
wenn die Datei heute um 09.58 Uhr entstanden ist.
Nun dachte ich, dass ich das Aktivieren der Datei, nicht mehr speziell auf den vollen Dateinamen auslegen kann, sondern, dass ich für die sich wechselnden Werte einen Platzhalter (im Makro) eingeben kann.
Das Workbook von gestern öffne ich mit
Windows("Daten_Eingang.130731.2013.xls").Activate
Das Workbook von heute würde ich dann logischerweise mit
Windows("Daten_Eingang.130801.0958.xls").Activate öffnen
Wie vorhin gesagt, kann ich aber nicht jeden Morgen in das Makro einsteigen, den Namen bei
Windows("xxxxxxxxxxxx.xls").Activate ändern und dann warten bis die Kollegen das Makro laufen lassen.
Ich brächte also einen Tipp mit dem ich jedes x-beliebige Workbook aktivieren kann, welches den Anfang "Daten_Eingang......." hat.

Anzeige
AW: VBA-Problem mit Dateibezeichnung
01.08.2013 10:17:16
thomas
hey
du könntest doch die detei immer auswählen bzw auswählen lassen über
Application.GetOpenFilename("Excel mit Makros (*.xlsm), *.xlsm")
dann öffnet sich ein fenster und du kannst die Datei auswählen
irgendwie musst du ihm ja sagen welche Datei er nehmen soll oder gibt es nur eine zur Auswahl?
gruß thomas

AW: VBA-Problem mit Dateibezeichnung
01.08.2013 10:27:15
Toumas
Hallo Thomas,
wie gesagt, es sind immer 2 Dateien gleichzeit offen, also der Datensammler nennen wir mal Datei1.xlsm
und die Datei mit den Daten Datei2.xls
Wie müsste ich deinen Code in meinen Einbauen (sorry, bin VBA-Neuling)

Anzeige
AW: VBA-Problem mit Dateibezeichnung
01.08.2013 10:37:10
thomas
hey toumas
also wenn die beiden Dateien geöffnet sind kannst du dir die geöffneten Dateien so anzeigen _ lassen

Public Sub test()
Dim objWorkbook As Workbook
For Each objWorkbook In Application.Workbooks
MsgBox objWorkbook.name
Next
End Sub
das könnte man so einbauen das man auswählen kann welche Datei zu was benutzt wird
allerdings arbeite ich gerade hab also keine zeit was zu bauen.
Vielleicht jemand anderes?
man kann sicher auch was automatisches bauen allerdings schätze ich mit wählen geht einfacher keine Ahnung
gruß thomas

Anzeige
Hat vielleicht noch jemand einen Lösungsansatz ?
01.08.2013 11:10:21
Toumas
Hallo zusammen,
Thomas hat mir schon versucht zu helfen, wofür ich auch sehr dankar bin.
Hat mir aber vielleicht noch jemand einen Lösungsansatz ?
Danke im Voraus
Viele Grüße
Toumas

AW: Hat vielleicht noch jemand einen Lösungsansatz ?
01.08.2013 12:29:20
Rudi
Hallo,
Sub Daten_öffnen_kopieren()
Dim wkb As Workbook
'MsgBox " ! Das öffnen und kopieren der Daten kann etwas Zeit beanspruchen, bitte Geduld  _
haben ! _
For Each wkb In Workbooks
If wkb.Name Like "AAAAA_BBBBB*" Then
With wkb
With .Sheets("Scanakten")
.Range(.Cells(3, 1), .Cells(Rows.Count, 6).End(xlUp)).SpecialCells(xlCellTypeVisible). _
Copy _
Workbooks("MPL - Test - Leer.xlsm").Sheets("XXX XXX XXXX").Range("A2")
End With
Application.DisplayAlerts = False
.Close True
Application.DisplayAlerts = True
End With
Exit Sub
End If
Next
End Sub

Gruß
Rudi

Anzeige
AW: Hat vielleicht noch jemand einen Lösungsansatz ?
01.08.2013 12:42:13
Toumas
Danke Rudi, suuuuper, genau so funktioniert es.

AW: Hat vielleicht noch jemand einen Lösungsansatz ?
01.08.2013 13:26:47
Toumas
Hallo Rudi,
ich weiß nicht was ich falsch mache, es lief zwei mal und jetzt bekomme ich
den Laufzeitfehler 1004
Anwendung- oder objektdefinierter Fehler
Dabei springt er mir immer auf die
.Range(.Cells(3, 1), .Cells(Rows.Count, 6).End(xlUp)).SpecialCells(xlCellTypeVisible). _
Copy _
Workbooks("MPL - Test - Leer.xlsm").Sheets("Scan Tag alle").Range("A2")
Zeile.....
Könntest du mir vielleicht nochmals helfen bitte ?
Gruß
Toumas

AW: Hat vielleicht noch jemand einen Lösungsansatz ?
01.08.2013 13:44:23
Toumas
Habe meine Lösung gefunden
sieht jetzt so aus..... fügt dann sogar meine Daten in die erste freie Zelle bei Spalte A ein.
Danke nochmals an alle
Sub A_Daten_öffnen_kopieren2()
Dim wkb As Workbook
'MsgBox " ! Das öffnen und kopieren der Daten kann etwas Zeit beanspruchen, bitte Geduld _
haben ! _
For Each wkb In Workbooks
If wkb.Name Like "scan_eingang*" Then
With wkb
With .Sheets("Scanakten")
Range(Cells(3, 1), Cells(Cells(Rows.Count, 6).End(xlUp).Row, 6)).SpecialCells( _
xlCellTypeVisible).Copy
Workbooks("MPL - Test - Leer.xlsm").Activate
Sheets("Scan Tag alle").Select
LZ = Tabelle1.Cells(Rows.Count, 2).End(xlUp).Row + 1
Tabelle1.Range("A" & LZ).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
End With
Application.DisplayAlerts = False
'.Close True
Application.DisplayAlerts = True
Exit Sub
End If
Next
End Sub

Anzeige
AW: Hat vielleicht noch jemand einen Lösungsansatz ?
01.08.2013 13:54:41
Toumas
Ok ich geb auf, ich weiß nicht warum, aber das geht nun auch nicht......

keine sichtbaren Zellen? owT
01.08.2013 14:10:45
Rudi

AW: keine sichtbaren Zellen? owT
01.08.2013 14:16:24
Toumas
Hallo Rudi,
doch, über 2000 sogar....
aber er sprang mir nie in die entsprechende Datei.
Habe nun eine Lösung gefunden, auch wenn die euch Excelprofis vermutlich schlecht werden lässt :
Sub A_Daten_öffnen_kopieren2()
Dim wkb As Workbook
'MsgBox " ! Das öffnen und kopieren der Daten kann etwas Zeit beanspruchen, bitte Geduld _
haben ! _
For Each wkb In Workbooks
If wkb.Name Like "scan_eingang*" Then
wkb.Activate
Sheets("Scanakten").Select
Range(Cells(3, 1), Cells(Cells(Rows.Count, 6).End(xlUp).Row, 6)).SpecialCells( _
xlCellTypeVisible).Copy
Workbooks("MPL - Test - Leer.xlsm").Activate
Sheets("Scan Tag alle").Select
LZ = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row + 1
Tabelle1.Range("A" & LZ).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.DisplayAlerts = False
'Close True
Application.DisplayAlerts = True
Exit Sub
End If
Next
End Sub

Mein Problem ist jedoch noch, wie kann ich das Workbook, welches ich mit wbk definiert habe, wieder schließen ?
Gruß
Toumas

Anzeige
AW: keine sichtbaren Zellen? owT
01.08.2013 16:11:00
Rudi
Hallo,
so sollte das funktionieren
Sub A_Daten_öffnen_kopieren2()
Dim wkb As Workbook, LZ As Long
For Each wkb In Workbooks
If LCase(wkb.Name) Like "scan_eingang*" Then
With wkb.Sheets("Scanakten")
.Range(.Cells(3, 1), .Cells(Rows.Count, 6).End(xlUp)).SpecialCells(xlCellTypeVisible). _
Copy
End With
With ThisWorkbook.Sheets("Scan Tag alle")
LZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(LZ, 1).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End With
wkb.Close False
Exit Sub
End If
Next
End Sub

Gruß
Rudi

Anzeige
AW: keine sichtbaren Zellen? owT
02.08.2013 07:51:26
Toumas
Hallo Rudi,
danke erstmals für deine Mühen.
Bei deinem Makro bekomme ich bei :
.Range(.Cells(3, 1), .Cells(Rows.Count, 6).End(xlUp)).SpecialCells(xlCellTypeVisible). _
Copy
Den Laufzeitfehler 1004 : Anwendungs- oder objektdefinierten Fehler.

AW: keine sichtbaren Zellen? owT
02.08.2013 09:09:28
Rudi
Hallo,
noch ein . vor Rows.
.Range(.Cells(3, 1), .Cells(.Rows.Count, 6).End(xlUp)).SpecialCells(xlCellTypeVisible).Copy
Gruß
Rudi

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige