Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Rechnen oder ersetzten hat jemand eine Idee

Frage Entwicklung Batch & Shell

Mitglied: peterchen1976

peterchen1976 (Level 1) - Jetzt verbinden

22.09.2014 um 16:18 Uhr, 935 Aufrufe, 5 Kommentare, 1 Danke

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
Mitglied: ITvortex
22.09.2014, aktualisiert um 16:23 Uhr
Bitte Code Tags hinzufügen <code></code(>)

lg
Bitte warten ..
Mitglied: Friemler
23.09.2014, aktualisiert um 00:36 Uhr
Hallo Peterchen,

das lässt sich leicht mit Regular Expressions lösen, hier in VBScript:
01.
Option Explicit 
02.
 
03.
 
04.
'Konstanten für Ein-/Ausgabe 
05.
Const ForReading   = 1 
06.
Const ForWriting   = 2 
07.
Const ForAppending = 8 
08.
 
09.
'Suchmuster 
10.
Const Pattern1 = "(.*If zelle\.Address = \(""\$C\$)([1-9][0-9])(""\) Then.*)" 
11.
Const Pattern2 = "(.*ActiveSheet\.Range\(""C)([1-9][0-9])(""\)\.Interior\.ColorIndex = 2.*)" 
12.
 
13.
 
14.
'Deklaration der Variablen 
15.
Dim objArgs, objFSO, objInStream, objOutStream, objRegExp 
16.
Dim strInFilePath, strOutFilePath, arrFileContent 
17.
 
18.
 
19.
'Hauptprogramm 
20.
Set objFSO  = CreateObject("Scripting.FileSystemObject") 
21.
Set objArgs = WScript.Arguments 
22.
 
23.
If ParseCommandLine(objArgs) Then 
24.
  Set objInStream = objFSO.OpenTextFile(strInFilePath, ForReading, False) 
25.
  arrFileContent  = Split(objInStream.ReadAll, vbCrLf) 
26.
  objInStream.Close 
27.
 
28.
  Set objRegExp        = New RegExp 
29.
  objRegExp.Global     = True 
30.
  objRegExp.IgnoreCase = True 
31.
 
32.
  Call ReplaceNumbers(arrFileContent, Pattern1) 
33.
  Call ReplaceNumbers(arrFileContent, Pattern2) 
34.
 
35.
  Set objOutStream = objFSO.OpenTextFile(strOutFilePath, ForWriting, True) 
36.
  objOutStream.Write Join(arrFileContent, vbCrLf) 
37.
  objOutStream.Close 
38.
End If 
39.
 
40.
 
41.
 
42.
'--------------------------------------------------------------------------- 
43.
'Unterprogramme 
44.
'--------------------------------------------------------------------------- 
45.
 
46.
'/////////////////////////////////////////// 
47.
'Ersetzungen ausführen 
48.
'/////////////////////////////////////////// 
49.
Sub ReplaceNumbers(ByRef arrFileContent, ByRef strPattern) 
50.
  Dim intLineCnt, objMatch 
51.
 
52.
  objRegExp.Pattern = strPattern 
53.
 
54.
  For intLineCnt = 0 To UBound(arrFileContent) 
55.
    For Each objMatch In objRegExp.Execute(arrFileContent(intLineCnt)) 
56.
      If objMatch.SubMatches.Count > 0 Then 
57.
        arrFileContent(intLineCnt) = objMatch.SubMatches(0) & CStr(CInt(objMatch.SubMatches(1)) + 40) & objMatch.SubMatches(2) 
58.
      End If 
59.
    Next 
60.
  Next 
61.
End Sub 
62.
 
63.
 
64.
'/////////////////////////////////////////// 
65.
'Befehlszeile einlesen und Name von Ein- 
66.
'und Ausgabedatei ermitteln 
67.
'/////////////////////////////////////////// 
68.
Function ParseCommandLine(ByRef objArgs) 
69.
  ParseCommandLine = False 
70.
 
71.
  If objArgs.Count > 0 Then 
72.
    strInFilePath = objFSO.GetAbsolutePathName(objArgs(0)) 
73.
 
74.
    If objFSO.FileExists(strInFilePath) Then 
75.
      strOutFilePath = objFSO.BuildPath(objFSO.GetParentFolderName(strInFilePath), _ 
76.
                                        objFSO.GetBaseName(strInFilePath) _ 
77.
                                        & "_neu." _ 
78.
                                        & objFSO.GetExtensionName(strInFilePath)) 
79.
      ParseCommandLine = True 
80.
    End If 
81.
  End If 
82.
End Function
Den Code z.B. als rexplace.vbs speichern und dann mit
cscript /nologo rexplace.vbs "Pfad-zur-zu-ändernden-Datei"
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>+_neu.+<Erweiterung> zusammensetzt

Gruß
Friemler
Bitte warten ..
Mitglied: peterchen1976
24.09.2014 um 08:02 Uhr
@ Friemler

Vielen Dank für Deine Hilfe brauche noch ein wenig Unterstützung worein muss ich es kopieren? Habe nur Visual Basic Express
Bitte warten ..
Mitglied: Friemler
24.09.2014, aktualisiert um 09:22 Uhr
Einfach als Textdatei mit der Dateinamenserweiterung .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.

  1. Wenn es Probleme gibt, bitte immer im Thread ein neues Posting erstellen.
  2. 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.
[/EDIT]
Bitte warten ..
Mitglied: peterchen1976
25.09.2014 um 12:21 Uhr
Hallo und vielen Dank für diese Lösung ....

Hat super geklappt...


Peter
Bitte warten ..
Ähnliche Inhalte
Windows Update
Abgelaufene und Ersetzte Updates - WSUS Intelligenz (6)

Frage von ofodag zum Thema Windows Update ...

Batch & Shell
gelöst IPTABLES Regeln ersetzten (4)

Frage von SpeakerST zum Thema Batch & Shell ...

Administrator.de Feedback
gelöst Bug? "m f g" (ohne Leerzeichen) wird auch in URL ersetzt (7)

Frage von emeriks zum Thema Administrator.de Feedback ...

Batch & Shell
gelöst In txt file an bestimmter Position zeichen ersetzen, Ideen ? (7)

Frage von buliwyf zum Thema Batch & Shell ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Windows 10
Windows 10 Fall Creators Update Fehler (14)

Frage von ZeroCool23 zum Thema Windows 10 ...

Router & Routing
gelöst Getrenntes Routing bei VoIP und Daten (12)

Frage von Hobbystern zum Thema Router & Routing ...