Konu: Excelde belirlenen hücrelere kilit koyma
Mevcut bir excel dosyasının sadece istedğim hücrelerine nasıl kilit koyabilirim?
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Kodlama ve Komutlar » Excelde belirlenen hücrelere kilit koyma
Mevcut bir excel dosyasının sadece istedğim hücrelerine nasıl kilit koyabilirim?
Tools
Protection
Protect Sheet
seçip şifre verirsen Default olarak tüm hücreler kilitlidir.
Seçili hücrelerin kilidini kaldırmak için
Format
Cells
Protection
Locked'tan işareti kaldırmak lazım.
İstersen önce tüm excel sayfasını seçip yukarıdaki işlemle tüm hücrelerden kilidi kaldırabilirsin.
Sonra da kilit koyacağın hücrelere aynı şekilde Locked kısmını işaretleyebilirsin.
Eğer bu işlemi Foxprodan yapmak istiyorsan maalesef bilmiyorum.
Ben foxprodan kodla yapmayı sormuştum.
Yine de cevap verdiğiniz için teşekkür ederim.
Ozcan in tarifini Excel uzerinde macro kaydi yaparak kodlarını alabilir daha sonra fox ta duzenleyebilirsin
Önce table den bilgileri Excele kaydedip sonra ilgili hücreyi kilitlemek istiyorum.
Tüm forum sakinlerine merhaba
excelapplication=createobject("Excel.Application")
excelapplication.Workbooks.Add()
xsheet=excelapplication.ActiveSheet
xsheet.Cells(1,1).Locked=.f. && Serbest bırakılacak alanlar
xsheet.Protect("Password")
sanırım bu işinizi görür
B-C sutunlari disinda kilitli:
#Define xlTop -4160
Local oExcel
oExcel = Createobject("Excel.Application")
With oExcel
.WorkBooks.Add
.Visible = .T.
VFP2Excel(_samples+'data\testdata.dbc',;
'select emp_id,first_name,last_name,'+;
'cast(EVL(birth_date,null) as d) as birth_date,'+;
'CAST(CHRTRAN(notes,CHR(13),"") as M) as Notes from employee',;
.ActiveWorkBook.ActiveSheet.Range('A1'))
* This part is cosmetic
With .ActiveWorkBook.ActiveSheet
.UsedRange.VerticalAlignment = xlTop && set all to top
With .Columns(5)
.ColumnWidth = 80 && 80 chars width
.WrapText = .T.
Endwith
.UsedRange.Columns.AutoFit
.UsedRange.Rows.AutoFit
Endwith
*** Protection
With .ActiveWorkBook.ActiveSheet
.UsedRange.Locked = .T.
.Range('B:C').Locked = .F.
.Protect('mypassword')
Endwith
Endwith
Function VFP2Excel
Lparameters tcDataSource, tcSQL, toRange
Local loConn As AdoDB.Connection, ;
loRS As AdoDB.Recordset,;
ix
loConn = Createobject("Adodb.connection")
loConn.ConnectionString = "Provider=VFPOLEDB;Data Source="+m.tcDataSource
loConn.Open()
loRS = loConn.Execute(m.tcSQL)
For ix=1 To loRS.Fields.Count
toRange.Offset(0,m.ix-1).Value = Proper(loRS.Fields(m.ix-1).Name)
toRange.Offset(0,m.ix-1).Font.Bold = .T.
Endfor
toRange.Offset(1,0).CopyFromRecordSet( loRS )
loRS.Close
loConn.Close
Endfunc
Çetin Bey,
.Range('B:C').Locked = .F. satırında "Ole error code 0x80070057: parametre hatalı" mesajı veriyor.
Çetin Üstadın yukarıda verdiği kod bende hata vermeden çalıştı.
Bende normal calisiyor. Turkce excel kullanmiyorum, belki de ondandir. Sununla dene:
sys(3006,1033)
Bende 2007 türkçe var.
Range sınıfının locked özelliği kurulamıyor hata mesajı geliyor.
Ama tüm sayfayı kilitleyebiliyorum. Tüm sayfada bir problem yok.
Şimdilik bilgileri girdikten sonra tüm sayfayı kilitliyorum.
fox4um » Kodlama ve Komutlar » Excelde belirlenen hücrelere kilit koyma