• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kapalı bir Excelden veri çekmek

Katılım
25 Ağustos 2011
Mesajlar
12
Excel Vers. ve Dili
2003 ingilizce
Merhabalar,

Öncelikle bu tip bir işlemin benzerini daha önce yapmadım ve konu hakkında pek bilgim yok.

Şu konuda yardımınızı rica ediyorum,

aylık yayınlanan bir rapor var ve her ay bu raporun belli sayfalarından belli sütunları çekmem gerekiyor.

mesela,3. sayfadan, B C E G sütunlarını çekmem gerekiyor.

kapalı olan bir dosyadan,açık olan bir dosyaya 4 adet sütun çekmek istiyorum.

teşekkürler.
 
Forumda arama yaparsanız çokça örneklerini bulacaksınızdır.
 
Genel olarak baktım fakat sadece belirli bir hücrenin kopyalanmasını gördüm.

Direk olarak C4 değil de bana c sütununun kopyalanması lazım.Fakat bu bilgiyi göremedim.
 
Bakmakla görmek arasında büyük bir fark var. Göz ucuyla üstün körü bir şekilde bakmayın, dikkatli ve detaylıca konuları incelerseniz sadece bu istediğiniz için değil, diğer başka sorunlarınız için de daha soru sormadan yanıt almış olacaksınız.

Yine de bulamazsanız dosyanızı ekleyin bakalım.
 
Merhabalar tekrardan,

Gereksiz yere ortamı germenin anlamı olmayacağını düşünüyorum. Basit bir paylaşım isteğinde bulundum ve baktığımı söyledim, lakin daha önce karşılaşmış olabileceğiniz örneklerde olduğu gibi bakmadan yazmış olabileceğimi düşündüğünüzü düşünüyorum.
 
Neden gerildiniz ? :dusun:
Ben ortamı gerici bir söz sarf ettiğimi düşünmüyorum, size öyle gelmiş olabilir. Ortamı germek için burada bulunuyor değilim. Bundan adınız kadar emin olabilirsiniz.
Ben her üyeye, her konuya farklı bakarım. Öncekiler dediğiniz kişiler sizin sorunuzda beni ilgilendirmez. Mesajımı öncekilere atfen yazmam, direkt size yazarım.

Altını çizdiğiniz kelimenin, önceki mesajımda belirttiğim gibi hakkını vermek gerektiğini düşünenlerdenim.
Bu nedenle bakmakla görmek arasında ne kadar fark olduğunu iyi bilirim. Kendimce de herkesin buna dikkat etmesini isterim. Beni yanlış anlamanızı istemem.
Burada üyelere yardımcı olmak isteyen hemen herkesin bir işi ya da bir günlük sorumlulukları var, onlardan vakit buldukça sizlere yardımcı olmaya çalışıyorlar.
Daha önce defalarca işlenen bir konu için tekrar tekrar konu açılması ve aynı kodların tekrar yazılması beni rahatsız ediyor. Söylemek istediğim budur.
Bu nedenle de yardım istenen konu ile ilgili dikkatlice araştırma yapılmasını ve ne kadar az vakit harcanırsa bunun herkes için daha hayırlı olacağını düşünüyorum.

Eğer çözüm bulmamazsanız dosyanızı ekleyin seve seve yardımcı olurum.
 
Tekrardan selamlar,

Yanlış anlamış olabilirsiniz lakin ben sizin sadece tutumunuza istianaden öyle bir yazı yazdım.
Evet ben de çalışıyorum, evet siz de çalışıyorsunuz ve muhtemelen bu işi de gönüllü olarak yapıyorsunuz.Takdir ediyorum ve bu davranışınızı da destekliyorum.

Lakin dediğim gibi, 1000 sayfadan fazla bir geçmişe sahip bir forumda,takdir edersiniz ki spesifik bir bilgiye ulaşmak hiç kolay değil.Sorduğum örneğin 1 satırlık cevabının olması da (benim düşünceme göre), sayfalar boyunca oluşan forumu, çalışma şartlarında didik didik etmektense yardımsever insanların bilgisine sunup,onlardan yardım beklemeyi tercih ettim.

Sizden haklısınız, ama ben de haklı olduğum düşünüyorum.

Teşekkürler tekrar,

Kolay gelsin.
 
Sizi de anlıyorum. Haklı haksız tartışması içine kesinlikle girmem, bu doğru olmaz. Herkes kendine göre haklıdır ama bana mı çok basit geliyor bilmiyorum, sitedeki 1000 sayfada aramak yerine kapalı dosya uygulamaları başlığı var oraya bakabilirsiniz ya da ben herhangi bir sorunu google'a yazdığımda şak diye yanıtını alıyorum. Buradaki sıkıntı: bence araştırma yapan kişinin doğru şekilde araştırma yapmamasından kaynaklanıyor. Ben bu konuda oldukça geniş düşünüyorum. Belki de bu yüzden aradığım bilgiye hızlı bir şekilde erişebiliyorum.

Her neyse, artık sorununuzu çözme zamanı geldi diye düşünüyorum.
Örnek dosyalarınızı eklerseniz birkaç farklı yöntemle size yardımcı olabilirim.
 
Peki madem şöyle yapalım, ben derdimi anlatayım.

Aylık yayınlanan bir rapor var.Bu raporun bir kısımnı ekte bulabilirsiniz.

Raporda yapmak istediklerim:

1.Rapor1 deki b c f j sütunlarını alıp rapor 2 deki gördüğünüz a b c d sütunlarına tasımak ıstıyorum.

2.Rapor2 ye taşıdıktan sonra, rapor2 deki j kolonunu a kolonu ile eşleştirip sonucu (yani K kolonunu) e kolonuna yazmasını istiyorum.

Umarım anlatabilmişimdir.

Teşekkürler,

Kolay gelsin.
 

Ekli dosyalar

İki dosyayı da bir klasör içine alın. Sonra Rapor1 dosyasınına bir Modüle ilave edin ve kodları yapıştırıp F5'e basın.

Kod:
Sub Diger_Dosyaya_Kopyala()
    Range("B4:C46,F4:F46,J4:J46").Copy
    Workbooks.Open Filename:=ThisWorkbook.Path & "\Rapor2.xlsx"
    Windows("Rapor2.xlsx").Activate
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("E32").Select
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range("E32:E44")
    Range("E32:E44").Select
    Range("A1:E44").Borders.LineStyle = 1
End Sub

Eğer Rapor2 dosyası açıkken işlem Rapor1 den veri alacaksanız da kodları bu şekilde revize edebilirsiniz;

Kod:
Sub Diger_Dosyadan_Al()
    Application.ScreenUpdating = False
    Workbooks.Open Filename:=ThisWorkbook.Path & "\Rapor1.xlsx"
    Windows("Rapor1.xlsx").Activate
    Range("B4:C46,F4:F46,J4:J46").Copy
    Windows("Rapor2.xlsx").Activate
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("E32").Select
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range("E32:E44")
    Range("E32:E44").Select
    Range("A1:E44").Borders.LineStyle = 1
    Windows("Rapor1.xlsx").Close False
    Application.ScreenUpdating = True
End Sub
 
Son düzenleme:
Öncelikle teşekkürler,çok işime yaradı ve olumlu sonuç aldım.

Lakin şu yapmak istediğim olmadı.

rapor2 deki j kolonunu a kolonu ile eşleştirip sonucu (yani K kolonunu) e kolonuna yazmasını istiyorum.
 
E sütununda hazırda =DÜŞEYARA(A2;J:K;2;0) formülü mevcut olduğu için ona hiç karışmadım.
 
Tamamdır, doğru diyorsunuz aynen öyle.

Çok teşekkür ederim paylaşım ve anlatım için.
 
Konu hakkında acil bir bilgiye ihtiyacım var.

Bu makronun içine,yeni dosyaya kopyaladığında 2 sütuna filtreleme yaptırmak istiyorum.

Yardım edecek bir arkadaş var mı acilen?

Özel mesaj atabilirseniz sevinirim.
 
Makro kaydet yöntemi ile makroyu oluşturup diğer kodun sonuna ekleyebilirsiniz.
 
Makro kaydet yöntemi ile makroyu oluşturup diğer kodun sonuna ekleyebilirsiniz.

Şimdi anlamadığım kısmı şöyle anlatayım;

Ben bu aşağıdaki makroyu ilk dosyada çalıştırdığımda bana 2. dosyada istediklerimi net bir şekilde getiriyor.

Sub Diger_Dosyaya_Kopyala()
Range("B4:C552,I4:I552,M4:M552").Copy
Workbooks.Open Filename:=ThisWorkbook.Path & "\Rapor2.xlsx"
Windows("Rapor2.xlsx").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E32").Select
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("E32:E44")
Range("E32:E44").Select
Range("A1:E44").Borders.LineStyle = 1
End Sub


Benim 2. isteğim,yeni dosyaya bu şekilde attıktan sonra C sütununda 0 dan büyük, D sütununda 10000 den büyük olmasını istiyorum fakat yapamıyorum. Çünkü ilk makroyu,ilk excelde yapıyor,2.yi 2. de yapması gerekiyor.
Çözemedim,yardımcı olursanız sevınırım.

Bu arada ilk dosyada önce filtre yapıp sonra 2. dosyaya atmayı da yapamadım.bu da bir çözüm sonuçta.
 
Renkli satırları makro kaydet yöntemi ile yaptım.
Kod:
Sub Diger_Dosyaya_Kopyala()
Range("B4:C552,I4:I552,M4:M552").Copy
Workbooks.Open Filename:=ThisWorkbook.Path & "\Rapor2.xlsx"
Windows("Rapor2.xlsx").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E32").Select
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("E32:E44")
Range("E32:E44").Select
Range("A1:E44").Borders.LineStyle = 1

[color=red]ActiveSheet.Range("$A$1:$D$32").AutoFilter Field:=3, Criteria1:=">0", _
        Operator:=xlAnd
    ActiveSheet.Range("$A$1:$D$32").AutoFilter Field:=4, Criteria1:=">=10000", _
        Operator:=xlAnd[/color]


End Sub
 
Geri
Üst