Açık olan bir sayfaya veri girişi

dgdizayn

Altın Üye
Katılım
7 Mart 2011
Mesajlar
138
Excel Vers. ve Dili
OFFİCE 2019 EN
Altın Üyelik Bitiş Tarihi
04-05-2028
Merhabalar,

Aşağıdaki kodlarla, kapalı olan bir excel dosyasını açıp istediğim sütunlara veri girişi yapabiliyorum. Hedef dosyayı tüm herkese açık paylaşım yapıp, herkes tarafından girilebilir yaptım. Bu kodlarla ise kapalı excel dosyasını aç, veriyi yaz sonra kaydetip kapat yerine açık olan excel dosyasına veriyi yaz sonra kapatmadan kaydet yap istiyorum. Bu konuda yardımcı olabilir misiniz.

Teşekkürler.

Kod:
Sub BulYaz()
    Dim wbA As Workbook ' açık olan dosya
    Dim wbB As Workbook ' uzak dosya
    Dim wsA As Worksheet ' açık olan dosyadaki sayfa
    Dim wsB As Worksheet ' uzak dosyadaki sayfa
    Dim kelime As String ' aranacak kelime
    Dim sutunNo As Integer ' yazılacak sütun numarası
    Dim sonuc As Range ' arama sonucu
    Dim satir As Long ' arama sonucu satır numarası
    Dim hedefHucresi As Range ' yazılacak hücre
    Sheets("EKRAN").Select
    Range("E2003").Value = Environ("USERNAME")
    Range("F2003").Value = "=NOW()"
    ' Açık olan dosyanın ataması
    Set wbA = ActiveWorkbook
    Set wsA = ActiveSheet
    ' Uzak dosyanın ataması
    Set wbB = Workbooks.Open("c:/Güncel.XLSX")
    Set wsB = wbB.Worksheets("Sheet1")
    ' Aranacak kelime ve yazılacak sütun numarasının alınması
    kelime = wsA.Range("B2003").Value
    sutunNo = wsA.Range("A2001").Value
    sutunNo1 = wsA.Range("A2002").Value
    sutunNo2 = wsA.Range("A2003").Value
    sutunNo3 = wsA.Range("A2005").Value

    ' Arama işlemi
    Set sonuc = wsB.Cells.Find(kelime, LookIn:=xlValues, LookAt:=xlWhole)
    ' Aranan kelime bulunduysa yazılacak hücrenin belirlenmesi
    If Not sonuc Is Nothing Then
    satir = sonuc.Row
    Set hedefHucresi = wsB.Cells(satir, sutunNo)
    Set hedefHucresi1 = wsB.Cells(satir, sutunNo1)
    Set hedefHucresi2 = wsB.Cells(satir, sutunNo2)
    Set hedefHucresi3 = wsB.Cells(satir, sutunNo3)

    ' Yazma işlemi
    hedefHucresi.Value = wsA.Range("D2003").Value
    hedefHucresi1.Value = wsA.Range("E2003").Value
    hedefHucresi2.Value = wsA.Range("F2003").Value
    hedefHucresi3.Value = wsA.Range("H2005").Value

    Else
    MsgBox "mesaj"
    wbB.Save
    wbB.Close
    wbA.Save
       Exit Sub
    End If
    ' Dosyaların kaydedilmesi ve kapatılması
    wbB.Save
    wbB.Close
    wbA.Save
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,874
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Aşağıdaki satırları silin
Kod:
    Set wbB = Workbooks.Open("c:/Güncel.XLSX")
    Set wsB = wbB.Worksheets("Sheet1")
Yerine aşağıdaki satırı kopyalayın.
Kod:
    Set wsB = Workbooks("Güncel.XLSX").Worksheets("Sheet1")
Dosyayı kapatmamak için de wbB.Close satırlarını silin.
 

dgdizayn

Altın Üye
Katılım
7 Mart 2011
Mesajlar
138
Excel Vers. ve Dili
OFFİCE 2019 EN
Altın Üyelik Bitiş Tarihi
04-05-2028
Hocam merhaba,

Güncel.xlsx i \\ile başlayan servera atsam herkes tarafından editlenebilir olsa. Kod nasıl değiştirmemiz gerekiyor.

Örneğin Güncel.XLSX yerine \\sunucu\Güncel.XLSX
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,874
Excel Vers. ve Dili
2019 Türkçe
Açık dosya ile çalışacaksanız dosya yolunu yazmayacaksınız.
Dosya Serverde kayıtlı olması bir şey değiştirmez.
 

dgdizayn

Altın Üye
Katılım
7 Mart 2011
Mesajlar
138
Excel Vers. ve Dili
OFFİCE 2019 EN
Altın Üyelik Bitiş Tarihi
04-05-2028
Muzaffer Ali hocam merhaba,

Sanırım ben tam anlatamadım kusura bakmayın. 10 kişilik bir ekip bende açık olan bir dosyaya bu kodlarla veri yazacaklar ama bu dosya hep açık olacak kapanmayacak.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,874
Excel Vers. ve Dili
2019 Türkçe
Bir bilgisayarda açık olan dosyada başka kullanıcılar güncelleme yapamaz diye biliyorum.
SQL, Ado yada Dao gibi yöntemlerle kapalı dosya açılmadan güncelleme yapılabilir fakat açık olan dosya güncellenmez. Ayrıca açık olan dosya kapatılırken kaydedilerek kapatılırsa o şekilde saklanır, yani diğer kullanıcıların güncellemeleri-kayıtları silinmiş olur.

Çözüm olarak SQL, Ado yada Dao gibi bir yöntem kullanarak kapalı dosyada güncelleme yapın.
Ayrıca dosyayı açmak gerekiyorsa kayıt yapmadan kapatmak gerekiyor ki diğer kullanıcıların yaptığı güncellemeler-kayıtlar silinmesin..
 

dgdizayn

Altın Üye
Katılım
7 Mart 2011
Mesajlar
138
Excel Vers. ve Dili
OFFİCE 2019 EN
Altın Üyelik Bitiş Tarihi
04-05-2028
Muzaffer hocam merhaba,

Aslında aşağıdaki kodlarla dosyayı açmadan yazabiliyorum. Bu kodları benim kodlara göre uyarlanamaz mı acaba.

Kod:
Sub WriteToB()
    Dim bWorkbook As Workbook
    Dim bSheet As Worksheet
    
    Set bWorkbook = Workbooks.Open("\\sunucu\güncel.xlsx") ' hedef dosyanın yolu buraya yazılmalı
    Set bSheet = bWorkbook.Sheets("Sheet1") ' hedef sayfanın ismi buraya yazılmalı
    
    bSheet.Range("A1").Value = "Veri" ' buradaki "Veri" yerine yazmak istediğiniz veriyi yazabilirsiniz
    
    bWorkbook.Save ' dosyayı kaydetmek için bu satır eklenir
    
End Sub
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,874
Excel Vers. ve Dili
2019 Türkçe
Bu kod ile dosya açılıp kayıt yapılıyor. Sonra kapatılıyor.

Ne yapmak istediğinizi örnek bir dosya ile gösterirseniz kod yazılabilir.
 

dgdizayn

Altın Üye
Katılım
7 Mart 2011
Mesajlar
138
Excel Vers. ve Dili
OFFİCE 2019 EN
Altın Üyelik Bitiş Tarihi
04-05-2028
Hocam,

Biraz daha detaylı anlatayım. "\\sunucu\güncel.xlsx" dosyası bende açıkken başkaları bu açık dosyasına ilk verdiğim kodlarla veri girişi yapsın istiyorum. İlk verdiğim kodlar "\\sunucu\güncel.xlsx" dosyası açıkken kodlar çalışmıyor. "\\sunucu\güncel.xlsx" dosyasını kapattığımda kodlar çalışıyor.

Ben "\\sunucu\güncel.xlsx" dosyanın açılıp içerisine veri yazılıp sonra kapatılsın istemiyorum. Açık olan "\\sunucu\güncel.xlsx" dosyasının içerisine veri yazsın kapatmadan kaydetsin istiyorum. En son gönderdiğim kodlar, "\\sunucu\güncel.xlsx" açıkken dosyayı açmadan kapatmadan veri yazabiliyor.

Not: En son gönderdiğim kodlar, dosyayı açmadan açık olanı üzerine yazıp kapatmıyor.

Umarım net anlatabilmişimdir. Teşekkürler.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,874
Excel Vers. ve Dili
2019 Türkçe
İşte bu istediğiniz şey olmuyor.
Ben de onu anlatmaya çalıştım.
 

dgdizayn

Altın Üye
Katılım
7 Mart 2011
Mesajlar
138
Excel Vers. ve Dili
OFFİCE 2019 EN
Altın Üyelik Bitiş Tarihi
04-05-2028
Muzaffer hocam,

Sizi yordum kusura bakmayın. Son birşey sorayım o zaman. En son gönderdiğim kodlar peki nasıl oluyor. O kodlar istediğim gibi oluyor.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,874
Excel Vers. ve Dili
2019 Türkçe
Hala demek istediğimi anlatamamışım.

1- Siz dosyayı açtınız.
2- Siz A1 hücresine Mehmet yazdınız. Kaydettiniz. Dosyayı kapatmadınız.
3- Yukarıdaki kod ile bir başka kullanıcı aynı dosyayı açıp A1 hücresine Ahmet yazdı. Kaydetti ve kapattı.
4- Sizin açık olan dosyanızdaki A1 hücresinde gördüğünüz Mehmet yazısı değişmez kalır. Ama kayıtlı dosyada Ahmet yazıyor.
5- Kaydetmeden kapatırsanız. A1 hücresinde Ahmet kayıtlı kalır.
6- Kaydedip kapatırsanız A1 de Mehmet kayıtlı olur.
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
587
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Dosya açıkken 2. kullanıcı salt okunur uyarısı almaz mı?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,874
Excel Vers. ve Dili
2019 Türkçe
Ben yardımcı olamıyorum. Kolay gelsin.
 
Üst