• DİKKAT

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

DIR komutu hata veriyor! (Acil)

Katılım
25 Nisan 2008
Mesajlar
43
Excel Vers. ve Dili
2003 İngilizce
Merhaba,

Ben makrom ile yeni çalışma kitabları eklemek istiyorum. Ama çalışma kitablarınında isimlerini değişken oolarak atadım.

For i=1 to 30

Workbooks.Add

Filename = Mid(S1.Cells(i, "D").Value, 6, 1)

ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\user\My Documents\2008\04\30\" & [Filename]

dosya = Dir(dizin & "*[filename]*.xml*")

daha sonra da bu değişkeni içeren ilgili dizindeki dosyaları bulmak istiyorum. Kodu yukarıdaki gibi yazdığımda bulamıyor!! Neden olabilir? Kodu nasıl düzeltebilirim?
 
Aşağıdaki şekilde denermisiniz?:cool:
aslıda dizin stringinizde görsem iyi olurdu.:cool:
dosya = Dir(dizin & filename & ".xml*")
 
Aşağıdaki şekilde denermisiniz?:cool:
aslıda dizin stringinizde görsem iyi olurdu.:cool:
dosya = Dir(dizin & filename & ".xml*")

dizin = "C:\Documents and Settings\user\My Documents\2008\04\30\"

dizin stringimde yukarıdaki gibi...

Yanıtınız için teşekkürler...Ancak denedim olmadı :(

dosya = Dir(dizin & "*filename*" & ".xml*")

şeklinde de denedim. olmadı. Dosya adım yani filename örneğin "1" oldu yani

filename = 1

çalışma kitabı oluşturuldu.

dizindeki .xml dosyalarımın adları

0000_1_rates
0414_1_rates şeklinde... ben de bu alt çizgideki 1'i arattırmak istiyorum. O zaman dosya adı

dosya=dir(dizin & "*_filename_*" & "*.xml") olmalı?

Bunu da denedim bunu da kabul etmedi :(
 
Son düzenleme:
Filename = Mid(S1.Cells(i, "D").Value, 6, 1)
Burada aldığınız değer uzantısı ile berabermi yoksa sadece adımı var?
 
Filename = Mid(S1.Cells(i, "D").Value, 6, 1)
Burada aldığınız değer uzantısı ile berabermi yoksa sadece adımı var?

aradığım hücrede sadece ad var. Şöyle ki:

0000_1_rates gibi.

Ben buradaki 1 değerini alıp Filename adlı stringe atıyorum (Filename string olarak tanımladım). Sonra bu isimde bir çalışma kitabı oluşturuyorum.

Sonra da verdiğim dizinde bu değeri (örnekteki 1'i mesela) içeren dosya adlarını arıyorum. Dosya adları

0000_1_rates
0414_1_rates... şeklinde. O yüzden komutu;

dosya = Dir(dizin & "*_Filename_*" & "*.xml")

olarak da denedim ama olmadı. Filename'i değişken olarak kabul etmiyor mu?
 
Olmuyor dan kastınız nedir?:cool:
 
Olmuyor dan kastınız nedir?:cool:

dosya = Dir(dizin & "*_Filename_*" & "*.xml")

While dosya <> ""

DoEvents

........................
........................
........................

Wend


şeklinde bir kodum var. Dosya oluşmadığı için bu kodu sürekli atlıyor ve makroyu sonlandırıyor.
 
Dosya yoksa oluşturmak istiyorsanız.Aşağıdaki şekilde kullanmalısınız.:cool:
Kod:
While dosya = ""
 
Kodu aşağıdaki şekli ile deneyiniz.:cool:
Kod:
dosya = Dir(dizin & Filename & ".xml")
 
Olmadı üzgünüm başka fikrin var mı? filename'i değişken olarak mı kabul etmiyor acaba?
Bu durumda dizin yanlış veya filename yanlış veya 2side yanlış
Filename'i değişken olarak kabul eder.İsterseniz msgbox filename yazarak filename değişkeni içersindeki değeri öğrenebilirsiniz.:cool:
 
Bu durumda dizin yanlış veya filename yanlış veya 2side yanlış
Filename'i değişken olarak kabul eder.İsterseniz msgbox filename yazarak filename değişkeni içersindeki değeri öğrenebilirsiniz.:cool:

Dizin tekrar kontrol ettim doğru görünüyor. Msgbox filename'de değişken doğru görünüyor. Ama ben değişkendeki değeri içeren bir dosya arıyorum.

Dosya adı "0000_1_rates.xml" şeklinde ve filename değişkeni de "_1_" ise ben bu değişkeni içeren "0000_1_rates.xml" dosyasını bulsun istiyorum. Buna göre kodu nasıl yazmalıyım?
 
Dizin içersindeki 5,6 ve 7nci karakterleri "_1_" olan dosyaların listesinimi istiyorsunuz?
 
Aşağıdaki kodu kullanınız.:cool:
Kod:
Dim dizin, dosya, dsy, dosyalar As String
dizin = "C:\Documents and Settings\user\My Documents\2008\04\30\"
dosya = Dir(dizin & "*.*")
Do While dosya <> ""
    If Len(dosya) >= 7 Then
        dsy = Mid(dosya, 5, 3)
        If dsy = "_1_" Then
            dosyalar = dosyalar & dosya & vbLf
        End If
    End If
Loop
MsgBox dosyalar
 
Aşağıdaki kodu kullanınız.:cool:
Kod:
Dim dizin, dosya, dsy, dosyalar As String
dizin = "C:\Documents and Settings\user\My Documents\2008\04\30\"
dosya = Dir(dizin & "*.*")
Do While dosya <> ""
    If Len(dosya) >= 7 Then
        dsy = Mid(dosya, 5, 3)
        If dsy = "_1_" Then
            dosyalar = dosyalar & dosya & vbLf
        End If
    End If
Loop
MsgBox dosyalar

Burada yer alan "_1_" aslında filename değişkeninin aldığı bir değer. Dolayısıyla ben kodda yer alan "_1_" yerine filename yazabilirim di mi?
 
Burada yer alan "_1_" aslında filename değişkeninin aldığı bir değer. Dolayısıyla ben kodda yer alan "_1_" yerine filename yazabilirim di mi?

Benim önceki mesajda verdiğim kodları denedinizmi?çalışıyormu?MsgBox'ta listeleme yapması lazımdı.:cool:
 
Benim önceki mesajda verdiğim kodları denedinizmi?çalışıyormu?MsgBox'ta listeleme yapması lazımdı.:cool:

Evet çalışıyor teşekkür ederim fikir için. Ancak loop tan kurtulamıyor. Aynı kodu tekrarlıyor.

Ayrıca ben

dosya = Dir(dizin & "*.xml")

komutundan sonra

MsgBox dosya

komutu ekledim. Dosya içeriğinde tek bir dosya buldu. Oysa o dizinde 4 tane .xml dosyası var. Neden 1 tane buldu??
 
Evet çalışıyor teşekkür ederim fikir için. Ancak loop tan kurtulamıyor. Aynı kodu tekrarlıyor.

Ayrıca ben

dosya = Dir(dizin & "*.xml")

komutundan sonra

MsgBox dosya

komutu ekledim. Dosya içeriğinde tek bir dosya buldu. Oysa o dizinde 4 tane .xml dosyası var. Neden 1 tane buldu??
Evet kodu eksik yazmışım.
Alttaki kodları çalıştırınız.:cool:
Kod:
Dim dizin, dosya, dsy, dosyalar As String
dizin = "C:\Documents and Settings\user\My Documents\2008\04\30\"
dosya = Dir(dizin & "*.*")
Do While dosya <> ""
    If Len(dosya) >= 7 Then
        dsy = Mid(dosya, 5, 3)
        If dsy = "_1_" Then
            dosyalar = dosyalar & dosya & vbLf
        End If
    End If
   [B][COLOR="Red"]dosya = Dir[/COLOR][/B]
Loop
MsgBox dosyalar
 
Geri
Üst