• DİKKAT

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

Dosya adını hücreden alma

Katılım
30 Ağustos 2013
Mesajlar
67
Excel Vers. ve Dili
office 2016 tr
merhabalar,

şöyle bir şey yapmak istiyorum, tam olarak nasıl olur tanımlayamadım kendi kendime.

http://image.prntscr.com/image/4e4fe738e09d4c5496aeb156a1227c1c.png

başka bir klasördeki başka bir excel dosyasından veri çekiyorum resimde gördüğünüz gibi. istediğim şey ise şu:

a sütununde "deneme" yazdığımda c sütunundaki formül bulunan yerdeki url'nin ='[deneme.xls]KAYITLAR'!$B$4 olmasını istiyorum.
örnek yazdığımda ='[örnek.xls]KAYITLAR'!$B$4 olmasını istiyorum mesela. değişken olacak bu kısım. nasıl mümkün olur yardımlarınızı bekliyorum.
teşekkürler
 
Son düzenleme:
Öncelikle konu başlığınızı "Dosya adını hücreden alma" şeklinde değiştiriniz. İstediğiniz DOLAYLI formülüyle olur ancak DOLAYLI formülü ancak diğer dosya açıksa çalışır. Kapalı dosyalarda verileri güncellemez:
Kod:
=DOLAYLI("'["&A3&".xls]KAYITLAR'!$B$4")
 
merhabalar.
teşekkürler yanıtınız için. diğer dosyalar kapalıyken çalıştırmanın hiç bir yolu yok mudur
 
Sitede "Kapalı dosyadan Veri alma" şeklinde arama yaparsanız daha önceki konuları görebilirsiniz. Ben bu konuyla hiç ilgilenmediğim için yardımcı olamayacağım.
 
Merhabalar.
çok teşekkürler bazı yazıları ulaştım dediğiniz şekilde arama yapınca. çözmeye çalışacağım çok sağ olun.
 
Merhabalar efendim.
Aşağıda soracağım sorunun cevabını aylardır aramaktan yoruldum.
Sorum şu:
C: Diski içindeki MAHMUT İsimli klasörün içinde 1000 adet excel .xlsm uzantılı dosyam var
ben bu dosyalar dan örneğin ELMA-1. xlsm dosyasının adını değiştirmek istiyorum (bu 1000 dosyaların isimleri her hafta değişecek)
dileğim:
1-Makro bana MAHMUT klasörü içindeki adı değişecek dosyanın adını ve uzantısını sorsun.
Bu verileri girdikten sonrada:
2- Makro bana değişecek dosyanın yeni adını ve uzantısını sorsun.
verileri girince de dosyanın adı değişsin
çok şey mi istedim
şimdiden teşekkür ederim.
İyi çalışmalar.
 
Merhaba,

1000 adet dosyanın adını bu şekilde değiştirmek zahmetli olacaktır. Bunun yerine aşağıdaki resimdeki yöntemi kullanmanız daha uygun olabilir.

1560466124020.png

Uygulamayla ilgili kodlar aşağıdadır. Dosyada ektedir.

İlk kod dosya isimlerini listeler.
İkinci kod ise sizin "C" sütununa yazacağınız yeni isimlere göre dosya isimlerini değiştirir.

Kod:
Option Explicit

Sub Secilen_Klasordeki_Dosyalari_Listele()
    Dim Klasor As Object, Yol As String, Dosya As String, Satir As Long
    
    Set Klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Lütfen klasör seçiniz...", 1)
    If Klasor Is Nothing Then
        MsgBox "Klasör seçimi yapmadığınız için işleminiz iptal edilmiştir.", vbCritical
        Exit Sub
    End If
    
    Yol = Klasor.Items.Item.Path & Application.PathSeparator
    
    Range("A:D").Clear
    Satir = 2
    
    With Range("A1:C1")
        .Value = Array("Dosya Yolu", "Dosya Adı", "Yeni Dosya Adı")
        .Font.Bold = True
        .HorizontalAlignment = xlCenter
        .Font.Color = 255
    End With
    
    Dosya = Dir(Yol)
    
    While Dosya <> ""
        Cells(Satir, 1) = Yol
        Cells(Satir, 2) = Dosya
        Satir = Satir + 1
        Dosya = Dir
    Wend
    
    Range("A:C").Columns.AutoFit
    
    MsgBox "Listeleme işlemi tamamlanmıştır", vbInformation
End Sub

Sub Dosya_Isimlerini_Degistir()
    Dim Onay As Byte, X As Long, Son As Long, Say As Long
    
    Onay = MsgBox("Dosya isimleri değiştirilecektir!" & Chr(10) & Chr(10) & _
                  "İşlemi onaylıyor musunuz?", vbCritical + vbYesNo + vbDefaultButton2)
    
    If Onay = vbNo Then
        MsgBox "İşleminiz iptal edilmiştir.", vbInformation
        Exit Sub
    End If
    
    Son = Cells(Rows.Count, 1).End(3).Row
    
    For X = 2 To Son
        If Cells(X, 3) <> "" Then
            Name Cells(X, 1) & Cells(X, 2) As Cells(X, 1) & Cells(X, 3)
            Say = Say + 1
        End If
    Next
    
    If Say > 0 Then
        MsgBox "Dosya isimleri değiştirilmiştir." & Chr(10) & Chr(10) & _
               "İsmi değişen dosya sayısı ; " & Format(Say, "#,##0"), vbInformation
    Else
        MsgBox "Veri girişi yapmadığınız için dosya isimleri değiştirilememiştir!", vbExclamation
    End If
End Sub
 

Ekli dosyalar

Deneyecek ve size geri dönüş yapacağım.Emekleriniz için.size çok çok müteşekkirim.Sağ olun var olun.
Ancak altın üyeliğim olmadığı için ekli dosyalara ulaşamıyorum.Sadece makro üzerinde çalışacağım.
Sevgi ve saygılar
 
Korhan hocam.Tek kelime ile şahane. o kadar güzel olmuş ki.bu iş ancak bu kadar olur.
Bir soru sorsam ayıp olur mu acaba;
İki makroyu birleştirip tek buton ile çalıştırma imkanımız olabilir mi acaba diyorum.
Yinede ellerine ve emeklerinize sağlık.çok çok sağ olun.
Not"Ben 75 yaşındayım. ve hala bir şeyler yapmaya çalışıyorum.
 
İki kodu birleştirmek sorun değil.

Sadece kullanım zorluğu olacağından ayrı yazmayı tercih ettim. 1000 dosya dediğiniz için ayrı kodlama yazdım.

Aynı anda çalıştırmak için bana kafanızdaki kurguyu aktarmanız gerekiyor. Bende eğer kurgu uygunsa kodları birleştirebilirim.

Yaşınız için tebrik ederim. Nice sağlıklı yaşlara diyelim.
 
Dilek ve temennileriniz için teşekkür ederim.
En kısa zamanda kurgu yu size ulaştıracağım.
Yakın ilgi ve alakanız içinde teşekkür ederin.
 
Korhan hocam.
Hazırladığınız makroyu test yaptım.Sanırım iki buton ile de kullanabilirim. Ancak iki önemli konuda sorun oluştu.
Birinci konu:
Dosya yolu çok uzun olduğunda yol excel tablosunda tüm ekranı kaplıyor.
Bence: Dosya yolu tabloda hiç görünmesin.Sanırım daha iyi olacak.
İkinci konu:
örneğin: BAZ METRAJ.xlsm dosyasının adının (23.011.xlsm)--(17.136.xlsm) gibi pozlara çevrilmesini istediğim de hata olmadan ad değişiyor.
ANCAK:
BAZ METRAJ.xlsm dosyasını (23.011/6Y.xlsm)--(17.136/23Y1.xlsm)---(241.613/Z-1) gibi pozlara çevrilmesini istediğim de SANIRIM ( / ) veya ( - )
işaretlerinden dolayı makro hata veriyor.
Kodun hata veren satırını aşağıya yazıyorum
Name Cells(X, 1) & Cells(X, 2) As Cells(X, 1) & Cells(X, 3)
Bir test yaparak ilgilenirseniz çok sevinirim.
Bana kıymetli zamanlarınızı ayırdığınız için çok teşekkür ederim.
İyiki varsınız.
 
Dosya yolu gerekli olduğu için eklenmiştir. Yoksa dosyanın hangi klasörde olduğunu kod nereden bilecek.

Dosya yolu çok uzunsa kod içindeki sütun genişliğini otomatik ayarlayan aşağıdaki satırı silin. Daha sonra sütun genişliklerini elle size uygun şekilde ayarlayıp kodu çalıştırın.

Kod:
Range("A:C").Columns.AutoFit

Diğer konu ise dosya isminde windows sisteminin müsade ettiği karakterleri kullanmanız hata olasılığını azaltacaktır.
 
Geri
Üst