Ağdaki bir excel dosyadan veri okuma

Katılım
16 Mart 2021
Mesajlar
41
Excel Vers. ve Dili
365excel
aynı ağda laptop ve desktop 2 pc var. Desktop ta çalışan bir excel hücresini Laptopa nasıl çağırabilirim. Örnek; Dekstop ta çalışan A1hücresi dışardan sürekli veri geliyor sürekli değişiyor bunu laptoptaki excel hücreme eş zamanlı nasıl okuyabilirim;
Desktoptaki A1=Laptoptaki A1 olacak eş zamanlı
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ağdaki dosyanızı laptop üzerinden açabiliyor musunuz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Yazdıklarınızdan birşey anlamadım...

Sorum gayet netti.

Laptoptan boş bir excel dosyası üzerinden ağdaki bahsettiğiniz dosyayı açabiliyor musunuz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
O zaman Laptoptaki dosyanızda A1 hücresine = dedikten sonra diğer dosyayı geçip A1 hücresini seçerseniz bağlantı kurmuş olursunuz. Bu yöntem sanırım işinizi görecektir.
 
Katılım
16 Mart 2021
Mesajlar
41
Excel Vers. ve Dili
365excel
O zaman Laptoptaki dosyanızda A1 hücresine = dedikten sonra diğer dosyayı geçip A1 hücresini seçerseniz bağlantı kurmuş olursunuz. Bu yöntem sanırım işinizi görecektir.
@korhan Hocam bu yöntemle ağdaki dosyamın kaydedildiği son halini çekiyorum fakat ağdaki dosya çalışırken saniyelik değiştiği için benimde sürekli değişen hücre verisine ihtiyacım var.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Peki ağdaki dosyayı her değişimden sonra kaydettirseniz sorun çözülmez mi?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Saniyelik veri güncelleme işlemini nasıl yapıyorsunuz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tamam o zaman makronun son satırına aşağıdaki kodu ekleyip deneyiniz. Umarım olumlu sonuç alırsınız.

ActiveWorkbook.Save
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Saniye durumunu arttırma şansınız varsa onu deneyiniz. Kaydetme anında tekrar veri çekmeye çalışıyorsa çakışmaya sebep oluyordur.

Örnek veri çekme süresini 10 saniye olarak ayarlayıp deneyiniz.
 
Katılım
16 Mart 2021
Mesajlar
41
Excel Vers. ve Dili
365excel
Veriye anlık ihtiyacım var maalesef ve süreyi arttırsam da aynı hatayı alıyorum
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kendi ağımızda bir dosya oluşturdum.

Dosyada her saniyede A1 hücresine sayı üreten bir kod yazdım. Sürekli çalışıyor ve rastgele sayılar üretiyor. Sonra dosyayı kaydediyor.

Bu aşamadan sonra aşağıdaki kod ile kendi bilgisayarımdan ilgili dosyadan saniyelik verileri çekmeye çalıştım.

Ado açık dosyada sağlıklı çalışmadığı için dosyayı anlık kendi dosyamın bulunduğu klasöre kopyaladıktan sonra verileri çekebilmeyi sağladım.

Tabi bu işlemler aşamasında belli bir süre geçtiği için ne kadar anlık denilebilir bilemiyorum. Belki sizde denemek istersiniz.

Do-Loop döngüsü sürekli çalıştığı için donma sorunu yaşayabilirsiniz. Bilginiz olsun..

C++:
Option Explicit

Sub Import_Data()
    Dim My_Connection As Object, My_Recordset As Object, File_Name As String, My_File As String

    Do
        DoEvents
       
        Set My_Connection = VBA.CreateObject("AdoDb.Connection")
       
        File_Name = "Deneme.xlsm"
       
        My_File = "\\10.10.10\Desktop\" & File_Name
       
        VBA.CreateObject("Scripting.FileSystemObject").CopyFile My_File, ThisWorkbook.Path & "\" & File_Name
       
        My_Connection.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
        ThisWorkbook.Path & "\" & File_Name & ";Extended Properties=""Excel 12.0;Hdr=No"""
        
        Set My_Recordset = My_Connection.Execute("Select * From [Sayfa1$A1:A1]")
       
        Range("A1").CopyFromRecordset My_Recordset
       
        If My_Connection.State <> 0 Then My_Connection.Close
       
        Set My_Connection = Nothing
        Set My_Recordset = Nothing
       
        Application.Wait Now + TimeSerial(0, 0, 1)
    Loop
End Sub
 
Üst