Bir dosyadaki Excel sheet i baska bir excel dosyasına import

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kiriko
Üye
Mesajlar: 11
Kayıt: 06 Tem 2007 02:27

Bir dosyadaki Excel sheet i baska bir excel dosyasına import

Mesaj gönderen kiriko »

Range olarak alarak copy paste yapabiliyorum bu kez. sayfa ayarı ve şekiller bozuluyor. amacım var olan bir sheeti aynı yada farklı bir excel belgesi içine kopyalamak . şayet sheet kopyalarsam sayfa ayarı ve buna benzer format özellikleri bozulmayacaktır. bu konuda bilgisi olan ? :roll:
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bir makro kaydı yaptım aşağıdaki kod oluştu...

Kod: Tümünü seç

    Sheets("Sayfa1").Select
    Sheets("Sayfa1").Copy After:=Sheets(3)
- Bu komut dizisi 3 sayfalık bir ( sayfa1,sayfa2,sayfa3 ) XLS dosyamdan 3 ncü sheet'den sonraya Sayfa1 sheet'inin yeni kopyasını çıkartmayı sağladı.

- Bunu Range belirlemeksizin variant değişkeninde uygularsan iş görecektir.
Resim
Resim ....Resim
kiriko
Üye
Mesajlar: 11
Kayıt: 06 Tem 2007 02:27

Delphiye implementasyonu

Mesaj gönderen kiriko »

tesekkur ederim ama

aşağıdaki kod parçacığı range copy yapmamı sagladı gonderdiğiniz kısımda vba macrosu benim asıl sorunum delphiye nasıl implemente edebilirim.


excel.Sheets['BENIMFORM'].Select;
DestRange := Excel.Range['A1','Z100'];
excel.Range['A1','Z100'].Copy(EmptyParam);
excel.Sheets['Sayfa2'].Select;
excel.Range['A1','Z100'].Select;
excel.activesheet.paste;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Hiç dikkat etmediniz mi ? Delphi'de yapılan OleAutomation kodlarının tümü aslında birer VBA Macro komutudur...

Kod: Tümünü seç

  Excel.Sheets['BENIMFORM'].Copy(After:=Excel.Sheets['BENIMFORM']);

// EDIT // Açtığın başlıkta bir başka Excel dosyasına demişsin onu görmemişim.

Her iki excel dosyası bağımsız WorkBook olarak açılırlar bunu bilirsin. Onların isimlerini veya indexlerini belirterek adresleme yapılır. Aynı kopyalama komutu aşağıdaki gibi işler...

Kod: Tümünü seç

Var
  Excel : OleVariant;
begin
  Excel := GetActiveOleObject('Excel.Application');
  Excel.WorkBooks['Kitap1'].Sheets['Sayfa1'].Copy(After:=Excel.WorkBooks['Kitap2'].Sheets['Sayfa1']);
  Excel := UnAssigned;
end;
Resim
Resim ....Resim
kiriko
Üye
Mesajlar: 11
Kayıt: 06 Tem 2007 02:27

Teşekkür

Mesaj gönderen kiriko »

Hocam vba olduğu için delphi syntaxına da uydurmak gerekiyor. bu nedenle (delphi implementasyonu ) nasıldır diye sordum ..
alttaki linktede

"http://msdn2.microsoft.com/en-us/librar ... s.80).aspx" aynı kullanıldığı yeni dikkatimi çekti.

Teşekkür ederim.
diseqc
Üye
Mesajlar: 48
Kayıt: 21 May 2009 04:03

Re:

Mesaj gönderen diseqc »

mrmarman yazdı: 06 Ağu 2007 06:24 Hiç dikkat etmediniz mi ? Delphi'de yapılan OleAutomation kodlarının tümü aslında birer VBA Macro komutudur...

Kod: Tümünü seç

  Excel.Sheets['BENIMFORM'].Copy(After:=Excel.Sheets['BENIMFORM']);

// EDIT // Açtığın başlıkta bir başka Excel dosyasına demişsin onu görmemişim.

Her iki excel dosyası bağımsız WorkBook olarak açılırlar bunu bilirsin. Onların isimlerini veya indexlerini belirterek adresleme yapılır. Aynı kopyalama komutu aşağıdaki gibi işler...

Kod: Tümünü seç

Var
  Excel : OleVariant;
begin
  Excel := GetActiveOleObject('Excel.Application');
  Excel.WorkBooks['Kitap1'].Sheets['Sayfa1'].Copy(After:=Excel.WorkBooks['Kitap2'].Sheets['Sayfa1']);
  Excel := UnAssigned;
end;

Kodu çalıştıramadım konu hakkında fikri olan her yardıma ihtiyacım var nasıl yapılıyor bu belgeler arası kopyalama yada taşıma işleri ?? yada import ederken direk var olan bir excel belgesinin içine yeni bir sayfa olarak imort etsem oda olur.
diseqc
Üye
Mesajlar: 48
Kayıt: 21 May 2009 04:03

Re: Bir dosyadaki Excel sheet i baska bir excel dosyasına import

Mesaj gönderen diseqc »

Delphi de bir execel belgesinde ki sayfayı başka bir excel belgesine taşımanın kodunu çalıştırdım belki birinin işine yarar
procedure TForm1.RzBitBtn15Click(Sender: TObject);
var
excel:variant;
begin

Excel := GetActiveOleObject('Excel.Application');
excel.Workbooks.open('C:\d\A.xlsx');
excel.Workbooks.open('C:\d\f.xlsx');
excel.Visible:=True;

Excel.WorkBooks[1].Sheets[1].Copy(After:=Excel.WorkBooks[2].Sheets[excel.Sheets.Count]);
end;
Cevapla