• Merhaba Ziyaretçi,
    Microsoft 365 Uygulamaları ile ilgili yeni haberler, dikkat çekici konular, ilgi ile takip edeceğiniz yazılar için.

    Abone Olun
  • ESTE - Microsoft Office Eğitimleri

    Yeni yıl Microsoft Office Eğitim planlarınız için bütçenizi oluşturmadan önce ESTE eğitim kalitesi ile tanışın. 🙌
    Kullanıcıların ihtiyacı olan yazılı materyal, dosya ve video kaynağı desteğimiz ile tüm ofis çalışanlarının iş süreçlerini rahatlatacak eğitimler planlayın. 🎯
    Microsoft Office eğitimlerimiz hakkında detaylı bilgi için bize ulaşın.

    👉 Microsoft Office Eğitim Talebi

Atmaca53

Yeni Üye
Katılım
23 Eki 2023
Mesajlar
2
En iyi yanıt
0
Puanları
1
Yaş
31
Konum
İstanbul
Ad Soyad
Sinan Çiçek
Office Vers.
Office 2019 - TR
Merhaba,
İki hücredeki değişkenlerime göre bir dosya yolu oluşsun ve buradan DÜŞEYARA ile verileri alayım istiyorum.
Aşağıda göreceğiniz üzere bunu DÜŞEYARA/dolaylı ile sağladım.
Ancak bu veriyi çekeceğimiz kaynak dosyalar hep kapalı ve bu şekilde formüller çalışmıyor tabi ki.
Bunu makro ile dosyalar kapalıyken yapabilmek istiyorum. Yardımcı olabilir misiniz?

=DÜŞEYARA([@[Üretim Emri Numarası]];DOLAYLI([@[Dosya Yol]]);12;0)

Screenshot_3.png


W Sütunu = Dosya Yol ="'\\fserver\Data\Kalite Kontrol\Kalitekontrol Ortak Alan\Fason Irsaliyeler\Gunluk Irsaliyeler\"&[@Fason]&"\"&"["&[@Fason]&" "&[@[İrsaliye Numarası]]&".xlsx]Ürün Takip Formu'!$B$1:$T$25"

W Sütunu = Dosya Yol ='\\fserver\Data\Kalite Kontrol\Kalitekontrol Ortak Alan\Fason Irsaliyeler\Gunluk Irsaliyeler\DeryaFason\[DeryaFason 6169.xlsx]Ürün Takip Formu'!$B$1:$T$25

Sütun L = [@Fason] : Veri giriyorum
Sütun S = [@İrsaliye Numarası] : Veri giriyorum
Sütun W = [@Dosya Yol] : Otomatik oluşuyor



Fark ettiğiniz üzere sabit bir yol var ve onun altında klasörler var.
EĞER arattığım dosya burada yoksa EĞER hata ile ikinci yolu denemesini istiyorum.
Yardımcı olabilir misiniz?

=EĞERHATA(DÜŞEYARA([@[Üretim Emri Numarası]];DOLAYLI([@[Dosya Yol]]);12;0);DÜŞEYARA([@[Üretim Emri Numarası]];DOLAYLI([@[Dosya Yol2]]);12;0)

Dosya Yol: \\fserver\Data\Kalite Kontrol\Kalitekontrol Ortak Alan\Fason Irsaliyeler\Gunluk Irsaliyeler\
Dosya Yol2: \\fserver\Data\Kalite Kontrol\Kalitekontrol Ortak Alan\Fason Irsaliyeler\Faturalanmis Irsaliyeler\
 

Ekli dosyalar

  • deneme dosyası.xlsm
    427 KB · Görüntüleme: 2
  • Screenshot_3.png
    Screenshot_3.png
    60.8 KB · Görüntüleme: 1

blizzard

Yeni Üye
Katılım
11 Eyl 2023
Mesajlar
8
En iyi yanıt
0
Puanları
3
Yaş
42
Konum
TRABZON
Ad Soyad
Mete YILMAZ
Office Vers.
Microsoft® Excel® LTSC MSO (Sürüm 2307 Derleme 16.0.16626.20086) 64 bit
C++:
Function GetData(uretimEmriNumarasi As String, dosyaYol As String) As Variant
    Dim dosya As Workbook
    Dim dosyaYolu1 As String, dosyaYolu2 As String
    Dim veri As Variant
    
    ' İlk dosya yolunu oluştur
    dosyaYolu1 = dosyaYol & "Fason\" & "[" & dosyaYol & uretimEmriNumarasi & ".xlsx]Ürün Takip Formu'!$B$1:$T$25"
    
    ' İkinci dosya yolunu oluştur
    dosyaYolu2 = dosyaYol & "Faturalanmis Irsaliyeler\" & "[" & dosyaYol & uretimEmriNumarasi & ".xlsx]Ürün Takip Formu'!$B$1:$T$25"
    
    ' İlk dosyayı dene
    On Error Resume Next
    Set dosya = Workbooks.Open(dosyaYolu1)
    On Error GoTo 0
    
    ' Eğer dosya açıldıysa veriyi al
    If Not dosya Is Nothing Then
        veri = dosya.Sheets("Ürün Takip Formu").Range("B1:T25").Value
        dosya.Close False ' Dosyayı kapat
        GetData = veri
        Exit Function
    End If
    
    ' İkinci dosyayı dene
    On Error Resume Next
    Set dosya = Workbooks.Open(dosyaYolu2)
    On Error GoTo 0
    
    ' Eğer ikinci dosya açıldıysa veriyi al
    If Not dosya Is Nothing Then
        veri = dosya.Sheets("Ürün Takip Formu").Range("B1:T25").Value
        dosya.Close False ' Dosyayı kapat
        GetData = veri
    Else
        ' Dosya bulunamazsa veya açılamazsa hatayı döndür
        GetData = CVErr(xlErrValue)
    End If
End Function

Sub VeriCekme()
    Dim uretimEmriNumarasi As String
    Dim dosyaYol As String
    Dim sonuc As Variant
    
    ' Örnek üretim emri numarası ve dosya yolu
    uretimEmriNumarasi = Range("L2").Value ' L sütununda üretim emri numarası
    dosyaYol = "\\fserver\Data\Kalite Kontrol\Kalitekontrol Ortak Alan\Fason Irsaliyeler\Gunluk Irsaliyeler\"
    
    ' Veriyi çek
    sonuc = GetData(uretimEmriNumarasi, dosyaYol)
    
    ' Sonucu hücrelere yaz
    If IsArray(sonuc) Then
        Range("A1").Resize(UBound(sonuc, 1), UBound(sonuc, 2)).Value = sonuc
    Else
        ' Eğer hata dönerse hata mesajını göster
        MsgBox "Veri çekme işlemi başarısız oldu!", vbExclamation
    End If
End Sub


Yapay zeka ile üretilmiştir. Bir dener misiniz?
 

Atmaca53

Yeni Üye
Katılım
23 Eki 2023
Mesajlar
2
En iyi yanıt
0
Puanları
1
Yaş
31
Konum
İstanbul
Ad Soyad
Sinan Çiçek
Office Vers.
Office 2019 - TR
İlginiz için teşekkür ederim. Henüz denemedim, deneyip size geri dönüş sağlayacağım.
Aşağıya yine geçici bir çözüm bırakıyorum. Merak eden olursa detaylarını paylaşabilirim.

C++:
Private Sub CommandButton3_Click()
    Dim AnaDosya As Workbook
    Dim AnaSayfa As Worksheet
    Dim UretimEmriSutun As Range
    Dim DosyaYolW As Range
    Dim DosyaYolX As Range
    Dim EkleSutun As Range
    Dim DosyaYolu As String
    Dim DosyaAdresi As String
    Dim Dosya As Workbook
    Dim UretimEmri As Variant
    Dim Sonuc As Variant
    Dim DosyaSayfa As Worksheet
    Dim DosyaSira As Long


    Set AnaDosya = ThisWorkbook
    Set AnaSayfa = AnaDosya.Sheets("Takip6")

    
    Set UretimEmriSutun = AnaSayfa.Range("B3:B" & AnaSayfa.Cells(Rows.Count, "B").End(xlUp).Row)
    Set DosyaYolW = AnaSayfa.Range("W3:W" & AnaSayfa.Cells(Rows.Count, "W").End(xlUp).Row)
    Set DosyaYolX = AnaSayfa.Range("X3:X" & AnaSayfa.Cells(Rows.Count, "X").End(xlUp).Row)
    Set EkleSutun = AnaSayfa.Range("M3:M" & AnaSayfa.Cells(Rows.Count, "M").End(xlUp).Row)

  
    DosyaYolu = "\\fserver\Data\Kalite Kontrol\Kalitekontrol Ortak Alan\Fason Irsaliyeler\Gunluk Irsaliyeler\DeryaFason\"

    
    For i = 1 To UretimEmriSutun.Rows.Count
    
        If Not IsEmpty(UretimEmriSutun.Cells(i, 1).Value) Then
            UretimEmri = UretimEmriSutun.Cells(i, 1).Value

           
            If Not IsEmpty(DosyaYolW.Cells(i, 1).Value) Then
                DosyaAdresi = DosyaYolW.Cells(i, 1).Value
            ElseIf Not IsEmpty(DosyaYolX.Cells(i, 1).Value) Then
                DosyaAdresi = DosyaYolX.Cells(i, 1).Value
            End If

           
            If Len(DosyaAdresi) > 0 Then
                
                Set Dosya = Application.Workbooks.Open(DosyaAdresi, UpdateLinks:=0, ReadOnly:=True)

                On Error Resume Next
                Set DosyaSayfa = Dosya.Sheets(1)
                On Error GoTo 0

                If Not DosyaSayfa Is Nothing Then
                  
                    DosyaSira = WorksheetFunction.Match(UretimEmri, DosyaSayfa.Range("B:B"), 0)

                    Sonuc = DosyaSayfa.Cells(DosyaSira, "M").Value
                Else
                    Sonuc = "Sayfa Bulunamadı"
                End If

              
                EkleSutun.Cells(i, 1).Value = Sonuc

               
                Dosya.Close SaveChanges:=False
            Else
                
                MsgBox "Üretim Emri için uygun dosya adresi bulunamadı.", vbExclamation
            End If
        End If
    Next i
End Sub
 
Üst Alt