Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 835 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Outlook & Mail
Outlook Ablage - habt ihr eine Idee? (6)

Frage von MegaGiga zum Thema Outlook & Mail ...

Router & Routing
gelöst Hat jemand schon einen Ubiquiti EdgeRouter im produktiven Einsatz? (6)

Frage von Kuemmel zum Thema Router & Routing ...

Datenbanken
DBSave - Jemand mit eigenen Erfahrungen? (4)

Frage von keine-ahnung zum Thema Datenbanken ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...