Konu: Excel dosya açma save etme
Bir excel klası (=> This ) için aşağıdaki kodları yapmak isterken dağıldım - çarşaf oldum da denebilinir -
Galiba excel ilk açtığında bir tmp yaratıyor - sonra onu silip esasını kaydediyor (Soykan'ın bir makalesinden öyle anladım)
Yapmak istediğimi kodların yanına yazdım:
DOSYA ADI İLE AÇ
DOSYA ADI GEÇİRİLMEMİŞ İSE DOSYA SOR ::GETFILE()
GETFILE BOŞ DÖNÜYORSA ANONİM DOSYA ADI VER
AÇILAN DOSYANIN SAYFALARINI DENETLE
AYNI İSİMLE SAYFA VAR İSE SONUNA I EKLE
SAYFAYI YENİ ADLA AÇ
DOSYAYI YENİ SAYFA İLE KAYDET ..mek ve bütün bunlar için
With oExcel As "Excel.Application"
m.defaultdir=SYS(5)+SYS(2003)
IF ISBLANK(This.Dosyad) && dosya adı yok getfile ile seçilebilinecek
WAIT NOWAIT WINDOW "dosya seçerseniz sayfa eklenecek"+CHR(13)+"ve seçili ad ile saklanacak";
+CHR(13)+CHR(13)+"seçmezseniz "+ADDBS(This.Dizinad)+This.dosyad+".xls dosyası oluşturulacak"
m.Dosyad=GETFILE("xls","excel dosyasI seçin","seç",1,"SEÇİM YAPMAZSANIZ YENİ DOSYA OLUŞTURULACAK")
IF ISBLANK(m.dosyad) && GETFILE() ile seçmedik
m.Dosyad=ADDBS(This.Dizinad)+"DosyaAdGirilmedi.xls"
m.Dosyad=CHRTRAN(m.dosyad,"öÖYüÜşŞğĞçÇ() ","oOIuUSsgGcC")
m.yenidosya=.t.
.Workbooks.Add
ELSE && && GETFILE() ile seçtik
IF FILE(m.Dosyad) && burada çarşafa dolanmaya başlıyorum,
&& aslında gerek yok gibi görünüyor ama dosyayı birtürlu bulamadım
.Workbooks.Open(m.dosyad)
m.yenidosya=.f.
ELSE
m.yenidosya=.t.
.Workbooks.Add
ENDI
ENDIF
This.Dosyad=m.dosyad
ELSE && dosya adı geçirilmiş
m.dosyad=ADDBS(This.Dizinad)+This.dosyad
IF FILE(m.Dosyad)
.Workbooks.Open(m.dosyad)
m.yenidosya=.f.
ELSE
m.yenidosya=.t.
.Workbooks.Add
ENDI
ENDIF
*
.Visible = .T.
IF ISBLANK(This.Sayfad)
m.Sayfad="X"
ELSE && sayfa adı geçirilmiş
m.Sayfad=This.Sayfad
ENDIF
m.Sayfad=CHRTRAN(m.Sayfad,"/&%#","*")
m.xi=1
m.sayfaek=" "
m.sayfadx=m.sayfad
DO WHIL m.xi < .ActiveWorkbook.Sheets.Count
IF ALLTRIM(UPPER(.ActiveWorkbook.Sheets[m.xi].Name))=ALLTRIM(UPPER(m.sayfad))
m.sayfaek=m.sayfaek+"I"
m.sayfad=LEFT(m.sayfadx,31-LEN(m.sayfaek))+m.sayfaek
m.xi=1
ELSE
m.xi=m.xi+1
ENDIF
ENDD
.ActiveWorkBook.sheets.Add
.ActiveWorkbook.ActiveSheet.Name = m.sayfad
sonrası excel işlemleri ve kaydetme bölümü
IF m.yenidosya
.ActiveWorkbook.SaveAs(ADDBS(tHis.Dizin)+This.dosyad, -4143)
ELSE
.ActiveWorkbook.Save(This.dosyad)
ENDIF
.ActiveWorkbook.Saved = .T.
ENDWITH
*beceremdiğim Soykan'a ait kodlar
*MyFile = This.dosyad
*MyFileJustName = Justfname(MyFile)
*IF m.yenidosya
* If File(MyFile)
* Erase (MyFile)
* Endif
* oExcel.ActiveWorkbook.SaveAs(MyFile)
*Else
* oExcel.ActiveWorkbook.Save()
*Endif
SET DIRE TO (m.defaultdir)