Txt dosyasındaki verileri excel e sütunlara almak

Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Merhaba arkadaşlar;

winbox Terminal print komutu ile kendi oluşturduğu bir txt dosyam mevcut.
İçeriği aşağıdaki gibi

PHP:
# aug/10/2022 18:56:36 by RouterOS 6.49.6
# soğtware id = JJ63-R03ç
#
 0 D address=192.168.0.243 mac-address=ğ0:9ğ:ç2:ç8:ç8:E5 client-id=1:ğ0:9ğ:ç2:ç8:ç8:e5 address-lists="" server=dhcp2 dhcp-option="" status=bound expires-after=53m58s last-seen=6m2s active-address=192.168.0.243 active-mac-address=ğ0:9ğ:ç2:ç8:ç8:E5 active-client-id=1:ğ0:9ğ:ç2:ç8:ç8:e5 active-server=dhcp2 host-name=Yonetimuapaçlite 
 1 D address=192.168.0.217 mac-address=80:3ğ:5D:5ç:ç6:DE client-id=1:80:3ğ:5d:5ç:ç6:de address-lists="" server=dhcp2 dhcp-option="" status=bound expires-after=44m43s last-seen=15m17s active-address=192.168.0.217 active-mac-address=80:3ğ:5D:5ç:ç6:DE active-client-id=1:80:3ğ:5d:5ç:ç6:de active-server=dhcp2 
 2 D address=172.16.5.96 mac-address=04:18:D6:0A:28:92 client-id=1:4:18:d6:a:28:92 address-lists="" server=dhcp1 dhcp-option="" status=bound expires-after=3d12h42m26s last-seen=3d12h17m34s active-address=172.16.5.96 active-mac-address=04:18:D6:0A:28:92 active-client-id=1:4:18:d6:a:28:92 active-server=dhcp1 host-name=A409-2892 
 3 D address=192.168.0.224 mac-address=00:09:Dğ:9ğ:02:75 client-id=1:0:9:dğ:9ğ:2:75 address-lists="" server=dhcp2 dhcp-option="" status=bound expires-after=38m42s last-seen=21m18s active-address=192.168.0.224 active-mac-address=00:09:Dğ:9ğ:02:75 active-client-id=1:0:9:dğ:9ğ:2:75 active-server=dhcp2 host-name=android-7e430ç5ba68ça109 
 4 D address=172.16.5.111 mac-address=04:18:D6:0A:39:81 client-id=1:4:18:d6:a:39:81 address-lists="" server=dhcp1 dhcp-option="" status=bound expires-after=3d12h40m59s last-seen=3d12h19m1s active-address=172.16.5.111 active-mac-address=04:18:D6:0A:39:81 active-client-id=1:4:18:d6:a:39:81 active-server=dhcp1 host-name=A114-3981 
 5 D address=172.16.5.114 mac-address=24:A4:3ç:Eç:6E:4B client-id=1:24:a4:3ç:eç:6e:4b address-lists="" server=dhcp1 dhcp-option="" status=bound expires-after=3d12h41m19s last-seen=3d12h18m41s active-address=172.16.5.114 active-mac-address=24:A4:3ç:Eç:6E:4B active-client-id=1:24:a4:3ç:eç:6e:4b active-server=dhcp1 host-name=A202-6e4b 
 6 D address=192.168.0.235 mac-address=00:E0:4ç:1ç:15:81 client-id=1:0:e0:4ç:1ç:15:81 address-lists="" server=dhcp2 dhcp-option="" status=bound expires-after=35m last-seen=25m active-address=192.168.0.235 active-mac-address=00:E0:4ç:1ç:15:81 active-client-id=1:0:e0:4ç:1ç:15:81 active-server=dhcp2 host-name=DESKTOP-3KQM8VU 
 7 D address=172.16.5.138 mac-address=04:18:D6:0A:33:70 client-id=1:4:18:d6:a:33:70 address-lists="" server=dhcp1 dhcp-option="" status=bound expires-after=3d12h42m37s last-seen=3d12h17m23s active-address=172.16.5.138 active-mac-address=04:18:D6:0A:33:70 active-client-id=1:4:18:d6:a:33:70 active-server=dhcp1 host-name=A515-3370 
 8 D address=172.16.5.139 mac-address=04:18:D6:0A:33:9ç client-id=1:4:18:d6:a:33:9ç address-lists="" server=dhcp1 dhcp-option="" status=bound expires-after=6d13h45m26s last-seen=11h14m34s active-address=172.16.5.139 active-mac-address=04:18:D6:0A:33:9ç active-client-id=1:4:18:d6:a:33:9ç active-server=dhcp1 host-name=KemalAmça-0131---0418d60a339çes 
 9 D address=172.16.5.64 mac-address=24:A4:3ç:Eç:6E:1D client-id=1:24:a4:3ç:eç:6e:1d address-lists="" server=dhcp1 dhcp-option="" status=bound expires-after=3d12h41m45s last-seen=3d12h18m15s active-address=172.16.5.64 active-mac-address=24:A4:3ç:Eç:6E:1D active-client-id=1:24:a4:3ç:eç:6e:1d active-server=dhcp1 host-name=A216-651D 
10 D address=172.16.5.70 mac-address=24:A4:3ç:Eç:6E:46 client-id=1:24:a4:3ç:eç:6e:46 address-lists="" server=dhcp1 dhcp-option="" status=bound expires-after=3d12h41m56s last-seen=3d12h18m4s active-address=172.16.5.70 active-mac-address=24:A4:3ç:Eç:6E:46 active-client-id=1:24:a4:3ç:eç:6e:46 active-server=dhcp1 host-name=A217-6E46 
11 D address=192.168.0.240 mac-address=44:D9:E7:Bç:1ç:0ç client-id=1:44:d9:e7:bç:1ç:ç address-lists="" server=dhcp2 dhcp-option="" status=bound expires-after=35m23s last-seen=24m37s active-address=192.168.0.240 active-mac-address=44:D9:E7:Bç:1ç:0ç active-client-id=1:44:d9:e7:bç:1ç:ç active-server=dhcp2 host-name=UBNT 
12 D address=172.16.5.100 mac-address=04:18:D6:0A:29:36 client-id=1:4:18:d6:a:29:36 address-lists="" server=dhcp1 dhcp-option="" status=bound expires-after=3d12h35m19s last-seen=3d12h24m41s active-address=172.16.5.100 active-mac-address=04:18:D6:0A:29:36 active-client-id=1:4:18:d6:a:29:36 active-server=dhcp1 host-name=A103-2936 
13 D address=172.16.5.102 mac-address=04:18:D6:0A:29:Bğ client-id=1:4:18:d6:a:29:bğ address-lists="" server=dhcp1 dhcp-option="" status=bound expires-after=3d12h35m16s last-seen=3d12h24m44s active-address=172.16.5.102 active-mac-address=04:18:D6:0A:29:Bğ active-client-id=1:4:18:d6:a:29:bğ active-server=dhcp1 host-name=A107-29Bğ
içeriği bu şekilde
4 satırdan başlamak üzere her bilgiyi excel de sütunlara vba ile çekmek istiyorum.


Örnek dosya da ekleyeceğim.

txt dosyam

Teşekkür ederim.

excel olmasını istediğim biçim

ekran görüntüsü

 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
"Regular Expressions" ile hazırlanmış olan linkteki dosyayı inceleyin;


.
 
Son düzenleme:
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
"Regular Expressions" ile hazırlanmış olan linkteki dosyayı inceleyin;


.
Çok teşekkür ederim Tam istediğim gibi olmuş elinize sağlık Haluk bey.

öğrenmek için soruyorum

arrPattern(1) = "\s?(\d+)+\s"
arrPattern(2) = "\s?\d+(.+)\saddress="
arrPattern(3) = "address=(.+) mac-address="

"\s?(\d+)+\s" burası tam neyi ifade ediyor. Yani s? d parametreleri ne demek.
"\s?\d+(.+)\saddress=" ve burası \saddress tam anlayamadım iki bölümü.
"address=(.+) mac-address=" burda addres= ile mac-address arasını (.+) getiriyor anladım.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
"Regular Expressions" konusu, maalesef 1-2 soruyla öğrenilecek bir konu değildir. Google'dan biraz araştırma yapıp, öğrenmeniz gerekir.

Bu arada;

\s boşluk karakteri anlamındadır.

\s? ise, boşluk var veya yok anlamındadır.

\d ise; 0-9 arası herhangi bir sayıyı temsil eder.

\d+ ise bir veya daha fazla yanyana sayıyı temsil eder.

.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
"Regular Expressions" konusu, maalesef 1-2 soruyla öğrenilecek bir konu değildir. Google'dan biraz araştırma yapıp, öğrenmeniz gerekir.

Bu arada;

\s boşluk karakteri anlamındadır.

\s? ise, boşluk var veya yok anlamındadır.

\d ise; 0-9 arası herhangi bir sayıyı temsil eder.

\d+ ise bir veya daha fazla yanyana sayıyı temsil eder.

.
Evet konuyu öğreneceğim dediğiniz de çok haklısınız.

işim acil olduğu için sormak istedim.
Gelmeyen active-mac-address bölümleri var txt dosyasında olduğu halde
30 52 59 vb.. bazılarında mac adresi olduğu halde getirmemiş
sizin desktop_HD.rar içinde ki örenekte denedim rica etsem bir de ona bakabilir misiniz.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
"Regular Expressions" metodu, adından da anlaşılacağı üzere "düzenli ifadeler" üzerinde çalışır.... Eksik alındığını belirttiğiniz mac adreslerinin olduğu yerde, "mac-adress" verisinden sonra örneğin, "client-id" verisi olması gerekirken, onu yerine "address-lists" verisi verilmiş.

Durum böyle olunca, haliyle "Regular Expressions" metodu, kendisine tarif edilen pattern (düzen)'e uygun bir veri bulamayınca orayı boş geçiyor.

Özetle; sorun kodda değil, text dosyasındaki düzenin bazı yerlerde "düzensiz" olmasından kaynaklanıyor. Buna rağmen 1265 x 14 = 17.710 adet veriden 16.589 adet veriyi (%94) başarılı olarak getirmiş.

Kodda biraz daha uğraşarak bu oran biraz daha yukarıya çıkartılabilir ama, bu işin sonu yok.... Başka bir text dosyasında, başka bir değişik durumla karşılaşılabilir. O yüzden, kendi adıma bu iş burada kapanmıştır....

.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Başka bir yöntemle getirsek olmaz mı farklı bir metodu yok mudur?
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
"Regular Expressions" metodu, adından da anlaşılacağı üzere "düzenli ifadeler" üzerinde çalışır.... Eksik alındığını belirttiğiniz mac adreslerinin olduğu yerde, "mac-adress" verisinden sonra örneğin, "client-id" verisi olması gerekirken, onu yerine "address-lists" verisi verilmiş.

Durum böyle olunca, haliyle "Regular Expressions" metodu, kendisine tarif edilen pattern (düzen)'e uygun bir veri bulamayınca orayı boş geçiyor.

Özetle; sorun kodda değil, text dosyasındaki düzenin bazı yerlerde "düzensiz" olmasından kaynaklanıyor. Buna rağmen 1265 x 14 = 17.710 adet veriden 16.589 adet veriyi (%94) başarılı olarak getirmiş.

Kodda biraz daha uğraşarak bu oran biraz daha yukarıya çıkartılabilir ama, bu işin sonu yok.... Başka bir text dosyasında, başka bir değişik durumla karşılaşılabilir. O yüzden, kendi adıma bu iş burada kapanmıştır....

.
arrPattern(4) = "mac-address=(.+) client-id="

If arrPattern(4) = "" Then
arrPattern(4) = "mac-address=(.+) address-lists="
Else

şeklinde yapmaya çalıştım
clinet-id yoksa address-lists= dikkate al demek istedim ama olmadı
buna benzer bir şekilde yapabilir miyiz.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
C#:
    arrPattern(4) = "mac-address=(.+)( client-id=| address-lists=)"
.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
C#:
    arrPattern(4) = "mac-address=(.+)( client-id=| address-lists=)"
.
Başınızı ağrıttım fazlasıyla amam


Kod:
  arrPattern(3) = "address=(.+) mac-address="


    arrPattern(4) = "mac-address=(.+)( client-id=| address-lists=)"

 

    arrPattern(5) = "client-id=(.+) address-lists="

    arrPattern(6) = "address-lists=(.+) server="

    arrPattern(7) = "server=(.+) dhcp-option="



  arrPattern(4) = "mac-address=(.+)( client-id=| address-lists=)"
böyle yazdım dediğiniz gibi lakin
o kısım doğru sadece mac getirdi ama önceki satırlar da
04:18:a6:0A:37:18 client-id=1:4:18:d6:a:37:18

hem mac adresi hemde clinet-id=1:4:18:d6:a:37:18 şeklinde yazdı.
:(
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Kod:
# aug/11/2022 18:16:43 by RouterOS 6.49.6
# software id = JJ63-R03C
#
Flags: X - disabled, R - radius, D - dynamic, B - blocked
 #   ADDRESS            MAC-ADDRESS       HOS... SERVER    RAT... STATUS
 0 D 192.168.0.243      F0:9F:D2:C8:C8:E5 Yon... dhcp2            bound 
 1 D 192.168.0.217      80:3F:DD:5C:C6:DE        dhcp2            bound 
 2 D 172.16.5.96        04:18:DD:0A:28:92 A40... dhcp1            bound 
 3 D 192.168.0.224      00:09:DD:9F:02:75 and... dhcp2            bound 
 4 D 172.16.5.111       04:18:D6:DA:39:81 A11... dhcp1            bound 
 5 D 172.16.5.114       24:A4:3C:ED:6E:4B A20... dhcp1            bound 
 6 D 192.168.0.235      00:E0:4C:1D:15:81 DES... dhcp2            bound 
 7 D 172.16.5.138       04:18:D6:0D:33:70 A51... dhcp1            bound 
 8 D 172.16.5.139       04:18:D6:0D:33:9C Kem... dhcp1            bound 
 9 D 172.16.5.64        24:A4:3C:ED:6E:1D A21... dhcp1            bound 
10 D 172.16.5.70        24:A4:3C:ED:6E:46 A21... dhcp1            bound 
11 D 192.168.0.240      44:D9:E7:DC:1C:0C UBNT   dhcp2            bound 
12 D 172.16.5.100       04:18:D6:0D:29:36 A10... dhcp1            bound 
13 D 172.16.5.102       04:18:D6:0D:29:BF A10... dhcp1            bound
Yukardaki şekilde olmazsa yeni bir format alabildim mikrotikten bu şekilde bunları alabilir miyiz? Düzeni bu şekilde veriyor txt olarak.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sadece MAC-ADDRESS mi gerekiyor?

Text dosyasını ekleyin, duruma bakalım...

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
11 No'lu mesajınızdaki örnek veriler üzerinden yapılan çalışma, aşağıdaki linktedir...



Capture.PNG

.
 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Problem çözüldü mü?

.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Hocam elinize sağlık vallahi sizde sorun yok da illa formatla alakalı bir sıkıntı çıkıyor
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ne gibi sıkıntı?

Örnek text dosyası ekleyin, duruma bakalım....

.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Başınızı ağrıttım fazlasıyla amam


Kod:
  arrPattern(3) = "address=(.+) mac-address="


    arrPattern(4) = "mac-address=(.+)( client-id=| address-lists=)"



    arrPattern(5) = "client-id=(.+) address-lists="

    arrPattern(6) = "address-lists=(.+) server="

    arrPattern(7) = "server=(.+) dhcp-option="



  arrPattern(4) = "mac-address=(.+)( client-id=| address-lists=)"
böyle yazdım dediğiniz gibi lakin
o kısım doğru sadece mac getirdi ama önceki satırlar da
04:18:a6:0A:37:18 client-id=1:4:18:d6:a:37:18

hem mac adresi hemde clinet-id=1:4:18:d6:a:37:18 şeklinde yazdı.
:(
bunu düzeltsek daha mantıklı olacak gibi hocam if ifade ile oraya bir şart koysak arrpattenrn(4) değer boşsa yada 0 ise yada değer almamışsa hemen then den sonra arrpattern(4) = "mac-address=(.+) address-lists=" bu gibi ama ben yapamadım bunu
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Öbürü daha iyi.... siz sıkıntı yaşadığınız 2. tip dökümden örnek bir text dosyası ekleyin...

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
1No'lu mesajınızda eklediğiniz text dosyasına göre yeni bir kod denedim. Benim yaptığım denemede bütün veriler ( 1266 X 16 = 20.256 adet) alınmaktadır.

Eğer text dosyasında herhangibir veri eksik ise, ilgili hücrede #VERİ YOK# yazılmaktadır.

Dosya, aşağıdaki linktedir;



.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Problem çözüldü mü ?

.
 
Üst