• DİKKAT

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

Kapalı dosyadan veri alamıyorum

Katılım
21 Ekim 2010
Mesajlar
865
Excel Vers. ve Dili
türkçe 2010
Bu forum sayesinde bir çok konuda sorulan soru ve yanıtlarla problemlerimi çözebilmekteyim. çözemediğim bir konu hakkında bilgi danışacağım.
Numune.xlsx ve sondajlar.xlsx adında 2 adet dosyam mevcut bu dosyalar kolaylık olması açısından C:\temp\ klasörü çerisine yerleştirdim.
Sondajlar dosyasına gunluk olarak verileri giriyorum numune dosyası ise bu dosyadan veri almakta.
Sondaj ve numune dosyalarında her bir sondaj için ayrı ayrı sayfalar bulunmaktadır.
Sondajlar dosyası açık iken bilgileri alabiliyorum ancak sondajlar dosyası kapalı iken formullu hücrelerde bilgi alamıyorum.
Şöyleki ; Numune dosyası C1 hücresindeki formul sondaj dosyası açıkken çalışıyo fakat kapalı iken hata veriyor. fakat C3 hücresi ise sondajlar dosyasından veriyi sondajlar dosyası kapalı olsa dahi alıyor ve çalışıyor Sondajlar dosyası kapalı iken sarı renkli hücreleri hata vermemesi için formülü nasıl duzenlemeliyim. yeşil renkli işaretlediğim hücrelerde sıkıntı olmuyor.
Şimdiden teşekkür ederim.
 

Ekli dosyalar

DOLAYLI fonksiyonu kapalı dosyalarda çalışmaz. Dolayısıyla bu fonksiyonu kullanmadan çözüm bulmalısınız. Örneğin dosyanızda her sondaj için ayrı sayfa oluşturmuşsunuz. Dolayısıyla formülller içindeki sayfa adlarını hücreden aldırmak yerine direk formül içine yazabilirsiniz. Örneğin;

C1 hücresindeki =C5&" / "&DOLAYLI("'C:\Temp\[Sondajlar.xlsx]"&C5&"'"&"!A2") formülünü aşağıdaki gibi düzenleyebilirsiniz.

=C5&" / "&'C:\temp\[sondajlar.xlsx]sondaj1'!A2
 
Levent bey cevabınız için teşekkür ederim.
Gönderdiğim dosyalar içinde bu şekilde formulle kapalı dosya içerisinden bilgi alabildiğimi ancak dolaylı formulu kullanarak bunu yapamadığımı; bunun bi başka formül veya çözümünün olup olamıyacağını sormuştum. Form sayfasına yolladığım dosyaları örnek olarak hazırlayıp öylece gönderdim. Ama gerçekte kullandığım dosyalarda sondaj sayısı arttıkça sayfa sayısı artmakta bazen 1 sondajda 60-70 numune alınmaktadır. Tabiki her numune sayfasına her bir bilgiyi almak için formulde doğrudan hucre ismini yazmak mümkün ancak her bir numune fişi için için 3-4 bilgi ve bir sondaj içinde 60-70 numune olacağını göz önüne alırsan bence her iki dosyayı açıp kopyala yapıştırmak daha kolay gibi .
Uzun süredir excel kullandığım için bunun bir çözümünün olabileceğini tahmin ediyorum. Şayet çözüm bulabilirsem burada paylaşacağım, forumdaki arkadaşlardanda yardım bekliyorum. Saygılarımla.
 
Bunu denermisiniz.


Not :dosyaların ikiside aynı yerde olmalı ve uzantılarıda aynı olmalı

Kod:
Sub deneme()
Klasor = ThisWorkbook.Path
Dosya_adi = "Sondajlar"
For j = Len(ThisWorkbook.Name) To 1 Step -1
If Mid(ThisWorkbook.Name, j, 1) = "." Then
Uzanti = Mid(ThisWorkbook.Name, j, Len(ThisWorkbook.Name))
Exit For
End If
Next
On Error Resume Next
For r = 1 To ActiveWorkbook.Sheets.Count
sut = 2
For i = 1 To 3
sayfa_adi = Sheets(Sheets(r).Name).Cells(5, i + sut).Value
deg = "'" & Klasor & "\" & "[" & Dosya_adi & Uzanti & "]" & sayfa_adi & "'!R"
Sheets(Sheets(r).Name).Cells(1, i + sut) = ExecuteExcel4Macro(deg & i + 1 & "C" & 1)
Sheets(Sheets(r).Name).Cells(3, i + sut) = ExecuteExcel4Macro(deg & i + 1 & "C" & 5)
yer1 = Format(ExecuteExcel4Macro(deg & i + 1 & "C" & 2), "#,##0.00")
yer2 = Format(ExecuteExcel4Macro(deg & i + 1 & "C" & 3), "#,##0.00")
yer3 = Format(ExecuteExcel4Macro(deg & i + 1 & "C" & 4), "#,##0.00")
Sheets(Sheets(r).Name).Cells(6, i + sut) = yer1 & "-" & yer2 & "= " & yer3
sut = sut + 3
Next
Next
End Sub
 
Sayfa adlarını yazdırıyor bu kod

Kod:
Sub deneme()
Klasor = ThisWorkbook.Path
Dosya_adi = "Sondajlar"
For j = Len(ThisWorkbook.Name) To 1 Step -1
If Mid(ThisWorkbook.Name, j, 1) = "." Then
Uzanti = Mid(ThisWorkbook.Name, j, Len(ThisWorkbook.Name))
Exit For
End If
Next
On Error Resume Next
For r = 1 To ActiveWorkbook.Sheets.Count
sut = 2
For i = 1 To 3
sayfa_adi = Sheets(r).Name
Sheets(Sheets(r).Name).Cells(5, i + sut) = sayfa_adi
'sayfa_adi = Sheets(Sheets(r).Name).Cells(5, i + sut).Value
deg = "'" & Klasor & "\" & "[" & Dosya_adi & Uzanti & "]" & sayfa_adi & "'!R"
Sheets(Sheets(r).Name).Cells(1, i + sut) = ExecuteExcel4Macro(deg & i + 1 & "C" & 1)
Sheets(Sheets(r).Name).Cells(3, i + sut) = ExecuteExcel4Macro(deg & i + 1 & "C" & 5)
yer1 = Format(ExecuteExcel4Macro(deg & i + 1 & "C" & 2), "#,##0.00")
yer2 = Format(ExecuteExcel4Macro(deg & i + 1 & "C" & 3), "#,##0.00")
yer3 = Format(ExecuteExcel4Macro(deg & i + 1 & "C" & 4), "#,##0.00")
Sheets(Sheets(r).Name).Cells(6, i + sut) = yer1 & "-" & yer2 & "= " & yer3
sut = sut + 3
Next
Next
MsgBox "işlem tamam"
End Sub
 
Buda farklı bir uygulama
 

Ekli dosyalar

bu forum sayesinde bir çok konuda sorulan soru ve yanıtlarla problemlerimi çözebilmekteyim. çözemediğim bir konu hakkında bilgi danışacağım.
Numune.xlsx ve sondajlar.xlsx adında 2 adet dosyam mevcut bu dosyalar kolaylık olması açısından c:\temp\ klasörü çerisine yerleştirdim.
Sondajlar dosyasına gunluk olarak verileri giriyorum numune dosyası ise bu dosyadan veri almakta.
Sondaj ve numune dosyalarında her bir sondaj için ayrı ayrı sayfalar bulunmaktadır.
Sondajlar dosyası açık iken bilgileri alabiliyorum ancak sondajlar dosyası kapalı iken formullu hücrelerde bilgi alamıyorum.
şöyleki ; numune dosyası c1 hücresindeki formul sondaj dosyası açıkken çalışıyo fakat kapalı iken hata veriyor. Fakat c3 hücresi ise sondajlar dosyasından veriyi sondajlar dosyası kapalı olsa dahi alıyor ve çalışıyor sondajlar dosyası kapalı iken sarı renkli hücreleri hata vermemesi için formülü nasıl duzenlemeliyim. Yeşil renkli işaretlediğim hücrelerde sıkıntı olmuyor.
şimdiden teşekkür ederim.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

merhaba,
probleminizin çözümü için dolaylı komutu yerine birleştir komutu ve direk hüceye atama formülleri ile çözülür. örnek olsun diye ilk 3 adedini yaptım diğerlerini de bu mantık çerçevesinde kendiniz yapabilirsin. Burada numune C2 hücresine = yazın ve sondajlar sayfasını açın A2 hücresini seçin ve entere basın, numune c1 de belirtilen formülün mantığını çoğaltarak çözüm oluşturabilirsiniz, karot metresi kısmının mantığı anlamadığım için dokunmadım oraya...
 

Ekli dosyalar

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

merhaba,
probleminizin çözümü için dolaylı komutu yerine birleştir komutu ve direk hüceye atama formülleri ile çözülür. örnek olsun diye ilk 3 adedini yaptım diğerlerini de bu mantık çerçevesinde kendiniz yapabilirsin. Burada numune C2 hücresine = yazın ve sondajlar sayfasını açın A2 hücresini seçin ve entere basın, numune c1 de belirtilen formülün mantığını çoğaltarak çözüm oluşturabilirsiniz, karot metresi kısmının mantığı anlamadığım için dokunmadım oraya...

Buda farklı bir uygulama

Teşekkürler.
Halit bey makro çözümünüz işime yaradı onu biraz daha geliştirerek (aşağı satırlara for döngüsü ile artırarak) kullanacağım.
ssdestek birleştir komutuda bi başka hücrede işime yaradı. çok teşekkürler.
saygılarımla.
 
Teşekkürler.
Halit bey makro çözümünüz işime yaradı onu biraz daha geliştirerek (aşağı satırlara for döngüsü ile artırarak) kullanacağım.
ssdestek birleştir komutuda bi başka hücrede işime yaradı. çok teşekkürler.
saygılarımla.

iyi çalışmalar
 
Geri
Üst