Rechnen oder ersetzten hat jemand eine Idee
Hallo,
folgendes Problem: Ich möchte in einer Datei (mir ist es egal in welchem Format) folgendes abändern...
If Not zelle Is Nothing Then
If zelle.Address = ("$C$15") Then
ActiveSheet.Range("C15").Interior.ColorIndex = 2
End If
End If
Set zelle = Target
Die "15" soll nun plus 40 also 55 da stehen.
In der nächsten Spalte dann
If Not zelle Is Nothing Then
If zelle.Address = ("$C$16") Then
ActiveSheet.Range("C16").Interior.ColorIndex = 2
End If
End If
Set zelle = Target
"16" plus 40 also 56
Die Liste geht immer so weiter bis "C98"
um nicht immer alles von hand ändern zu müssen... hat jemand einen Idee?
Gruß Peterchen
folgendes Problem: Ich möchte in einer Datei (mir ist es egal in welchem Format) folgendes abändern...
If Not zelle Is Nothing Then
If zelle.Address = ("$C$15") Then
ActiveSheet.Range("C15").Interior.ColorIndex = 2
End If
End If
Set zelle = Target
Die "15" soll nun plus 40 also 55 da stehen.
In der nächsten Spalte dann
If Not zelle Is Nothing Then
If zelle.Address = ("$C$16") Then
ActiveSheet.Range("C16").Interior.ColorIndex = 2
End If
End If
Set zelle = Target
"16" plus 40 also 56
Die Liste geht immer so weiter bis "C98"
um nicht immer alles von hand ändern zu müssen... hat jemand einen Idee?
Gruß Peterchen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 249833
Url: https://administrator.de/contentid/249833
Ausgedruckt am: 15.11.2024 um 21:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Peterchen,
das lässt sich leicht mit Regular Expressions lösen, hier in VBScript:
Den Code z.B. als
aufrufen. Du kannst die Eingabedatei auch per Drag'n Drop auf der Scriptdatei fallen lassen.
Das Script erzeugt eine neue Datei, deren Name sich aus <NameDerEingabedatei>+
Gruß
Friemler
das lässt sich leicht mit Regular Expressions lösen, hier in VBScript:
Option Explicit
'Konstanten für Ein-/Ausgabe
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
'Suchmuster
Const Pattern1 = "(.*If zelle\.Address = \(""\$C\$)([1-9][0-9])(""\) Then.*)"
Const Pattern2 = "(.*ActiveSheet\.Range\(""C)([1-9][0-9])(""\)\.Interior\.ColorIndex = 2.*)"
'Deklaration der Variablen
Dim objArgs, objFSO, objInStream, objOutStream, objRegExp
Dim strInFilePath, strOutFilePath, arrFileContent
'Hauptprogramm
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
If ParseCommandLine(objArgs) Then
Set objInStream = objFSO.OpenTextFile(strInFilePath, ForReading, False)
arrFileContent = Split(objInStream.ReadAll, vbCrLf)
objInStream.Close
Set objRegExp = New RegExp
objRegExp.Global = True
objRegExp.IgnoreCase = True
Call ReplaceNumbers(arrFileContent, Pattern1)
Call ReplaceNumbers(arrFileContent, Pattern2)
Set objOutStream = objFSO.OpenTextFile(strOutFilePath, ForWriting, True)
objOutStream.Write Join(arrFileContent, vbCrLf)
objOutStream.Close
End If
'---------------------------------------------------------------------------
'Unterprogramme
'---------------------------------------------------------------------------
'///////////////////////////////////////////
'Ersetzungen ausführen
'///////////////////////////////////////////
Sub ReplaceNumbers(ByRef arrFileContent, ByRef strPattern)
Dim intLineCnt, objMatch
objRegExp.Pattern = strPattern
For intLineCnt = 0 To UBound(arrFileContent)
For Each objMatch In objRegExp.Execute(arrFileContent(intLineCnt))
If objMatch.SubMatches.Count > 0 Then
arrFileContent(intLineCnt) = objMatch.SubMatches(0) & CStr(CInt(objMatch.SubMatches(1)) + 40) & objMatch.SubMatches(2)
End If
Next
Next
End Sub
'///////////////////////////////////////////
'Befehlszeile einlesen und Name von Ein-
'und Ausgabedatei ermitteln
'///////////////////////////////////////////
Function ParseCommandLine(ByRef objArgs)
ParseCommandLine = False
If objArgs.Count > 0 Then
strInFilePath = objFSO.GetAbsolutePathName(objArgs(0))
If objFSO.FileExists(strInFilePath) Then
strOutFilePath = objFSO.BuildPath(objFSO.GetParentFolderName(strInFilePath), _
objFSO.GetBaseName(strInFilePath) _
& "_neu." _
& objFSO.GetExtensionName(strInFilePath))
ParseCommandLine = True
End If
End If
End Function
Den Code z.B. als
rexplace.vbs
speichern und dann mitcscript /nologo rexplace.vbs "Pfad-zur-zu-ändernden-Datei"
Das Script erzeugt eine neue Datei, deren Name sich aus <NameDerEingabedatei>+
_neu.
+<Erweiterung> zusammensetztGruß
Friemler
Einfach als Textdatei mit der Dateinamenserweiterung
[EDIT]
Ich habe gerade erste Deine PM gelesen.
.vbs
speichern und so wie oben beschrieben aufrufen. Der VBScript-Interpreter cscript.exe
ist auf jedem Windows-System vorhanden.[EDIT]
Ich habe gerade erste Deine PM gelesen.
- Wenn es Probleme gibt, bitte immer im Thread ein neues Posting erstellen.
- Bei mir läuft das Script ohne Fehler. Wenn das bei Dir nicht der Fall ist, liegt es an der Eingabedatei. Du müsstest dann mal einen Ausschnitt der realen Datei hier einstellen und dabei Codetags verwenden.