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

@Josef Ehrensberger / Beitrag leider nicht mehr

@Josef Ehrensberger / Beitrag leider nicht mehr
13.09.2006 10:54:40
Martin


Hallo Josef
Habe eine Lösung erarbeitet, weicht aber von Deinem Vorschlag ab, weil eine Fehlermeldung beim Teil des Replace erfolgte.
Ist dieser Weg fals aufgesetzt?
Danke für Deine Prüfung
Sub SubstituteSave()
Dim arr() As String
Dim iCounter 'musste die "as Integer" Zuweisung löschen überlauf Fehler 6
Dim sSource As String, sTarget As String, sTxtA As String
Dim sTxtB As String, sTxt As String, sPath As String
Dim strMatch1 As String, strMatch2 As String
Dim intFront As Integer, intEnd As Integer
Dim PrüferMatch1 As Boolean
sPath = Range("B7").Value & "\" 'Pfad der Datei
sSource = sPath & Range("b1").Value ' Name der Textdatei
sTarget = sPath & Range("b4").Value ' Neuer Name der Textdatei
sTxtA = Range("b2").Value ' alter Text
sTxtB = Range("b3").Value ' neuer Text
strMatch1 = "<forecast-adjustment>" 'vordere Begrenzung
strMatch2 = "</forecast-adjustment>" 'hintere Begrenzung
chkMatch1 = 0
Close
Open sSource For Input As #1
Do Until EOF(1)
  Line Input #1, sTxt
  'If sTxt = sTxtA Then
  'MsgBox "treffer"
  'End If
'nach erfolgreicher Prüfung der oberen Eingrenzung wird die chkMatch1 auf true gesetzt
If InStr(1, sTxt, strMatch1) > 0 Then
    chkMatch1 = 1
End If
'nach erfolgreicher Prüfung der unteren Eingrenzung wird die chkMatch1 auf false gesetzt
If InStr(1, sTxt, strMatch2) > 0 Then
    chkMatch1 = 0
End If
'wenn chkMatch1 True und sText ist nicht obere Eingrenzung und der String ist ungleich des Sollwert dann
If chkMatch1 And sTxt <> strMatch1 And sTxt <> sTxtB Then
    intFront = InStr(1, sTxt, strMatch1) + Len(strMatch1)
    intEnd = InStr(1, sTxt, strMatch2) - 1
    sTxt = sTxtB
End If
  iCounter = iCounter + 1
  ReDim Preserve arr(1 To iCounter)
  arr(iCounter) = sTxt
Loop
Close
Open sTarget For Output As #1
For iCounter = 1 To UBound(arr)
  Print #1, arr(iCounter)
Next iCounter
Close
On Error GoTo ERRORHANDLER
Shell "notepad " & sTarget, vbMaximizedFocus
MsgBox " Job erledigt!"
ERRORHANDLER:
End Sub
Gruss
Martin


3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: @Josef Ehrensberger / Beitrag leider nicht mehr
13.09.2006 12:58:07
Rudi
Hallo,
der Code ist insofern falsch, dass True in VBA -1 ist und nicht 1.
Warum benutzt du nicht einfach True und False? Dann kann das nicht passieren.
Gruß
Rudi
AW: @Josef Ehrensberger / Beitrag leider nicht mehr
13.09.2006 13:13:14
Martin
Danke Rudi
werde dies zur Sicherheit gleich anpassen.
Aber es könnten da noch mehr mögliche Feherquellen vorhanden sein.
Ebenfalls suche ich eine Lösung bei welcher immer nur die letzten 10 Zeilen vor dem
strMatch2 ersetzt werden. Wie muss ich das Script umschreiben?
Danke und Gruss
Martin
Neuer Tread eröffnet
14.09.2006 07:13:12
Martin
Hallo Sepp, Hallo Rudi, Hallo Forum
Habe den Tread weil Problem gelöst wurde geschlossen und mit erweiterten Anforderungen neu ins Forum gestellt.
Danke für die bisherige Hilfe
Martin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige