Soru Reg dosyasında otomatik Replace yapmak

Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Merhaba arkadaşlar;

C:\deneme\repair.reg dosyası içindeki satırı yada satırları otomatik olarak açmadan nasıl replace yaptırabilirim ?

command buton kullanarak...

repair.reg içerik
----------------------

..... abcdefgh .... ----» 123456

yardımcı arkadaşıma şimdiden Teşekkürler.
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Merhaba
Ek dosyayı denermisiniz?
https://www.dosyaupload.com/70ka
Kod:
Private Sub CommandButton1_Click()
Dim b As String
b = CreateObject("scripting.filesystemobject").Opentextfile(ThisWorkbook.Path & "\rgt.reg").readall

b = Replace(b, "Internet Explorer", "Firefox")

Open ThisWorkbook.Path & "\rgt.reg" For Output As #1
Print #1, b
Close #1
End Sub
 
Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Merhaba
Ek dosyayı denermisiniz?
https://www.dosyaupload.com/70ka
Kod:
Private Sub CommandButton1_Click()
Dim b As String
b = CreateObject("scripting.filesystemobject").Opentextfile(ThisWorkbook.Path & "\rgt.reg").readall

b = Replace(b, "Internet Explorer", "Firefox")

Open ThisWorkbook.Path & "\rgt.reg" For Output As #1
Print #1, b
Close #1
End Sub
Kod için teşekkür ederim . PLİNT
Şu an PC karşısında değilim . Bu akşam 21:00 civarında bakarım ... mesajı güncellerim.
 
Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
PLİNT;


Hocam çok teşekkür ederim.. Tamamdır.. Elinize Sağlık.

"Internet Explorer" --» kısmını dosya içinde kendisi arayıp-bulsa, çok daha fonksiyonel olacak sanırım...

inputbox ile sadece "Firefox" yazısını gireceğim.. kodu düzenlemeye çalışıyorum..

Teşekkürler.
 
Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Hocam Sizin göndermiş olduğunuz reg dosyasında sorunsuz çalıştı. Fakat benim reg dosyasında dosyayı bozuyor..
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Ek dosyadaki gibide olabilir
https://www.dosyaupload.com/foSu
Kod:
Private Sub CommandButton1_Click()
Dim b As String, d As String
Dim c As Object, konum As String
konum = ThisWorkbook.Path & "\rgt.reg"
 Open konum For Input As #1
Set c = CreateObject("ADODB.Stream")
Do Until EOF(1)
Line Input #1, b
sor = InputBox("satırda değişikliği yapıp onaylayın", "Değiştirilecek", b)
If sor <> "" Then b = Replace(b, b, sor)
If d = Empty Then
d = b
Else
d = d & vbCrLf & b
End If
Loop
 Close #1
c.Charset = "_autodetect"
c.Open
c.WriteText d
Kill konum
c.SaveToFile konum
End Sub
 
Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
PLİNT;

Sn. hocam; bu göndermiş olduğunuz kod, tek tek soruyor... benim yapmak istediğim işlem ; bir seferde değişecek olanların tümünü değiştirmek.

Şimdi "değişecek" olan kısmıda reg dosyasından okutacağız...

değişecek kısım genelde şu şekilde başlıyor ve bitiyor : \S-1-5-21-3370699419-3283540460-2533189847-1000\

* reg dosyasından değişecek kısmı alırken "*\S-1-5-21-*" bu veya benzer bir şekilde bu kısmı ( S-1-5-21-3370699419-3283540460-2533189847-1000) değişkene aldıracağız.

* akabinde de inputbox a ne girersem gireyim ; S-1-5-21-3370699419-3283540460-2533189847-1000 «--- bu kısmı değiştirecek.. Tüm dosyada yani..

bu şekilde... Teşekkürler.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Sanırım Windows'un registery ayarlarını değiştirmeye çalışıyorsunuz....

Önerim; ilk önce registery'nin yedeğini alın.... bir sıkıntı olursa, yedeğini kullanırsınız.

İkincisi; registery'i değiştirdikten sonra ne işlem yapıyorsanız, hele bir de bir başkasının bilgisayarında bu kodlar çalışıyorsa; işiniz bittikten sonra registery'i eski haline getirin.

.
 
Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Halit hocam. Evet registry
Sanırım Windows'un registery ayarlarını değiştirmeye çalışıyorsunuz....

Önerim; ilk önce registery'nin yedeğini alın.... bir sıkıntı olursa, yedeğini kullanırsınız.

İkincisi; registery'i değiştirdikten sonra ne işlem yapıyorsanız, hele bir de bir başkasının bilgisayarında bu kodlar çalışıyorsa; işiniz bittikten sonra registery'i eski haline getirin.

.

Evet registry de işlem yapıyoruz. Yedek durumu şu an için gerekli değil. Öncelikle zaten reg dosyası üzerinde çalışıyoruz. İlk önce etkilenen dosya olacak :). Diğer konu bu işlem kendi bilgisayarımda. Başka bilgisayarda değil. Teşekkürler.


* Bu bir programın klavye kısa yollarının ayarlarının tutulduğu kısımda değişiklik yapacak...
 
Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Telefonun azizliğine uğrayıp, Haluk hocam yerine, Halit hocam yazmışım ... özür..
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Aslında, sayın @PLİNT 'in 2 No'lu mesajındaki kodunda aşağıdaki kırmızıyla işaretlenmiş parametreleri ilave ederseniz, sorun çözülür gibi geldi bana ....

Rich (BB code):
b = CreateObject("scripting.filesystemobject").Opentextfile(ThisWorkbook.Path & "\rgt.reg", 1, False, -2).readall
.
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Merhaba
"Inputbox" la isteğinizi tam anlayamadım ama seçimde "Inputbox" ile yapılacak sanırım; buna göre aşağıdaki gibi olabilir.
Bulunan ilgili satır "Inputbox" da görünecektir,
Kod:
Private Sub CommandButton1_Click()
Dim b As String, d As String
Dim c As Object, konum As String
sor1 = InputBox("ARANACAK VERİYİ YAZIN VEYA YAPIŞTIRIN", "ARANACAK")
If sor1 = "" Then Exit Sub
konum = ThisWorkbook.Path & "\rgt.reg"
 Open konum For Input As #1
Set c = CreateObject("ADODB.Stream")
Do Until EOF(1)
Line Input #1, b
'---------------------------------------
If b Like "*" & sor1 & "*" Then sor = InputBox(b, "DEĞİŞTİRİLECEK")
'-----VEYA
'If b Like "*" & sor1 & "*" Then sor = InputBox("YENİ VERİYİ YAZIN", "DEĞİŞTİRİLECEK", b)
'------------------------------------------------
If sor <> "" Then b = Replace(b, b, sor)
If d = Empty Then
d = b
Else
d = d & vbCrLf & b
End If
Loop
Close #1
If sor = "" Then Set c = Nothing: Exit Sub
c.Charset = "_autodetect"
c.Open
c.WriteText d
Kill konum
c.SaveToFile konum
End Sub
Önceki kodları Haluk hocamın tavsiyesine göre denemek isterseniz şöyle olabilir ancak metni komple aldığı için benzer satır (yol vb.) olursa onuda değişecektir

Kod:
Private Sub CommandButton1_Click()
Dim b, sor
sor1 = InputBox("ARANACAK VERİYİ YAZIN VEYA YAPIŞTIRIN", "ARANACAK")
If sor1 = "" Then Exit Sub
b = CreateObject("scripting.filesystemobject").Opentextfile(ThisWorkbook.Path & "\rgt.reg", 1, False - 2).readall
If b Like "*" & sor1 & "*" Then
sor = InputBox("YENİ VERİYİ YAZIN", "DEĞİŞTİRİLECEK")
b = Replace(b, sor1, sor)
Else
MsgBox "bulunamadı"
Exit Sub
End If
Open ThisWorkbook.Path & "\rgt.reg" For Output As #1
Print #1, b
Close #1
End Sub
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Veya şunu da deneyebilirsiniz....

Kod:
Sub Test()
    'PLİNT + Haluk - 22/01/2020
    '
    Dim FSO As Object, RegFile As Object
    Dim strFindText As String, strNewText As String, newRegFile As String
    
    Set FSO = CreateObject("Scripting.FilesystemObject")
    Set RegFile = FSO.Opentextfile(ThisWorkbook.Path & "\rgt.reg", 1, False, -2)
    
    strFindText = InputBox("ARANACAK VERİYİ YAZIN VEYA YAPIŞTIRIN", "ARANACAK")
    If strFindText = "" Then Exit Sub
    
    strNewText = InputBox("YENİ VERİYİ YAZIN", "DEĞİŞTİRİLECEK")
    If strNewText = "" Then Exit Sub
    
    newRegFile = Replace(RegFile.ReadAll, strFindText, strNewText)
    
    Open ThisWorkbook.Path & "\rgt.reg" For Output As #1
        Print #1, newRegFile
    Close #1
    
    Set RegFile = Nothing
    Set FSO = Nothing
End Sub
.
 
Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
PLİNT ve Haluk ;

Hocam son göndermiş olduğunuz kod ile işlem tamamdır... çok ufak bir farkla...

Kod:
Private Sub CommandButton4_Click()
Dim b, sor
sor1 = "S-"
If sor1 = "" Then Exit Sub
b = CreateObject("scripting.filesystemobject").Opentextfile(ThisWorkbook.Path & "\rgt.reg", 1, False - 2).readall
If b Like "*\" & sor1 & "\*" Then
MsgBox b
sor = InputBox("YENİ VERİYİ YAZIN", "DEĞİŞTİRİLECEK")
b = Replace(b, sor1, sor)
Else
MsgBox "bulunamadı"
Exit Sub
End If
Open ThisWorkbook.Path & "\rgt.reg" For Output As #1
Print #1, b
Close #1
End Sub
burada sadece bir adet inputbox kullanıyoruz. oda yeni değeri girmek için. Eski değeri yani "sor1" değişkenini belittiğim kısmı okutabilirsek (inputbox olmadan yani) bu işlem tamamdır...

yardımlarınız için çok teşekkürler. & Saygılar.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Bahsettiğiniz reg dosyasını örnek olarak vermediğiniz için dosyanın yapısını ve sorunuzu tam olarak anlayamıyorum.

Örneğin sizin reg dosyanızda aşağıdaki gibi veriler varsa;

Kod:
"Group7"="S-1-5-80-2962817144-200689703-2266453665-3849882635-1986547430"
"Group8"="S-1-5-80-864916184-135290571-3087830041-1716922880-4237303741"
"Group9"="S-1-5-80-3256172449-2363790065-3617575471-4144056108-756904704"
"Group10"="S-1-5-80-3578261754-285310837-913589462-2834155770-667502746"
"Group11"="S-1-5-80-1373701630-3910968185-3388013410-2492353-937432973"
"Group12"="S-1-5-80-698886940-375981264-2691324669-2937073286-3841916615"
"Group13"="S-1-5-80-62724632-2456781206-3863850748-1496050881-1042387526"
"Group14"="S-1-5-80-879696042-2351668846-370232824-2524288904-4023536711"
"Group15"="S-1-5-80-2799810402-4136494038-1094338311-2889966999-3154753985"
"Group16"="S-1-5-80-917953661-2020045820-2727011118-2260243830-4032185929"
"Group17"="S-1-5-80-1802467488-1541022566-2033325545-854566965-652742428"
"Group18"="S-1-5-80-4176366874-305252471-2256717057-2714189771-3552532790"
"Group19"="S-1-5-80-1954729425-4294152082-187165618-318331177-3831297489"
"Group20"="S-1-5-80-4125092361-1567024937-842823819-2091237918-836075745"
"Group21"="S-1-5-80-1691538513-4084330536-1620899472-1113280783-3554754292"
"Group22"="S-1-5-80-4259241309-1822918763-1176128033-1339750638-3428293995"
"Group23"="S-1-5-80-4022436659-1090538466-1613889075-870485073-3428993833"
"Group24"="S-1-5-80-2009329905-444645132-2728249442-922493431-93864177"
"Group25"="S-1-5-80-1690854464-3758363787-3981977099-3843555589-1401248062"
"Group26"="S-1-5-80-3594706986-2537596223-181334840-1741483385-1351671666"
"Group27"="S-1-5-80-3750560858-172214265-3889451188-1914796615-4100997547"
"Group28"="S-1-5-80-1014140700-3308905587-3330345912-272242898-93311788"
"Group29"="S-1-2-0"
"Group30"="S-1-5-32-544"

siz, S-1-5-80- ile başlayan tüm string'leri, inputbox ile girilen başka bir string ile değiştirmek mi istiyorsunuz?

.
 
Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Bahsettiğiniz reg dosyasını örnek olarak vermediğiniz için dosyanın yapısını ve sorunuzu tam olarak anlayamıyorum.

Örneğin sizin reg dosyanızda aşağıdaki gibi veriler varsa;

Kod:
"Group7"="S-1-5-80-2962817144-200689703-2266453665-3849882635-1986547430"
"Group8"="S-1-5-80-864916184-135290571-3087830041-1716922880-4237303741"
"Group9"="S-1-5-80-3256172449-2363790065-3617575471-4144056108-756904704"
"Group10"="S-1-5-80-3578261754-285310837-913589462-2834155770-667502746"
"Group11"="S-1-5-80-1373701630-3910968185-3388013410-2492353-937432973"
"Group12"="S-1-5-80-698886940-375981264-2691324669-2937073286-3841916615"
"Group13"="S-1-5-80-62724632-2456781206-3863850748-1496050881-1042387526"
"Group14"="S-1-5-80-879696042-2351668846-370232824-2524288904-4023536711"
"Group15"="S-1-5-80-2799810402-4136494038-1094338311-2889966999-3154753985"
"Group16"="S-1-5-80-917953661-2020045820-2727011118-2260243830-4032185929"
"Group17"="S-1-5-80-1802467488-1541022566-2033325545-854566965-652742428"
"Group18"="S-1-5-80-4176366874-305252471-2256717057-2714189771-3552532790"
"Group19"="S-1-5-80-1954729425-4294152082-187165618-318331177-3831297489"
"Group20"="S-1-5-80-4125092361-1567024937-842823819-2091237918-836075745"
"Group21"="S-1-5-80-1691538513-4084330536-1620899472-1113280783-3554754292"
"Group22"="S-1-5-80-4259241309-1822918763-1176128033-1339750638-3428293995"
"Group23"="S-1-5-80-4022436659-1090538466-1613889075-870485073-3428993833"
"Group24"="S-1-5-80-2009329905-444645132-2728249442-922493431-93864177"
"Group25"="S-1-5-80-1690854464-3758363787-3981977099-3843555589-1401248062"
"Group26"="S-1-5-80-3594706986-2537596223-181334840-1741483385-1351671666"
"Group27"="S-1-5-80-3750560858-172214265-3889451188-1914796615-4100997547"
"Group28"="S-1-5-80-1014140700-3308905587-3330345912-272242898-93311788"
"Group29"="S-1-2-0"
"Group30"="S-1-5-32-544"

siz, S-1-5-80- ile başlayan tüm string'leri, inputbox ile girilen başka bir string ile değiştirmek mi istiyorsunuz?

.

Evet. Aynen öyle hocam... Normalde ben bu işlemi ; notepad açıp eski yeni olarak değiştiriyordum. Sonra makro ile de olabilir gibi geldi bana... kullanmış olduğum bir programım var. Bu da ona ek bi + daha olacak yani..

Bu şekilde hocam.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Yapı verdiğim örnekteki gibiyse, pattern'ı kendinize göre değiştirin ....

Tedbir olarak, rgt2.reg adında yeni bir reg dosyası oluşturulmuştur.

Kod:
Sub Test2()
    'PLİNT + Haluk - 22/01/2020
    '
    Dim FSO As Object, RegFile As Object, regExp As Object
    Dim strFindText As String, strNewText As String, newRegFile As String
    
    Set FSO = CreateObject("Scripting.FilesystemObject")
    Set RegFile = FSO.Opentextfile(ThisWorkbook.Path & "\rgt.reg", 1, False, -2)
    
    strNewText = InputBox("YENİ VERİYİ YAZIN", "DEĞİŞTİRİLECEK")
    If strNewText = "" Then Exit Sub
    
    Set regExp = CreateObject("VBscript.Regexp")
    regExp.Global = True
    regExp.IgnoreCase = True
    regExp.MultiLine = True
    
    regExp.Pattern = "(S-1-5-80(.+))"
    
    strRegFile = RegFile.ReadAll
    
    If regExp.Test(strRegFile) Then
        newRegFile = regExp.Replace(strRegFile, strNewText & Chr(34) & vbCrLf)
    End If
    
    Open ThisWorkbook.Path & "\rgt2.reg" For Output As #1
        Print #1, newRegFile
    Close #1
    
    Set regExp = Nothing
    Set RegFile = Nothing
    Set FSO = Nothing
End Sub
 
Son düzenleme:
Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Hocam ilgili dosyayı mailinize gönderdim.

inceleyebilirsiniz.. bu kod işlemi yapıyor. ama değişecek kısım haricindeki veriyi siliyor.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Yani; reg dosyasındaki satırlarda \Software\Tekla\Structures..... kısımları değişmeyecekse, aşağıdaki gibi deneyin;

Kod:
Sub Test3()
    'PLİNT + Haluk - 22/01/2020
    '
    Dim FSO As Object, RegFile As Object, regExp As Object
    Dim strFindText As String, strNewText As String, newRegFile As String
  
    Set FSO = CreateObject("Scripting.FilesystemObject")
    Set RegFile = FSO.Opentextfile(ThisWorkbook.Path & "\rgt.reg", 1, False, -2)
  
    strNewText = InputBox("YENİ VERİYİ YAZIN", "DEĞİŞTİRİLECEK")
    If strNewText = "" Then Exit Sub
  
    Set regExp = CreateObject("VBscript.Regexp")
    regExp.Global = True
    regExp.IgnoreCase = True
    regExp.MultiLine = True
  
    regExp.Pattern = "(S-1-5-21(.+)\Software)"
  
    strRegFile = RegFile.ReadAll
  
    If regExp.Test(strRegFile) Then
        newRegFile = regExp.Replace(strRegFile, strNewText)
    End If
  
    Open ThisWorkbook.Path & "\rgt2.reg" For Output As #1
        Print #1, newRegFile
    Close #1
  
    Set regExp = Nothing
    Set RegFile = Nothing
    Set FSO = Nothing
End Sub
.
 
Katılım
17 Haziran 2008
Mesajlar
1,836
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Haluk hocam çok teşekkür ediyorum. Tamamdır... elinize sağlık.
 
Üst