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

ComboBox

ComboBox
16.04.2008 12:10:00
Stephan
Hallo zusammen,
ich habe mal wieder ein Problem und da ich mich mit VBA noch nicht so richtig auskenne, wende ich mich mal wieder an die Excelperten....:
Ich habe eine UserForm mit einer ComboBox (hier sind 6 Einträge hinterlegt) und einer Textbox. In der ComboBox wähle ich z. B. den Eintrag "3.5A" und in der TextBox kann ich über den Kalender (MonthView) ein Datum auswählen.
Über den CommandButton "Daten abrufen" möchte ich nun in Abhängigkeit des gewählten Datums die entsprechende Datei (hier: 2008_4_16_Artikellaufzeiten_L35_A.csv), die auf einem anderem Laufwerk liegt, öffnen.
Dort soll im Tabellenblatt "2008_4_16_Artikellaufzeiten_L35_A" der Bereich A2:AE30 kopiert und in einer anderen Datei ("Überprüfung MDE"), Tabellenblatt "PD´s" eingefügt werden.
Wie müsste der Code im CommandButton ausehen? Stehe zur Zeit da völlig auf dem Schlauch.
Vielen Dank schon mal für eure Unterstützung!
Grüße, Stephan

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox
16.04.2008 13:32:48
Beverly
Hi Setphan,
hast du den Code für das Öffnen, Kopieren und Einfügen mal mit dem Makrorekorder aufgezeichnet? Dann musst du nur noch den Dateinamen in Abhängigkeit vom Datum in der TextBox variabel zusammensetzen, so in dieser Form

Format(TextBox1, "yyyy_m_d") & "_Artikellaufzeiten_L35_A.csv"




AW: ComboBox
16.04.2008 16:19:03
Stephan
Hallo Beverly,
vielen Dank zunächst für deinen Tipp! So was ähnliches habe ich schon versucht. Doch über den normalen Weg (Datei öffnen....usw.) hat er mir nachher eine Fehlermeldung (Prozedur außerhalb des zulässigen Bereiches) ausgeworfen. Darauf hin habe ich den zu öffnenden Pfad als Hyperlink in einem Tabellenblatt hinterlegt....und siehe da, es funktionierte. Aber halt nur für den 16.4. Ich habe den Code kopiert und der nächsten Abfrage/Datum angepasst. Aber hier auf einmal wieder die o. g. Fehlermeldung. Ergebnis dieser Methode wären allerdings 365 Hyperlinks (und Makros), die jedes Jahr neu angepasst werden müssten.
Über die ComboBox soll eine Linie ausgewählt werden (3.5A, 3.6A, 3.2A, 3.2KA, 3.4A, 3.4KA) und in der Textbox ein Datum. Nach Klick auf den CommandButton soll nun in einem Ordner ("Tag"), der auf einem anderen Laufwerk liegt, nach der entsprechenden Datei (2008_4_16_Artikellaufzeiten_L35_A also hier z.B. für den 16.04.2008) gesucht werden. Gibt es diese Datei dort nicht, soll eine Fehlermeldung erscheinen und der User zur Eingabe eines anderen Datums aufgefordert werden. Ist sie vorhanden, soll sie geöffnet werden, der Bereich A2:AE30 kopiert werden und in ein anderes Tabellenblatt ("PD`s) eingefügt werden.
Also einfach gesagt: Datei in Abhängigkeit des Datums suchen, wenn nicht vorhanden, dann Fehlermeldung, sonst öffnen, A2:AE30 kopieren, Datei schließen, Zwischenablage in Tabellenblatt einfügen.
Ich hoffe, ich habe den Sachverhalt einigermaßen klar machen können. Vielen Dank im Voraus!
Grüße, Stephan

Anzeige
AW: ComboBox
17.04.2008 07:43:51
Beverly
Hi Stephan,

Private Sub CommandButton1_Click()
Dim Fso
Dim strDatei As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_m_d") & "_Artikellaufzeiten_L35_A.csv"
If Fso.fileexists("C:\Test\" & strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="C:\Test\" & strDatei
Range("A2:AE30").Copy ThisWorkbook.Worksheets("PDs").Range("A2")
ActiveWorkbook.Close
Application.ScreenUpdating = True
Else
MsgBox "Datei nicht vorhanden"
End If
End Sub




Anzeige
AW: ComboBox
17.04.2008 09:25:00
Stephan
Hallo Beverly,
ein großes Dankeschön zunächst für deine Antwort. Habe den Code folgendermaßen angepasst:

Private Sub CommandButton2_Click()
Dim Fso
Dim strDatei As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_m_d") & "_Artikellaufzeiten_L35_A.csv"
If Fso.fileexists("\\apfile01\Team\Prozessdaten\F3\L35\Abfuellung\Produktionsdaten\Tag" &  _
strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="\\apfile01\Team\Prozessdaten\F3\L35\ Abfuellung\ _
Produktionsdaten\Tag\" & strDatei
Range("A2:AE30").Copy ThisWorkbook.Worksheets("PDs").Range("A2")
ActiveWorkbook.Close
Application.ScreenUpdating = True
Else
MsgBox "Datei nicht vorhanden"
End If
End Sub


Ich bekomme, egal in welchem Format ich das Datum eingebe (manuell oder über den Kalendar), immer die MsgBox angezeigt, obwohl die gesuchte Datei (2008_4_16_Artikellaufzeiten_L35_A.csv) im Ordner "\\apfile01\Team\Prozessdaten\F3\L35\Abfuellung\Produktionsdaten\Tag" vorhanden ist.
Das Tabellenblatt, wo der kopierte Bereich eingefügt werden soll, befindet sich zur Zeit auf dem Desktop in der Datei "Überprüfung MDE" und hier im Tabellenblatt "PD`s".
Grüße, Stephan

Anzeige
AW: ComboBox
17.04.2008 10:19:00
Beverly
Hi Stephan,
vergleiche mal meine Codezeile

If Fso.fileexists("C:\Test\" & strDatei) Then


mit deiner


If Fso.fileexists("\\apfile01\Team\Prozessdaten\F3\L35\Abfuellung\Produktionsdaten\Tag" &  _
strDatei) Then




AW: ComboBox
17.04.2008 11:14:16
Stephan
Hallo Beverly,
Danke für Deine schnelle Antwort!!
Aber muss ich die Abfrage nicht mit meinem Such-Pfad anpassen?
Ich habe es natürlich auch mit C:\Test\ versucht, bekomme aber auch hier nur die MsgBox. Könnte es vielleicht am Datum liegen? Weil, das Datum was ich über den Kalender auswähle, sieht so aus: "16.04.2008" und die entsprechende Datei dazu heißt: "2008_4_16_Artikellaufzeiten_L35_A.csv".
(17.04.2008 = "2008_4_17_Artikellaufzeiten_L35_A.csv" usw.) Muss das Datum aus dem Kalender evtl. per Variablen gesplittet werden? So vielleicht: Für 16 =a, Für 04=b, Für 08=c und dann 20&c&"_"&b&"_"&a um das Ganze variabel zu gestalten?
Grüße, Stephan

Anzeige
AW: ComboBox
17.04.2008 11:45:00
Beverly
Hi Stephan,
in deiner Codezeile fehlt "\" als letztes Zeichen vom Pfad - deshalb habe ich es in meiner Codezeile fett formatiert.
Das Format wird schon richtig in 2008_4_17 übersetzt - das macht der Codeteil Format(TextBox1....


AW: ComboBox
17.04.2008 12:40:00
Stephan
Hi Beverly,
tschuldigung, habe ich übersehen. Sitze vielleicht schon zu lange an diesem Problem;-) Habe es erneut mit korrigiertem Code versucht, aber es folgt immer noch die MsgBox. Hier das Skript:

Private Sub CommandButton2_Click()
Dim Fso
Dim strDatei As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_m_dd") & "_Artikellaufzeiten_L35_A.csv"
If Fso.fileexists("\\apfile01\Team\Prozessdaten\F3\L35\Abfuellung\Produktionsdaten\Tag\" &  _
strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="\\apfile01\Team\Prozessdaten\Fertigung\F3\L35\Abfuellung\ _
Produktionsdaten\Tag\" & strDatei
Range("A2:AE30").Copy ThisWorkbook.Worksheets("PDs").Range("A2")
ActiveWorkbook.Close
Application.ScreenUpdating = True
Else
MsgBox "Datei nicht vorhanden"
End If
End Sub


Ich weiß sonst nicht, woran es liegen könnte....
Gruß, Stephan

Anzeige
AW: ComboBox
17.04.2008 13:58:49
Beverly
Hi Stephan,
ich kann deinen Fehler nicht nachvollziehen. Gehe den Code mal im Einzelschrittmodus durch und lass dir den Wert von "\\apfile01\Team\Prozessdaten\Fertigung\F3\L35\Abfuellung\ _
Produktionsdaten\Tag\" & strDatei mal anzeigen. Irgendwo dort muss der Fehler liegen. Vielleicht ist die Pfadbezeichnung nicht ganz richtig. Verschiebe die Datei doch mal in das Hauptverzeichnis \\apfile01 und führe den Code aus. Wenn das funktioniert, dann ins nächste Unterverzeichnis usw.


Anzeige
AW: ComboBox
17.04.2008 14:48:00
Stephan
Hi Beverly,
supi, er läuft durch, scheint auch die Datei zu finden, markiert mir die Zeile "Range("A2:AE30").Copy ThisWorkbook.Worksheets("PDs").Range("A2")" allerdings gelb, bricht dort ab und wirft den "Laufzeitfehler 9 Index außerhalb des gültigen Bereichs" aus.
Gebe ich ein Datum ein, was in der Zukunft liegt, wirft er mir auch richtigerweise die MsgBox aus (weil die entsprechende Datei natürlich noch nicht existiert)
Ich muss zu meiner Schande gestehen, dass ich einen falschen Pfad angegeben habe (T: und Team sind identisch, ist der Laufwerksname, da kann VB lange suchen;-). Sorry dafür!
Er öffnet im Hintergrund auch die entsprechende Datei (2008_4_16_Artikellaufzeiten_L35_A.csv), kopiert aber den Bereich A2:AE30 nicht und fügt ihn dementsprechend nicht in die Zieldatei ("C:\Dokumente und Einstellungen\KnippraS\Desktop\Überprüfung MDE\ in das Tabellenblatt "PD`s" ein.
Wie kan man dieses Problem lösen? Anbei mein aktueller Code. Fett markiert, die Stelle, wo er abbricht. Vielen, vielen Dank für deine bisherigen Bemühungen!!!!!

Private Sub CommandButton2_Click()
Dim Fso
Dim strDatei As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_M_dd") & "_Artikellaufzeiten_L35_A.csv"
If Fso.fileexists("T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\Tag\" &  _
strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\ _
Tag\" & strDatei
Range("A2:AE30").Copy ThisWorkbook.Worksheets("PDs").Range("A2")
ActiveWorkbook.Close
Application.ScreenUpdating = True
Else
MsgBox "Datei nicht vorhanden"
End If
End Sub


Anzeige
AW: ComboBox
17.04.2008 18:51:45
Beverly
Hi Stephan,
setz mal noch den Tabellennamen und das Workbook davor

ActiveWorkbook.Worksheets("Tabelle1").Range("A2:AE30").Copy ThisWorkbook.Worksheets("PDs").Range("A2")




AW: ComboBox
17.04.2008 19:13:00
Stephan
Hallo Beverly,
ich sitze leider nicht mehr an meinem Arbeitsplatz und probiere es morgen früh direkt aus. Melde mich dann umgehend. Danke für deine bisherigen Bemühungen!!!!!
Gruß, Stephan

AW: ComboBox
18.04.2008 08:34:00
Stephan
Guten morgen Beverly,
vielen Dank für deine Antwort. Ich habe es gerade ausprobiert und er macht folgendes:
Er kopiert mir die Daten wie gewünscht in das entsprechende Tabellenblatt. Es funktioniert also.
Der Haken an der Geschichte scheint aber wohl der Tabellenblattname zu sein. Wie du im Skript wahrscheinlich siehst, hat das Tabellenblatt fast den gleichen Namen wie die Datei, so das ich mit dieser Abfrage auch nur die Daten für diesen Tag bekomme. Wie kann man diese Abfrage nun variablel gestalten?
Indem man vielleicht eine neu definierte strDatei anstelle der Tabellenblatt-Bezeichnung als Worksheet angibt, man beachte, das beim Tabellenblattname das "A.csv" fehlt. Also z. B. strDatei1 = Format(TextBox1, "yyyy_M_d") & "_Artikellaufzeiten_L35" oder muss das Tabellenblatt gänzlich umbenannt werden?
Eine andere Sache noch: Er kopiert zwar die Datensätze in das Tabellenblatt "PD`s", aber ich habe in der Zelle B2 (da sollen sie auch hin) den kompletten Datensatz von A2:AE2 stehen. Das Gleiche macht er mit den darunter folgenden Datensätzen, also B3, B4 usw. halt jeden Datensatz in einer Zelle. Hat das was vielleicht damit zu tun, das die kopierten Werte aus einer csv.Datei stammen, oder ist es vielleicht eine Formatierungssache? In der Quelldatei hat jeder Datensatz nämlich seine eigene Spalte.
Hier noch das aktuelle Skript:

Private Sub CommandButton2_Click()
Dim Fso
Dim strDatei As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_M_d") & "_Artikellaufzeiten_L35_A.csv"
If Fso.fileexists("T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\Tag\" &  _
strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\ _
Tag\" & strDatei
ActiveWorkbook.Worksheets("2008_4_17_Artikellaufzeiten_L35").Range("A2:AE30").Copy  _
ThisWorkbook.Worksheets("PD`s").Range("B2")
ActiveWorkbook.Close
Application.ScreenUpdating = True
MsgBox "Daten wurden abgerufen!"
Unload UserForm1
Else
MsgBox "Datei nicht vorhanden! Bitte neues Datum wählen!"
End If
End Sub


Grüße, Stephan

Anzeige
AW: ComboBox
18.04.2008 09:22:01
Beverly
Hi Stephan,
zu Frage 1: den Tabellenblattnamen kannst du aus dem Dateinamen extrahieren

ActiveWorkbook.Worksheets(Mid(strDatei, 1, Len(strDatei) - 6)).Range("A2:AE30").Copy _
ThisWorkbook.Worksheets("PD`s").Range("B2")


zu Frage 2: verwende nach dem Kopieren Daten -&gt Text in Spalten



AW: ComboBox
18.04.2008 10:03:22
Stephan
Hi Beverly,
danke für deine fixe Antwort!! Funktioniert!! Er kopiert und fügt ein, zwar noch mit dem zuvor beschriebenen Fehler, aber ich kann jetzt auch andere Tage auswählen und er holt mir die entsprechenden Daten. Wenn ich allerdings einen Tag unter "10" (z. B. "07.04.2008") auswähle, bricht er die Abfrage allerdings an folgender Stelle ab:
ActiveWorkbook.Worksheets(Mid(strDatei, 1, Len(strDatei) - 6)).Range("A2:AE30").Copy ThisWorkbook.Worksheets("PD`s").Range("B2")
und wirft den "Laufzeitfehler 9 Index außerhalb des gültigen Bereichs" aus. Habe es schon mit einer Umformatierung der TextBox1 versucht ("dd" statt "d") aber das haut auch nicht hin. Dann bekomme ich die MsgBox "Datei nicht vorhanden! Bitte neues Datum wählen!" obwohl die dazugehörige Datei (2008_4_7_Artikellaufzeiten_L35_A) existiert.
Danke für den Tipp "Text in Spalten"!! Funktioniert einwandfrei. Werde ich dann wohl mit dem Makrorekorder aufzeichnen und ins Script einbinden.
Hier das Script:

Private Sub CommandButton2_Click()
Dim Fso
Dim strDatei As String
Dim strDatei1 As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_M_d") & "_Artikellaufzeiten_L35_A.csv"
If Fso.fileexists("T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\Tag\" &  _
strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\ _
Tag\" & strDatei
ActiveWorkbook.Worksheets(Mid(strDatei, 1, Len(strDatei) - 6)).Range("A2:AE30").Copy  _
ThisWorkbook.Worksheets("PD`s").Range("B2")        ActiveWorkbook.Close
Application.ScreenUpdating = True
MsgBox "Daten wurden abgerufen!"
Unload UserForm1
Else
MsgBox "Datei nicht vorhanden! Bitte neues Datum wählen!"
End If
End Sub


Gruß,
Stephan

Anzeige
AW: ComboBox
18.04.2008 10:25:03
Beverly
Hi Stephan,
ich habe jetzt mal strDatei und Mid(strDatei, 1, Len(strDatei) - 6) in B1 bzw. B2 schreiben lassen. In die TextBox habe ich dazu 07.04.2008 eingegeben.
Tabellenblattname: Tabelle1
 

B

1

2008_4_7_Artikellaufzeiten_L35_A.csv

2

2008_4_7_Artikellaufzeiten_L35


Beide Ergebnisse sind also richtig. Dieser Laufzeitfehler tritt immer dann auf, wenn das gesuchte Objekt nicht vorhanden ist - deshalb ist anzunehmen, dass das Tabellenblatt nicht so heißt. Möglicherweise ist ja irgendwo ein Leerzeichen zu viel, oder so etwas in der Art.


AW: ComboBox
18.04.2008 11:25:00
Stephan
Hallo Beverly,
du hast mal wieder recht!! Sorry, war mal wieder mein Fehler!! Du siehst, ich muss noch einiges lernen...;-)
Habe jetzt in jeder vorhandenen Datei die Tabellenblattnamen überprüft und siehe da: Die richtige Bezeichnung für alle Tage unter "10" lautet:
2008_4_7_Artikellaufzeiten_L35_ und für alle Tage über "9":
2008_4_10_Artikellaufzeiten_L35 usw.
Das heißt: Bei Tagen über 9 fehlt einfach der Unterstrich am Ende. Der Teufel steckt manchmal im Detail;-)
Kann man das nun irgendwie in der Abfrage berücksichtigen, oder wäre eine einheitliche Bezeichnung der Tabellenblätter die einfachere Lösung?
Anbei das aktuelle Script. Wie du siehst, ist die "Text-in-Spalten" Funktion schon integriert.

Private Sub CommandButton2_Click()
Dim Fso
Dim strDatei As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_M_d") & "_Artikellaufzeiten_L35_A.csv"
If Fso.fileexists("T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\Tag\" &  _
strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\ _
Tag\" & strDatei
ActiveWorkbook.Worksheets(Mid(strDatei, 1, Len(strDatei) - 6)).Range("A2:AE30").Copy  _
ThisWorkbook.Worksheets("PD`s").Range("B2")
ActiveWorkbook.Close
Application.ScreenUpdating = True
MsgBox "Daten wurden abgerufen!"
Unload UserForm1
Sheets("PD`s").Select
Range("B2:B30").Select
Selection.TextToColumns Destination:=Range("B2"), DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 4), Array(2, 1), Array(3, 1), Array(4, 4), Array(5, 1), Array(6, 4), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1)), TrailingMinusNumbers:=True
Sheets("Start").Select
Range("E15").Select
Else
MsgBox "Datei nicht vorhanden! Bitte neues Datum wählen!"
End If
End Sub


Gruß, Stephan

AW: ComboBox
18.04.2008 11:55:00
Beverly
Hi Stephan,
falles es dich tröstet - davor ist niemand gefeit. :-)
Natürlich kann man den Code entsprechend anpassen

If Day(TextBox1) 


Aber, wenn du mich fragst - wenn es nicht allzu viele Dateien sind, würde ich aber dennoch den anderen Weg gehen und alle Tabellenblätter identisch benennen. Ist m.E. einfach eine Frage der "Ordnung".
In VBA kann zu 99% auf Select und Activate verzichtet werden, außerdem benötigt man meist nur einen Teil dessen, was der Makrorekorder aufgezeichnet hat, so auch bei Text in Spalten. Die Zeilen von Sheets("PD`s").Select bis einschließlich Range("E15").Select sollten sich durch die folgende Zeile ersetzen lassen.


Worksheets("DP`s").Range("B2:B30").TextToColumns Destination:=Range("B2"), DataType:= _
xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Space:=True




AW: ComboBox
18.04.2008 12:36:00
Stephan
Hi Beverly,
wie immer ein großes Dankeschön für deine Mühe!!
Ich habe zunächst den If-Else Part so eingefügt, aber ich erhalte die Fehlermeldung "Fehler beim kompilieren - Else ohne If" und er markiert mir das letzte "Else" Setze ich ein If dahinter, wieder die Meldung "Fehler beim kompilieren - Erwartet: Ausdruck" Was habe ich da falsch gemacht? Muss das vieleicht an einer anderen Position eingefügt werden?

Private Sub CommandButton2_Click()
Dim Fso
Dim strDatei As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_M_d") & "_Artikellaufzeiten_L35_A.csv"
If Fso.fileexists("T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\Tag\" &  _
strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\ _
Tag\" & strDatei
If Day(TextBox1) 
ActiveWorkbook.Close
Application.ScreenUpdating = True
MsgBox "Daten wurden abgerufen!"
Unload UserForm1
Sheets("PD`s").Select
Range("B2:B30").Select
Selection.TextToColumns Destination:=Range("B2"), DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 4), Array(2, 1), Array(3, 1), Array(4, 4), Array(5, 1), Array(6, 4), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1)), TrailingMinusNumbers:=True
Sheets("PD`s").Select
Range("B2").Select
Else
MsgBox "Datei nicht vorhanden! Bitte neues Datum wählen!"
End If
End Sub


Die Sache mit "Text in Spalte" werde ich gleich ausprobieren. Leider handelt es sich um mehrere Dateien die täglich auflaufen und ausgewertet werden. Also, da komt schon eine ziemliche Datenflut zusammen. Nichts desto trotz werde ich den Vorschlag zur einheitlichen Tabellenblatt-Bezeichnung machen.
Gruß, Stephan

AW: ComboBox
18.04.2008 13:58:10
Beverly
Hi Stephan,
du hast meinen Code übernommen, dabei aber die letzte Zeile vergessen. Füge also vor ActiveWorkbook.Close noch End If ein.


AW: ComboBox
18.04.2008 14:27:00
Stephan
Hi Beverly,
Sorry für diesen Flüchtigkeitsfehler, aber ich glaube, ich sitze schon wieder zu lange davor...
Ich habe es ausprobiert, aber er wirft mir wieder "Laufzeitfehler 9 - Index ausserhalb des gültigen Bereichs" aus und markiert mir folgende Zeile gelb:
ActiveWorkbook.Worksheets(Mid(strDatei, 1, Len(strDatei) - 6)).Range("A2:AE30").Copy ThisWorkbook.Worksheets("PD`s").Range("B2")
Fehlt denn da noch was? Hier das Script:

Private Sub CommandButton2_Click()
Dim Fso
Dim strDatei As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_M_d") & "_Artikellaufzeiten_L35_A.csv"
If Fso.fileexists("T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\Tag\" &  _
strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\ _
Tag\" & strDatei
If Day(TextBox1) 


Habe ich den Code denn auch an der richtigen Stelle eingefügt?
Gruß und Danke, Stephan

AW: ComboBox
18.04.2008 14:39:35
Beverly
Hi Stephan,
der Code ist schon richtig eingefügt. Wie bereits in einem vorhergehenden Beitrag geschrieben: dieser Fehler tritt immer dann auf, wenn ein Objekt nicht gefunden wird (also der Name falsch ist).


AW: ComboBox
18.04.2008 15:22:02
Stephan
Hallo Beverly,
ich habe folgendes ausprobiert:
in deinem Code
ActiveWorkbook.Worksheets(Mid(strDatei, 1, Len(strDatei) - 5)).Range("A2:AE30").Copy ThisWorkbook.Worksheets("PD`s").Range("B2")
Else
ActiveWorkbook.Worksheets(Mid(strDatei, 1, Len(strDatei) - 6)).Range("A2:AE30").Copy ThisWorkbook.Worksheets("PD`s").Range("B2")

habe ich die einfach mal Werte 5 und 6 vertauscht. Also die 6 stand zuvor in der oberen Reihe und die 5 in der unteren. Nun funktioniert es. Ich kann z. B. 07.04.2008 und 10.04.2008 abrufen und er liefert mir die richtigen Werte.
Aktueller Code:

Private Sub CommandButton2_Click()
Dim Fso
Dim strDatei As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_M_d") & "_Artikellaufzeiten_L35_A.csv"
If Fso.fileexists("T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\Tag\" &  _
strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\ _
Tag\" & strDatei
If Day(TextBox1) 


So, ich sage mal wieder schönen Dank!! Habe mir jetzt die Quelldateien mit nach Hause genommen um am Wochenende vielleicht noch etwas zu Hause machen zu können. Ich wünsche ein schönes Wochenende. Dann vielleicht bis Montag
Gruß, Stephan

AW: ComboBox
21.04.2008 10:08:31
Stephan
Hi Beverly,
ich hoffe, Du hast ein schönes Wochenende gehabt. Die Sache mir dem Datum läuft nun einwandfrei. _
In der Abfrage sollen nun noch 5 weitere Dateien (Artikellaufzeiten L36A, L34A, L34KA,L32A undL32KA) mit eingebunden werden. _
Ich habe bereits versucht, die Datei "Artikellaufzeiten L36A" zu integrieren, aber er wirft mir immer die Daten von der "L35A" aus. _
Anscheinend sucht er immer nur in der "Artikellaufzeiten L35A.csv"-Datei.
Mit anderen Worten: Ich wähle über eine ComboBox die Linie (z. B. L36A) und über den Kalendar das Datum _
(wodurch ja die zu suchende Datei z. B. "2008_4_14_Artikellaufzeiten_L36_A.csv" definiert wird). Wie kann man das umsetzen? Anbei der aktuelle Code.
Grüße und vielen Dank, Stephan

Private Sub CommandButton2_Click()
Dim Fso
Dim strDatei As String
Dim strDatei1 As String
Set Fso = CreateObject("Scripting.FileSystemObject")
strDatei = Format(TextBox1, "yyyy_M_d") & "_Artikellaufzeiten_L35_A.csv"
strDatei1 = Format(TextBox1, "yyyy_M_d") & "_Artikellaufzeiten_L36_A.csv"
If Fso.fileexists("T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\Tag\" &  _
strDatei) Then
Application.ScreenUpdating = False
Workbooks.Open Filename:="T:\Prozessdaten\Fertigung\F3\L35\Abfuellung\Produktionsdaten\Tag\"  _
& strDatei
If Day(TextBox1) 


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige