Frage von schaiki, 65

Frage: will die Quelldatei ändern

das mein code - damit kann ich Excel Dateien einlesen - leider muss ich dazu meine ursprungsdatei öffnen und neu abspeichern. 

denke es liegt am Programmstatus zwischen ausführdatei und leseprogramm.

wie kann ich das umgehen?

 vFileToOpen = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , , , True)  If Not IsArray(vFileToOpen) Then Exit Sub

Antwort
von daCypher, 46

Kleiner Tipp zum Fragen stellen: Du kannst in die Überschrift die grobe Frage schreiben und hast unten haufenweise Platz, um genauere Infos reinzuschreiben.

So ist nämlich überhaupt nicht klar, was du haben willst. Du öffnest ein Dateiauswahlfenster und beendest die Prozedur, falls da keine Datei ausgewählt wurde. Eine CSV kannst du natürlich nicht auswählen, weil der Filter auf xls* steht.

Kommentar von daCypher ,

Dein Problem ist leider immer noch nicht klar. Also du öffnest aus einer "Haupt-Excel" mit dem Code andere Excel-Dateien?

Dafür muss die Haupt-Excel natürlich geöffnet sein, sonst kannst du den Code ja nicht ausführen. Wenn du Excel danach wieder schließen willst, benutzt du einfach Application.Quit. Wenn es noch gespeichert werden soll, dann vorher Application.SaveWorkspace

Kommentar von schaiki ,

 

Ich habe ein Programm aus dem ich viele exceldatein (wöchentlich) generiere. Diese Excel Datei ist eigentlich eine Textdatei wird aber als Excel abgespeichert - was auch gut funktioniert.

nun habe ich ein makro geschrieben kann aber leider weder die Excel noch die text Datei einlesen: es kommt folgender Fehler: Index außerhalb des gültigen Bereichs.

wenn ich die gleiche Excel Datei neu abspeichere geht es aber. nur möchte ich nicht 50 Dateien öffnen und neu abspeichern müssen. Ich vermute das es vlt an den unterschiedlichen excelformaten liegt(1997-2003.....)

quellcode:

Sub guido()
     Dim i               As Long
     Dim sPfad           As String
     Dim sDatei          As String
     Dim vFileToOpen     As Variant
     Dim lngLZ           As Long
     Dim blnÜberschrift  As Boolean
     Dim iCalc           As Integer
    
    
     vFileToOpen = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , , , True)
     If Not IsArray(vFileToOpen) Then Exit Sub
    
        
     iCalc = Application.Calculation

     On Error GoTo ENDE:
     Application.ScreenUpdating = False
     Application.Calculation = xlCalculationManual
     Application.EnableEvents = False

.......

Kommentar von daCypher ,

Eine Textdatei, die als Excel abgespeichert wird? Also eine .csv, bei der einfach die Endung auf .xls geändert wird? Das hab ich noch nie probiert, aber es wundert mich nicht, dass das nicht funktioniert.

Wenn du die Datei per Hand öffnest, merkt Excel wahrscheinlich, dass das Format nicht stimmt und probiert andere Formate. Wenn du es dann wieder speicherst, wird es vermutlich als echte .xls-Datei gespeichert.

Wo genau kommt denn die Fehlermeldung?

Wenn die Dateien aus dem anderen Programm .csv-Dateien sind, sollten sie natürlich auch .csv heißen. Dann kannst du bei der getOpenFilename-Funktion einfach den Filter auf .csv einstellen.

vFileToOpen = Application.GetOpenFilename("CSV-Dateien (*.csv), *.csv", MultiSelect := True)
If Not IsArray(vFileToOpen) Then Exit Sub

Wenn es keine csv-Dateien sind, sondern irgendwie anders formatierte Textdateien, dann ist es wahrscheinlich am einfachsten, wenn du die Dateien über den Textimport-Assistenten in die Excel-Tabelle reinholst (Also Makro aufzeichnen und dann über Daten > Aus Text). Dann kannst du dir das automatisch erstellte Makro so hinbiegen, wie es für dich passt.

Wenn es dann in der Excel-Datei richtig drinsteht, kannst du es mit 

ActiveWorkbook.SaveAs("C:\MeineDateien\Dateiname.xls", xlExcel12) 

im richten Excel-Format speichern.

Kommentar von Ninombre ,

wenn Du im VBA Editor das Makro mit F8 zeilenweise durchgehst: Bei welcher Zeile genau kommt diese Fehlermeldung?

Antwort
von Justwannaknow1, 41

Was möchtest du mit diesem Code erreichen, den Filenamen einer Excel Datei?

Expertenantwort
von Ninombre, Community-Experte für Excel, 24

Der Code ist sicherlich noch etwas länger als die eine Zeile, so kann ich wenig dazu sagen.

http://www.herber.de/forum/archiv/500to504/502859_Textdatei_oeffnen_und_bearbeit...

Kommentar von schaiki ,

Ich habe ein Programm aus dem ich viele exceldatein (wöchentlich) generiere. Diese Excel Datei ist eigentlich eine Textdatei wird aber als Excel abgespeichert - was auch gut funktioniert.

nun habe ich ein makro geschrieben kann aber leider weder die Excel noch die text Datei einlesen: es kommt folgender Fehler: Index außerhalb des gültigen Bereichs.

wenn ich die gleiche Excel Datei neu abspeichere geht es aber. nur möchte ich nicht 50 Dateien öffnen und neu abspeichern müssen. Ich vermute das es vlt an den unterschiedlichen excelformaten liegt(1997-2003.....)

quellcode:

Sub guido()
     Dim i               As Long
     Dim sPfad           As String
     Dim sDatei          As String
     Dim vFileToOpen     As Variant
     Dim lngLZ           As Long
     Dim blnÜberschrift  As Boolean
     Dim iCalc           As Integer
    
    
     vFileToOpen = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , , , True)
     If Not IsArray(vFileToOpen) Then Exit Sub
    
        
     iCalc = Application.Calculation

     On Error GoTo ENDE:
     Application.ScreenUpdating = False
     Application.Calculation = xlCalculationManual
     Application.EnableEvents = False

.......

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten