Datei mit getopenfilename öffnen und kopieren

Hi,
ich habe ein Problem und zwar möchte ich in Excel 2007 eine .txt Datei mit dem Befehl getopenfilename und Opentext öffnen und im Anschluss in eine andere Arbeitsmappe kopieren.
Mein Code klappt leider nicht und spuckt mir bei der Aktivierung des geöffneten Sheets die Fehlermeldung „Laufzeitfehler 9: Index ausserhalb des gültigen Bereichs“ aus. Hat jemand eine Idee wie ich es ansonsten umsetzen kann?

Mein Code:

Sub Öffnen()
Dim aktPfad As String
Dim strFileName As String
Dim Name1 As String

aktPfad = Application.GetOpenFilename(„Textdateien (*.txt), *.txt“)
strFileName = Left(Dir(aktPfad), Len(Dir(aktPfad)) - 4)
Name1 = Right$(aktPfad, Len(aktPfad) - InStrRev(aktPfad, „“))

If Dir(aktPfad$) „“ Then

Workbooks.OpenText Filename:=aktPfad, Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1)), TrailingMinusNumbers:=True

Workbooks(Name1).Activate
Worksheets(strFileName).Select
ActiveSheet.Copy after:=Workbooks(„Mappe5.xlsm“).Sheets(1)

End If
End Sub

Schonmal danke im vorhinein.

ich habe ein Problem und zwar möchte ich in Excel 2007 eine
.txt Datei mit dem Befehl getopenfilename und Opentext öffnen
und im Anschluss in eine andere Arbeitsmappe kopieren.
Mein Code klappt leider nicht und spuckt mir bei der
Aktivierung des geöffneten Sheets die Fehlermeldung
„Laufzeitfehler 9: Index ausserhalb des gültigen Bereichs“
aus. Hat jemand eine Idee wie ich es ansonsten umsetzen kann?

Hallo Slic,

Activate und Select braucht man zu 99% nicht.
Hast du lange Txt-Namen? Blattnamen dürfen nur max. 31 Zeichen lang sein. (Mir unbekannt ob das in 2007 auch noch gilt)
Im Code ist der Fall schon vorbereitet. Genau wie Close.

Bei OpenText habe ich den letzten Parameter rausgeworfen (mein XL2000 mag den nicht *gg*), setz ihn wieder ein.

Option Explicit
'
Sub Öffnen()
Dim aktPfad As String
Dim strFileName As String
Dim Name1 As String
aktPfad = Application.GetOpenFilename("Textdateien (\*.txt), \*.txt")
strFileName = Left(Dir(aktPfad), Len(Dir(aktPfad)) - 4)
Name1 = Right$(aktPfad, Len(aktPfad) - InStrRev(aktPfad, "\"))
If Dir(aktPfad$) "" Then
 Workbooks.OpenText Filename:=aktPfad, Origin:=xlMSDOS, \_
 StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, \_
 ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False \_
 , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), \_
 Array(3, 1))
 Worksheets(strFileName).Copy after:=Workbooks("Mappe5.xlsm").Sheets(1)
 'Worksheets(Left(strFileName, 31)).Copy after:=Workbooks("Mappe5.xlsm").Sheets(1)
 'ActiveWorkbook.Close savechanges:=False
End If
End Sub

Gruß
Reinhard

Hi Reinhard,

erstmal danke für deine Antwort!
Leider funktioniert der Code bei mir noch immer nicht. Ich bekomme wieder den „Laufzeitfehler 9: Index ausserhalb des gültigen Bereichs“ Fehler. Die .txt datei ist nur 3 zeichen lang, habe es jetzt allerding auch nochmal mit einem veränderten 7 stelligen namen probiert, dann bekomme ich als Fehlermeldung nur „Index ausserhalb des gültigen Bereichs“ ohne die Meldung Laufzeitfehler 9.
Falls du oder noch jemand anders Rat weiß, wäre ich sehr dankbar.

Gruß slic

achso, was vielleicht noch hilfreich sein könnte, der Fehler tritt bei der Einzelschritt-Ausführung erst beim Copy Befehl auf.

ps: konnte meinen alten Beitrag leider nicht editiern…

Hallo Slic,

ps: konnte meinen alten Beitrag leider nicht editiern…

entweder benutzt du die Vorschau, oder wenn er schon abgeschickt ist, so kopiere dir den Inhalt heraus und lösche ihn, das geht solange wie noch keinder darauf geantwortet hat, dann kopierst du den kopierten Text in einen neuen Artikel.

achso, was vielleicht noch hilfreich sein könnte, der Fehler
tritt bei der Einzelschritt-Ausführung erst beim Copy Befehl
auf.

So, habe jetzt den nachstehenden Code so wie er da steht mit XL2007 getestet, auch mit F8, keine Probleme.
Kann es sein daß da deine Mappe „Mappe5.xlsm“ gar nicht geöffnet ist?
Oder heißt sie in Wahrheit nur Mappe5 da sie noch nie gespeichert wurde?

Die Fehlermeldung passt da zwar überhaupt nicht, aber das hat bei Excel nicht unbedingt was zu bedeuten, hat die Mappe irgendwelchen Mappenschutz?

Um Probleme mit der Mappe auszuschließen, knall den Code mal in ein Standardmodul eier neuen leeren Mappe.
Benutze dann dieses zum Kopieren:
Worksheets(strFileName).Copy after:=ThisWorkbook.Sheets(1)

Gruß
Reinhard

Sub Öffnen()
Dim aktPfad As String
Dim strFileName As String
Dim Name1 As String
aktPfad = Application.GetOpenFilename("Textdateien (\*.txt), \*.txt")
strFileName = Left(Dir(aktPfad), Len(Dir(aktPfad)) - 4)
Name1 = Right$(aktPfad, Len(aktPfad) - InStrRev(aktPfad, "\"))
If Dir(aktPfad$) "" Then
 Workbooks.OpenText Filename:=aktPfad, Origin:=xlMSDOS, \_
 StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, \_
 ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False \_
 , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), \_
 Array(3, 1)), TrailingMinusNumbers:=True
 'Worksheets(strFileName).Copy after:=Workbooks("Mappe5.xlsm").Sheets(1)
 Worksheets(strFileName).Copy after:=Workbooks("kwBsp1.xlsx").Sheets(1)
 'ActiveWorkbook.Close savechanges:=False
End If
End Sub

Hi Reinhard

Kann es sein daß da deine Mappe „Mappe5.xlsm“ gar nicht
geöffnet ist?

Oder heißt sie in Wahrheit nur Mappe5 da sie noch nie
gespeichert wurde?

Die Fehlermeldung passt da zwar überhaupt nicht, aber das hat
bei Excel nicht unbedingt was zu bedeuten, hat die Mappe
irgendwelchen Mappenschutz?

Um Probleme mit der Mappe auszuschließen, knall den Code mal
in ein Standardmodul eier neuen leeren Mappe.

also es lag daran, dass ich den ganzen Code nicht als Modul hatte, sondern in „diese Arbeitsmappe“ geschrieben. Da ich bisher nur mit VB programmiert hatte war ich mir nicht darüber im klaren, dass die verschiedenen prozeduren als eigenständige module laufen müssen/sollen.

Aber jetzt ist das Problem ja gelöst! Vielen Dank, hast mir sehr geholfen, war schon kurz vorm Verzweifeln!

Gruß slic