• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Telefondan Saat Çekme

  • Konbuyu başlatan Konbuyu başlatan ÆSir
  • Başlangıç tarihi Başlangıç tarihi
Katılım
15 Ocak 2018
Mesajlar
225
Excel Vers. ve Dili
2015 TR
Mesai maaş hesaplama için net maaşı yazacaksın tarihi telefonun sisteminden alacak hangi gün kaç saat çalışıldıysa yazılacak excel otomatik olarak hesaplayacak. Böyle bir şey nasıl yaparız?

Her gün bir hücreye telefondan tarihi otomatik çekecek. Günlük çalışma saatini manuel yazacağız. Farklı hücrede ise o ay toplam kaç saat fazla mesai varmış onu hesaplayacak. Nasıl çıkartırız bunu?
 
Böyle birşey mümkünse bile, Excelin telefon ile konuşabilmesi için yazılım gerektirecektir. Sistem saatine güvensizlik varsa; internetten kolayca güncel saati almak varken neden telefon?
 
Peki internet saati ile bunu nasıl mümkün kılabiliriz?
 
Bunun için çok alternatif var. Örneğin;

C#:
Sub Test()
    Dim req As Object, doc As Object
    
    Set req = CreateObject("MSXML2.XMLHTTP.6.0")
    
    req.Open "GET", "https://saatkac.info.tr/", False
    req.send
    
    Set doc = CreateObject("HTMLFile")
    
    doc.body.innerhtml = req.responseText
    
    MsgBox doc.getelementbyid("twd").innertext
End Sub
 
Eğer Zeki Beyin önerisindeki "twd" id ile sonuç alamazsanız, "clock0" veya "favt5" id'lerini deneyebilirsiniz.

.
 
@beab05 tarafından önerilen siteden "JSon" tipindeki verilerin içinden saat bilgisini almak için de, ya alınan "JSon" verilerini ayrıştıracak bir Class kullanmanız lazım, ya da eğer 32 bit Excel kullanıyorsanız, VBA içinde "JavaScript" kullanarak "UnixTime" verisini alıp, bunu "GMT" verisine dönüştürmeniz lazım.

Gördüğüm kadarıyla, 64 Bit Excel versiyonlarında "JavaScript" kullanmak genellikle problemli oluyor. O zaman, en iyisi ekli dosyada belirtildiği gibi "Regular Expressions" kullanarak, söz konusu UnixTime olarak alınan "DateTime" bilgisini, +3 saat saat farkını ilave ederek, anlık saat bilgisini alabiliriz. Bu teknikle, hem 32 Bit hem de 64 Bit Excel'de sorun çıkacağını sanmıyorum.

Bu işlerle ilgili kodlar, ekli dosyadadır...

.
 

Ekli dosyalar

Selam;

"Unixtime" key value yerine direkt "dateTime" key value alınsa?? Çünkü zaten direkt +3 olarak veriyor ve convert etmeye de gerek kalmaz.

Ya da regexp yerine instr, mid vs.vs ile responseText içinden ilgili kısım alınsa? Regexpten daha ekonomik olabilir sanki???
 
Merhaba @beab05 ;

Sonuçta JSon olarak dönen ResponseText'ten işe yarayan ilgili veriyi herhangibir yöntemle alarak, işledikten sonra "Time" verisini elde edebiliriz tabii. Dosyada, UnixTime verisinden GMT verisine dönüşümü göstermek için tercih ettim.

"Time" verisini elde etmek için RegEx yerine bahsettiğiniz türden string manipulasyonları da kullanılabilir ama, bu tür işlerde RegEx kullanmak bana daha kolay geliyor sadece, özel bir nedeni yok.

.
 
Tabii ki Regexp de sizin tercihinizdir.. Elinize sağlık...
 
Geri
Üst