• DİKKAT

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

VBA ile özet tablo yenileme

Katılım
9 Kasım 2006
Mesajlar
13
Excel Vers. ve Dili
Office Excel 2003 SP2
Merhaba,

Bir konuda takıldım yardımcı olmanızı rica ediyorum :)

Konuyu açıklayacak olursam, verileri tuttuğum dosyalar var farklı farklı, ama ben hepsini harmanlayıp raporladığım bir ÖZET RAPOR gibi bir dosya yapmak istiyorum. Takıldığım konuya gelecek olursak tablo olarak biçimlendirilmiş bir alandan başka bir dosyaya özet tablo olarak rapor yaptım ve o dosyanın worksheet'i aktif olduğunda diğer dosyayı açıp özet tabloyu yenileyip kapatmasını istedim ve aşağıdaki kodu yazdım.

Kod:
Private Sub Worksheet_Activate()
Dim KTP As Workbook, DOSYA As Excel.Application
Dim AKTIF_WB As Worksheet, KAYNAK_WB As Worksheet, VERI_WB As Worksheet
Dim AWB As String, KAYNAK_YOL As String, KAYNAK_SAYFA As String, KAYNAK_DOSYA As String

Application.ScreenUpdating = False

AWB = ActiveWorkbook.Name
Set VERI_WB = Workbooks(AWB).Sheets("Veri")

Set DOSYA = CreateObject("Excel.Application")
DOSYA.Visible = False
KAYNAK_YOL = VERI_WB.Cells(2, 3)
KAYNAK_DOSYA = VERI_WB.Cells(2, 4)
KAYNAK_SAYFA = VERI_WB.Cells(2, 5)
Set KTP = DOSYA.Workbooks.Open(KAYNAK_YOL & KAYNAK_DOSYA)
Set KAYNAK_WB = KTP.Sheets(KAYNAK_SAYFA)

DoEvents
ActiveWorkbook.SlicerCaches("Dilimleyici_Parti_Numarası2").PivotTables(1). _
        PivotCache.Refresh
DoEvents

DOSYA.DisplayAlerts = False
DOSYA.Quit
Application.ScreenUpdating = True
End Sub

fakat çalıştırdığımda tablonun olduğu dosya açılmasına rağmen "Başvuru geçerli değil" hatası veriyor.

eğer her iki dosyayıda elle açarsam kodun çalışmasında sıkıntı yok, ama ben dosyayı otomatik açıp özet tabloyu yenileyip ve dosyayı geri kapatmasını istiyorum.

Bir türlü çözemedim yardımcı olursanız sevinirim.
 
1- "Excel.Application" tanımlamanıza gerek yok zaten Excel'de çalışıyorsunuz. Aşağıdaki kod işinizi görür.
Kod:
Set VERI_WB = ThisWorkbook.Sheets("Veri")
KAYNAK_YOL = VERI_WB.Cells(2, 3)
KAYNAK_DOSYA = VERI_WB.Cells(2, 4)
KAYNAK_SAYFA = VERI_WB.Cells(2, 5)
Set KTP = Workbooks.Open(KAYNAK_YOL & KAYNAK_DOSYA)
Set KAYNAK_WB = KTP.Sheets(KAYNAK_SAYFA)
ActiveWorkbook.SlicerCaches("Dilimleyici_Parti_Numarası2").PivotTables(1). _
        PivotCache.Refresh
KTP.Close
2- veri sayfasındaki B3 hücresindeki yol tanımının sonunda veya B4 hücresindeki dosya adının başında "/" işareti olması gerekir.
3-
Kod:
ActiveWorkbook.SlicerCaches("Dilimleyici_Parti_Numarası2").PivotTables(1). _
        PivotCache.Refresh
Satırındaki ActiveWorkbook bu kodları yazdığınız kitabımı temsil ediyor yoksa açılıp, kapanan kitabımı temsil ediyor. Eğer bu kitabı temsil ediyorsa o satırı
Kod:
ThisWorkbook.SlicerCaches("Dilimleyici_Parti_Numarası2").PivotTables(1). _
        PivotCache.Refresh
olarak değiştirin.
 
Son düzenleme:
Kod:
Private Sub UserForm_Click()
'Dim KTP As Workbook, DOSYA As Excel.Application
'Dim AKTIF_WB As Worksheet, KAYNAK_WB As Worksheet, VERI_WB As Worksheet
'Dim AWB As String, KAYNAK_YOL As String, KAYNAK_SAYFA As String, KAYNAK_DOSYA As String

'Application.ScreenUpdating = False

AWB = ActiveWorkbook.Name
Set VERI_WB = Workbooks(AWB).Sheets("Veri")

'Set DOSYA = CreateObject("Excel.Application")
'DOSYA.Visible = False
[COLOR="Red"]KAYNAK_YOL = ThisWorkbook.Path[/COLOR]
KAYNAK_DOSYA = VERI_WB.Cells(2, 4)
KAYNAK_SAYFA = VERI_WB.Cells(2, 5)

[COLOR="Red"]Workbooks.Open (KAYNAK_YOL & "\" & KAYNAK_DOSYA)[/COLOR]

'Set KAYNAK_WB = Workbooks(KAYNAK_DOSYA).Sheets(KAYNAK_SAYFA)

    DoEvents
    ActiveWorkbook.SlicerCaches("Dilimleyici_Parti_Numarası2").PivotTables(1). _
          PivotCache.Refresh
    DoEvents

'DOSYA.DisplayAlerts = False
[COLOR="red"]Workbooks(KAYNAK_DOSYA).Close False[/COLOR]
'DOSYA.Quit
'Application.ScreenUpdating = True
End Sub

macroda; ilk krımızı dosyayı açar - sonraki kırmızı dosyayı kapatır... macronun çalışdığı dosya açık kalır...
 
.

Yanılmıyorsam Dış Veri al yöntemi ve kısa bir makro ile daha kolay olur. O zaman dosya açıp, kapatmanız gerekmiyor.

.
 
Yardımcı olduğunuz için çok çok teşekkürler sorun çözüldü. Alicimri'nin dediği gibi düzenledim açılan dosyanın kapanmasını hımmmm kullanıcısının vermiş olduğu Workbooks(KAYNAK_DOSYA).Close False koduyla yaptım ve sorun ortadan kalktı. "Excel.Application" açmamın tek bir nedeni vardı işlem yaparken diğer dosyanın açılıp kapandığının görülmesini istememem kodta fark ettiyseniz dosyayı açıp visible false yaptım, bu kısa bir işlem olduğundan açılıp kapandığı belli olmuyor bile ama uzun süren işlemlerde kendimce bulduğum bir çözümdü benim için.

Bu arada Dış Veri Al ile hiç bilgim yok, nedir, nasıl yapılır, nasıl kullanılır bilmiyorum. Ulaşabileceğim bir kaynakça varsa öğrenirim, öğrenmeyi severim :)

Yardımlarınız için tekrar tekrar teşekkürler :)
 
Geri
Üst