Txt dosyasındaki verileri excel e sütunlara almak

Katılım
14 Ocak 2005
Mesajlar
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
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,398
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
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
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,398
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
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
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,398
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
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
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
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
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,398
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
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
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
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
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,398
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,398
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,398
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
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
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,398
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
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
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,398
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,398
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,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Problem çözüldü mü ?

.
 
Üst