klasördeki dosyalarda bulunan formüller

Katılım
27 Aralık 2008
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 & 2003 Türkçe
Bir konuda yardımlarınıza ihtiyacım var,
İşim gereği yıl içinde gerçekleştirilen faaliyetler için raporlar oluşturulmaktadır ve bu raporlar bir klasörde dosyalanmaktadır. Bu raporlar formüllü excel dosyalarıdır ve değişken sayfa sayısına sahiptir. Sayfa yapıları aynıdır. Bu excel dosyalarındaki tüm sayfalarında bilgileri kopyala ve değerleri yapıştır ile sabitlemek gerekiyor.
Forumda excel dosyalarını birleştirmek olarak konular mevcut ancak bu dosyaların sadece tek sayfasını alıyor. Benim istediğim raporlardaki tüm sayfaların değerlerinin yapıştırılmasıdır. Yardımlarınız için teşekkür ederim.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,375
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Klasörünüzün yedeğini aldıktan sonra aşağıdaki proseduru boş bir excel sayfasında test edin.

Kod:
Sub xyz()
Dim d$, w As Workbook, s As Worksheet

d = Dir([B]"c:\belgeler\[/B]*.xlsx") [COLOR=DarkGreen]'-- Bu satırı düzenleyin.[/COLOR]

Do While d <> ""
    DoEvents
    Set w = Workbooks.Open([B]"c:\belgeler\[/B] & d) [COLOR=DarkGreen]'-- Bu satırı düzenleyin.[/COLOR]
    For Each s In w.Worksheets
        w.s.Cells.Copy
        w.s.[a1].PasteSpecial Paste:=xlPasteValues
    Next
    w.Close True
Loop
End Sub
 
Katılım
27 Aralık 2008
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 & 2003 Türkçe
Cevabınız için teşekkür ederim.
Söylediğiniz şekilde öncelikle c directory içerisinde belgeler isimli bir klasör oluşturarak excel dosyalarından bir kısmını buraya attım. Kullandığım dosyalar 2003 dosyası olduğundan
d = Dir("c:\belgeler\*.xlsx")
satırını
d = Dir("c:\belgeler\*.xls")
olarak düzenledim . Sonra boş bir excel dosyasında tanımlanan prosedürü uyguladım.
Set w = Workbooks.Open("c:\belgeler\ & d)
satırında hata mesajı verdi.
 
Katılım
27 Aralık 2008
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 & 2003 Türkçe
İletmiş olduğum soru ile ilgili bir dosya iliştiryorum. Mevcut dosyalarım bir klasör içerisinde belgeler klasöründeki gibi değişken sayfa sayılarına sahip xls dosyaları

Bu dosyaları oluşturulan makro ile içindeki formuller yerine değerler yapıştırılmış olarak belgeler1 klasöründeki gibi yapmak istiyorum. Yardımlarınız için teşekkür ederim.
 

Ekli dosyalar

Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,742
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Zeki beyin önerdiği koddaki hata veren satırı aşağıdaki şekilde değiştirip denermisiniz.

Kod:
Set w = Workbooks.Open("c:\belgeler\[COLOR=red]"[/COLOR] & d)
 
Katılım
27 Aralık 2008
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 & 2003 Türkçe
Korhan beyin önerisine uygun olarak modülü düzenleyip uyguladım Bu seferde
w.s.Cells.Copy
satırında hata verdi. İlginiz için teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,742
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Eğer kopyalama yapacağınız sayfalarda filtre uygulaması varsa bunlar sorun çıkaracaktır. Filtrelemeleri kaldırmanız gerekecektir.
 
Katılım
27 Aralık 2008
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 & 2003 Türkçe
Selamlar Uzman
Problemim olan çalışmadan örnekleri bir önceki yazıda (belgeler.rar) ekledim. Dosyalarda filtreleme bulunmamaktadır.
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,742
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Alternatif olarak aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub FORMÜLLERİ_KOPYALA_DEĞER_OLARAK_YAPIŞTIR()
    Dim Dosya As Object, Kaynak_Dosya As Workbook, Sayfa As Worksheet
    
    Application.ScreenUpdating = False
    
    If CreateObject("Scripting.FileSystemObject").GetFolder("C:\Belgeler").Files.Count = 0 Then GoTo Son
    
    For Each Dosya In CreateObject("Scripting.FileSystemObject").GetFolder("C:\Belgeler").Files
        
        Set Kaynak_Dosya = Workbooks.Open(Dosya, False, False)
    
        For Each Sayfa In Kaynak_Dosya.Sheets
            Sayfa.Select
            Cells.Copy
            Range("A1").PasteSpecial Paste:=xlPasteValues
            Range("A1").Select
            Application.CutCopyMode = False
        Next
        Kaynak_Dosya.Close True
    Next
    Application.ScreenUpdating = True
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
    Exit Sub
Son:
    Application.ScreenUpdating = True
    MsgBox "Dosya bulunamamıştır !", vbCritical, "Dikkat !"
End Sub
 
Katılım
27 Aralık 2008
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 & 2003 Türkçe
Selamlar Uzman
Kod mükemmel olmuş. Ellerinize sağlık. İstenilen fonksiyonu yerine getiriyor. Ne kadar teşşeküür etsem azdır.
 
Üst