Excel secili satır - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: Excel secili satır (/showthread.php?tid=3375) |
Excel secili satır - ahmetb - 26-02-2019 Merhaba, Excelden sadece secili satırları verilerini almak istiyorum. Ama bunu bir türlü çözemedim. Excelden seçili satırları nasıl alabilirim? for I := 0 to OpenDialog.Files.Count - 1 do begin Excel := CreateOleObject('Excel.Application'); Book := Excel.WorkBooks.Open(OpenDialog.Files[I]); Sheet := Book.WorkSheets['Master']; // Sayfa adı SonSatir := Excel.ActiveSheet.Cells.SpecialCells(ExcelSatirAdet, EmptyParam).Row; try for j := 2 to SonSatir do // Satrırdan başla begin // if Excel.ActiveWindow.SelectedSheets then if Sheet[j].Select then begin Excel secili satır - mrmarman - 26-02-2019 Open yaptığınız Excel dökümanı hücreleri seçili mi geliyor? Aktif Excel'i, ardından da WorkSheet'i OleVariant değişkene alıp oradan yürüyün derim. yani GetActiveOleObject('Excel.Application'); Excel secili satır - ahmetb - 26-02-2019 Excel açık, kaydedip sonra satırı seçiyorum, bu seçtiğim satırları almak istiyorum. Excel secili satır - mrmarman - 26-02-2019 tamamdır createoleobject demeyin, onun yerine dediğim şekilde getactiveoleobject deyin. kelime anlamına bakın, create dediğinizde yeni bir excel, getactive dediğinizde açık olan excel sayfasına işaret ediliyor. try except içinde yaparsanız ola ki excel açık değildir yakalar gereğini yaparsınız. Cvp: Excel secili satır - ahmetb - 26-02-2019 Hocam, excelde satırları seçiyorum fakat yinede exceldeki tüm satırı alıyor Ekledim: Excel :=GetActiveOleObject('Excel.Application'); for I := 0 to OpenDialog.Files.Count - 1 do begin Excel :=GetActiveOleObject('Excel.Application'); Book := Excel.WorkBooks.Open(OpenDialog.Files[I]); Sheet := Book.WorkSheets['Master']; // Sayfa adı SonSatir := Excel.ActiveSheet.Cells.SpecialCells(ExcelSatirAdet, EmptyParam).Row; try for j := 1 to SonSatir do // Satrırdan başla begin if Sheet.Cells[j, 3].Select= true then Excel secili satır - mrmarman - 26-02-2019 opendialog falan yeni open edilecek dosyalar için. Siz açık olan excel dökümanına odaklanacaktınız... Bu döngü fazlalık ve engel, book := open olan fazlalık ve engel Odaklanmanız gereken aktif excel dökümanına kakafoni katıyordur. Book := Excel.ActiveWorkBook; şeklinde aktif dökümanın workbook'una onun da WorkSheet'ine odaklanacaksınız. Cvp: Excel secili satır - cexx - 26-02-2019 (26-02-2019, Saat: 17:15)ahmetb Adlı Kullanıcıdan Alıntı: Merhaba, Yapmak istediginiz is tam olarak nedir kod örneginizden anlamadim ama istediginiz her seyi excel tarafinda macro yazarak da yapabilirsiniz. Bu daha efektif ve kullanisli olabilir. Ornegin istediginiz veriler secili hucrelere göre bir veritabanina yazilabilir sonrasinda yolunuza delphi ile devam edebilirsiniz. Hatta delphi kodunu excel tarafindan tetikleyebilirsiniz de. Baska bir alternatif de yine macro ile secili hucrelerin satirlarinda belirli bir kolona ornegin X isareti ekler daha sonra delphi tarafindan secili satirlar degil de falanca kolonda x isareti olan satirlar seklinde okuyabilirsiniz. bu islem sonrasi kalinti istemiyorsaniz x isaretlerini okuma esnasinda silebilirsiniz. Cvp: Excel secili satır - CesuR - 27-02-2019 Bilgiyi nereye kopyalamak istediğinizide belirtirseniz daha anlaşılır olur. Örneğin bir sütünü başka bir sütüna kopyalama ExcelApp.ActiveSheet.Used.Range.Copy; ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy; ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial; ExcelApp.ActiveSheet.Range.PasteSpecial; Ayrıca excel 'de 1) Belirttiğiniz satır ve sütündaki veriyi şöyle seçebilirsiniz. Excel.ActiveSheet.Cells[1,1].Select; 2) Excelde üzerinde bulunduğunuz satır numarasına şöyle ulaşabilirsiniz. Excel.ActiveCell.Row; 3)Belli bir satırı kopyalamak için şöyle bir kod gördüm. Ama test etmedim ExcelApp.ActiveSheet.Rows[2].copy; 4)! İncele ! Belli bir aralıkta satırları seçip silmek için şöyle bir örnek verilmiş. Bu örnekteki delete ifadeleri yerine copy varmı deneyin. Belki size kılavuz olur. MsExcelWorkSheet1.ActiveSheet.Rows[IntToStr(StartRow)+':'+IntToStr(EndRow)].Select; MsExcelWorkSheet1.ActiveSheet.Rows[IntToStr(StartRow)+':'+IntToStr(EndRow)].Delete; Birde şöyle bir örnek gördüm , ama sizin istediğiniz mi emin değilim.. //Excel sayfasından seçimli kopyalama yapmak için.Sadece değerler yapıştırılır. Function ExcelPasteValuesOnly(Excel : Variant; ExcelFirstRow : Integer; ExcelFirstCol : Integer; ExcelLastRow : Integer; ExcelLastCol : Integer): Boolean; Begin Result := True; try If ExcelVersion(Excel) = '8.0' Then Begin If Not ExcelSelectRange( Excel, ExcelFirstRow, ExcelFirstCol, ExcelLastRow, ExcelLastCol) Then Begin Result := False; ShowMessage('Unable to select the range to paste as values.'); Exit; End; Excel.Selection.Copy; Excel.Selection.PasteSpecial(xlValues); Excel.Application.CutCopyMode := False; End Else Begin Excel.Range( ExcelColIntToStr(ExcelFirstCol)+IntToStr(ExcelFirstRow)+ ':'+ ExcelColIntToStr(ExcelLastCol)+IntToStr(ExcelLastRow)).Select; Excel.Selection.Copy; Excel.Selection.PasteSpecial(xlValues); Excel.Application.CutCopyMode := False; Excel.Selection.Replace('#N/A','0'); End; except ShowMessage('Unable to paste range as values'); Result := False; end; End; Cvp: Excel secili satır - cexx - 27-02-2019 (27-02-2019, Saat: 01:48)CesuR Adlı Kullanıcıdan Alıntı: Bilgiyi nereye kopyalamak istediğinizide belirtirseniz daha anlaşılır olur. Cesur merhaba, Ahmetin sordugu soru şu: Excelde bir satirin secili oldugunu nasil anlarim? Bu amacla şu kodu kullanmis: "if Sheet.Cells[j, 3].Select= true" Ama bu sorgu secili olsun olmasin her satir icin true dönuyormus. Yani secili olan satirlari bu sorgu ile yakalayamamis. (26-02-2019, Saat: 19:30)ahmetb Adlı Kullanıcıdan Alıntı: if Sheet.Cells[j, 3].Select= true then[/ars] Sheet.Cells[j, 3].Select= true zaten o satiri secili hale getiriyor. tum satirlarin donmesi gayet normal. Bir satirin secili olup olmadigini gosteren bir property yok. Secili alan icinde olup olmadigini anlayabilirsin ama onda da kontrola basarak birbirine komsu olmayan satirlar sectiginde dogru calisirmi denemeden bilemedim. Cvp: Excel secili satır - esistem - 27-02-2019 Selam; aşağıdaki linkte sanırım aradığınız çözüm olabilir, bi inceleyin isterseniz. Kullanıcının seçtiği aralığı StringGrid'e aktarır diyor. http://www.delphigroups.info/2/59/456881.html Test ettim çalışıyor, yalnız şöyle bir sorun var, misal A1;C3 aralığını seçtiniz, bunun yanında crtl basıp E4 ve D2 hücrelerinide seçtiniz, kod sadece A1;C3 aralığını aktarıyor, harici seçili hücreleri almıyor. |