Microsoft Excel

Herbers Excel/VBA-Archiv

Datei öffnen -> ändern -> speichern | Herbers Excel-Forum


Betrifft: Datei öffnen -> ändern -> speichern von: Timothy
Geschrieben am: 04.02.2010 14:29:32

Hallo miteinander,

ich habe folgendes Problem:

Ich möchte gerne mit VBA eine Datei (Datei.mpr) öffnen und auslesen, in dieser Datei etwas Suchen ( Torte ="13Euro" ), bei diesem gesuchten Text den Wert in den Anführungszeichen ersetzen ( "15Euro") und dann die Datei wieder speichern (als Datei.mpr).

Das alles sollte im Hintergrund ablaufen. ZUdem kann es vorkommen das der gesuchte Begriff (Torte="13Euro) auch mehrmals in der Datei vorkommt und acuh ersetzt werden muss....

Ich habe es es mal mit .opentextfile versucht, funktioniert aber nicht ;(

Wäre super wenn mir jemand helfen könnte! Im Forum habe ich nichts gefunden...!

Danke vielmals!

  

Betrifft: AW: Datei öffnen -> ändern -> speichern von: Josef Ehrensberger
Geschrieben am: 04.02.2010 14:34:58

Hallo Timothy,


dann solltest du mal so eine .mpr hochladen zum testen.



Gruß Sepp



  

Betrifft: AW: Datei öffnen -> ändern -> speichern von: Timothy
Geschrieben am: 04.02.2010 14:45:28

Hallo Josef,

hier die Datei, allerdings als Textdatei, da ein upload von *.mpr Dateien nicht möglich ist ;)

https://www.herber.de/bbs/user/67758.txt


  

Betrifft: keine Torte! von: Josef Ehrensberger
Geschrieben am: 04.02.2010 14:55:03

Hallo Timothy,


"Torte" kann ich aber nirgendwo finden!

Sag mal genauer was gesucht und ersetzt werden soll, ich hab nämlich keine Lust, den Code zig-Mal umzustricken.



Gruß Sepp



  

Betrifft: AW: keine Torte! von: Timothy
Geschrieben am: 04.02.2010 15:07:22


;);) Erwischt ;);)

Will das alle KM="........."

=>               KM="Tischplatte"

heißen.......


  

Betrifft: Komm schon... von: Josef Ehrensberger
Geschrieben am: 04.02.2010 15:15:35

... lass dir nicht alles aus der Nase ziehn!


"KM=......." finde ich nicht, aber z.B. "KM="xxx : Fertiglaenge"", soll etwa das "xxx" gegen "Tischplatte" getauscht werden?


Gruß Sepp



  

Betrifft: AW: Komm schon... von: Timothy
Geschrieben am: 04.02.2010 15:21:03

Nein,
KM="xxx : Fertiglaenge", KM="xxx : Zuschnittlaenge", KM="xxx : Fertigbreite",........etc.

sollen alle durch KM="Tischplatte" ersetzt werden

also eigentlich muß ich nur nach dem KM suchen, nicht nach dem ganzen string. Und alles was in den ANführungszeichen steht soll durch Tischplatte ersetzt werden!


  

Betrifft: AW: Komm schon... von: Josef Ehrensberger
Geschrieben am: 04.02.2010 15:38:42

Hallo Timothy,


na dann probier mal.


Sub changeMPR_File()
  Dim strFile As String, strT As String
  Dim strTemp As String, strFind As String, strReplace As String
  Dim ff As Integer
  
  strFile = Application.GetOpenFilename("MPR Dateien (*.mpr),*.mpr")
  
  If strFile = CStr(False) Then Exit Sub
  
  strFind = "KM=""xxx :"
  
  strReplace = "KM=""Tischplatte:"
  
  ff = FreeFile
  
  Open strFile For Input As #ff
  Input #ff, strT
  strTemp = Replace(strT, strFind, strReplace)
  Close #ff
  
  ff = FreeFile
  
  Open strFile For Output As #ff
  Print #ff, strTemp
  Close #ff
  
End Sub


Gruß Sepp



  

Betrifft: AW: Datei öffnen -> ändern -> speichern von: Timothy
Geschrieben am: 04.02.2010 15:53:47

Hey Josef,

vielen Dank für deinen Code, aber es funktioniert leider nicht!

Wenn ich dein Code probiere:

Sub changeMPR_File()
  Dim strFile As String, strT As String
  Dim strTemp As String, strFind As String, strReplace As String
  Dim ff As Integer
  
  strFile = Application.GetOpenFilename("MPR Dateien (*.mpr),*.mpr")
  
  If strFile = CStr(False) Then Exit Sub
  
  strFind = "KM=""xxx :"
  
  strReplace = "KM=""Tischplatte:"
  
  ff = FreeFile
  
  Open strFile For Input As #ff
  Input #ff, strT
  strTemp = Replace(strT, strFind, strReplace)
  Close #ff
  
  ff = FreeFile
  
  Open strFile For Output As #ff
  Print #ff, strTemp
  Close #ff
  
End Sub

steht in der Datei nachher nur das:
[h

Zudem sollte ich eine Datei automatisch öffnen, also ich kenne den Pfad der Datei.... C:\Versuch\Datei.mpr.
Wie bekomme ich denn das hin???

Danke!


  

Betrifft: AW: Datei öffnen -> ändern -> speichern von: Josef Ehrensberger
Geschrieben am: 04.02.2010 16:04:10

Hallo Timothy,


also bei mir wird aus

KM="xxx : Fertiglaenge"
ZL="L + 20"
KM="xxx : Zuschnittlaenge"
B="78"
KM="xxx : Fertigbreite"
ZB="B + 2"
KM="xxx : Zuschnittbreite"
D="68"
KM="xxx : Werkstueckdicke"

das

KM="Tischplatte: Fertiglaenge"
ZL="L + 20"
KM="Tischplatte: Zuschnittlaenge"
B="78"
KM="Tischplatte: Fertigbreite"
ZB="B + 2"
KM="Tischplatte: Zuschnittbreite"
D="68"
KM="Tischplatte: Werkstueckdicke"

das bedeutet, das dein testfile nicht dem Originalaufbau deiner .mpr's entspricht.

packe doch eine solche in ein zip-File.



Gruß Sepp



  

Betrifft: AW: Datei öffnen -> ändern -> speichern von: Timothy
Geschrieben am: 04.02.2010 16:14:32

Also bei mir funktioniert das mit dem selben Code wie du angegeben hats nicht, egal ob ich die Datei im Original lasse oder in ne Textdatei umwandle.
Aber hier nochmal die Original:

https://www.herber.de/bbs/user/67763.zip

Und wie bekomm ich es hin dass ich keine Datei auswählen muß, sondern automatisch eine öffne?


  

Betrifft: AW: Datei öffnen -> ändern -> speichern von: Josef Ehrensberger
Geschrieben am: 04.02.2010 16:23:54

Hallo Timothy,


dann halt so.



Sub changeMPR_File()
  Dim strFile As String, strT As String
  Dim strTemp As String, strFind As String, strReplace As String
  Dim ff As Integer
  
  strFile = "E:\Forum\lb.mpr" 'Dateiname anpassen!
  
  strFind = "KM=""xxx :"
  
  strReplace = "KM=""Tischplatte:"
  
  ff = FreeFile
  
  Open strFile For Input As #ff
  Do While Not EOF(ff)
    Input #ff, strT
    If InStr(1, strT, strFind) > 0 Then
      strTemp = strTemp & Replace(strT, strFind, strReplace) & vbLf
    Else
      strTemp = strTemp & strT & vbLf
    End If
  Loop
  Close #ff
  
  ff = FreeFile
  
  Open strFile For Output As #ff
  Print #ff, strTemp
  Close #ff
  
End Sub


Gruß Sepp



  

Betrifft: AW: Datei öffnen -> ändern -> speichern von: Timothy
Geschrieben am: 05.02.2010 13:09:29

Hallo Sepp,

erst einmal vielen Dank. Soweit funktioniert der Code.
Aber ich möchte gerne die ganze Zeile wo "KM" steht ersetzen.
Also nicht nur wie bei deinem generierten Beispiel das xxx ersetzen..... die Inhalte in den ANführungszeichen können ja variieren (auch in der Beispieldatei).

Folgender ABlauf sollte es sein:
1. Öffne Datei
2. Suche KM= (die ganze Zeile lautet aber: KM="Hier steht irgendein Wert")
3. Ersetze KM= mit KM="Tischplatte"
4. Speichern und beenden der Datei

Ich hab das nicht hinbekommen...;(

Das muß doch auch irgendwie gehen, oder?!?


  

Betrifft: AW: Datei öffnen -> ändern -> speichern von: Josef Ehrensberger
Geschrieben am: 05.02.2010 16:05:05

Hallo Timothy,


das geht dann so.



' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub changeMPR_File()
  Dim strFile As String, strT As String
  Dim strTemp As String, strFind As String, strReplace As String
  Dim ff As Integer
  
  strFile = "E:\Forum\lb.mpr" 'Dateiname anpassen!
  
  strFind = "KM=" 'gesuchter Teilstring
  
  strReplace = "KM=""Tischplatte:""" 'ersatzstring
  
  ff = FreeFile
  
  Open strFile For Input As #ff
  Do While Not EOF(ff)
    Input #ff, strT
    If strT Like "*" & strFind & "*" Then
      strTemp = strTemp & strReplace & vbLf
    Else
      strTemp = strTemp & strT & vbLf
    End If
  Loop
  Close #ff
  
  ff = FreeFile
  
  Open strFile For Output As #ff
  Print #ff, strTemp
  Close #ff
  
End Sub


Gruß Sepp



  

Betrifft: AW: Datei öffnen -> ändern -> speichern von: Timothy
Geschrieben am: 08.02.2010 13:13:46

Hey Sepp,

genial, das funktioniert so....!! DANKEEEEE!!!!!

Ein kleines Problem hab ich noch:
In einer Zeile in der Original-Datei (im angehängten Bild links) befindet sich ein Komma, in der erzeugten Datei wird dieses Komma als Zeilenumbruch gesehen und verschwindet ganz.
Kann man das irgendwie umgehen, also so dass es wie in der originalen Datei geschrieben wird (in einer Zeile und mit Komma)???




  

Betrifft: AW: Datei öffnen -> ändern -> speichern von: Timothy
Geschrieben am: 08.02.2010 16:36:12

Ah, habe es mit Mühen gefunden!

Statt Input muß man einfach

Line Input nehmen, dann funktioniert das ganze....!!!!

Trotzdem Danke!!!!!!


Beiträge aus den Excel-Beispielen zum Thema "Datei öffnen -> ändern -> speichern"