• DİKKAT

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

Kapalı dosyada makro ile formül

modoste

Altın Üye
Katılım
31 Mayıs 2008
Mesajlar
3,714
Excel Vers. ve Dili
Microsoft OFFİCE Ev ve İş 2019 TR
merhaba sayın hocalarım
bilgisayarımın masaüstünde Rapor adında excel çalışma sayfası var. ve bunun sayfa 1 sekmesinde B6 hücresine başka bir dosyadan veri taşıma istiyorum

taşımak istediğim veri ise
Bilgisayarım
DATA (D:)
Faaliyet klasörü
MAyıs 2019 Excel çalışma sayfasının Ö.Ctvl sekmesinin B42 hücresi

makro ile çözümünü yapabilir misiniz.
 
Aşağıdaki kodu, masaüstünde olduğunu belirttiğiniz Rapor.xlsm dosyasında yeni bir modüle yerleştirip, çalıştırın.

D:\Faaliyet\Mayıs 2019.xlsx dosyasının Ö.Ctvl sayfasındaki B42 hücresinde yer alan veri, kodların yerleştirildiği Rapor.xlsm dosyasında aktif sayfanın B6 hücresine alınacaktır....

Kod:
Sub Test()
    'Haluk - 21/05/2019
    '
    myArgs = Array("D:\Faaliyet\", "Mayıs 2019.xlsx", "Ö.Ctvl", "B42")
    argXL4 = "'" & myArgs(0) & "[" & myArgs(1) & "]" & myArgs(2) & "'!" & Range(myArgs(3)).Address(ReferenceStyle:=xlR1C1)
    Range("B6") = ExecuteExcel4Macro(argXL4)
End Sub


.
 
Son düzenleme:
sayın haluk hocam yarın sabah ofisteki pc de deneyecem

hocam eğer birden fazla klasör varsa yani Faaliyet klasörü içinde 2019 klasörü içinde olsaydı makro nasıl değişirdi.
 
Rich (BB code):
Sub Test()
    'Haluk - 21/05/2019
    '
    myArgs = Array("D:\Faaliyet\2019\", "Mayıs 2019.xlsx", "Ö.Ctvl", "B42")
    argXL4 = "'" & myArgs(0) & "[" & myArgs(1) & "]" & myArgs(2) & "'!" & Range(myArgs(3)).Address(ReferenceStyle:=xlR1C1)
    Range("B6") = ExecuteExcel4Macro(argXL4)
End Sub

.
 
anladım hocam çok teşekkür ederim
 
makroyu uyguladım ve sonuç aldım teşekkür ederim hocam
bazı sorularım olcak hocam dosya açıkken de makro çalışırmı (kapalı dosya değil yani)
diğer sorum ise makronun çalışacağı dosyam masaüstünde değilde
DATA (D:)
Faaliyet klasörü
RApor çalışma sayfası ise kod nasıl değişir hocam yoksa değişen birşey olmaz mı
 
-Verinin alınacağı dosya açık veya kapalı olabilir, fark etmez.

-Kodun yazıldığı dosyanın masaüstünde olması gerekmez, herhangi bir yerde olabilir.

.
 
makro kodundaki
myArgs = Array("D:\Faaliyet\2019\", "Mayıs 2019.xlsx", "Ö.Ctvl", "B42") bu kısım nereden veri alınacağını belirtiyo

makronun uygulanacak dosyanın konumu ile ilgili bir kod yok yani hocam
doğru mu anladım.
 
Evet... aktif dosyanın, aktif sayfasında B6 hücresine veriyi yazar.

.
Merhaba. Kafama takılan ufak bir soru var. Şöyle ben bu verinin çekirdiği dosyayı sürekli değiştirmek istiyorum. Ondan dolayı da kod satırına girip her seferinde dosya yerini değiştirmek yerine excelde gözat gibisinden bir buton olabilir mi? Ona tıkladığımda bir şeçim penceresi açılsa ve ben dosyayı şeçsem. Ama burada önemli olan dosya yeri farklı ama verinin çekildiği sayfa ve hücre aynı sadece değişen yeri ve dosyanın ismi olacak. Yani kod satırında dosya konumunun olduğu yere bir değişken atayabilir miyiz?
 
...........
............... tıkladığımda bir şeçim penceresi açılsa ve ben dosyayı şeçsem. Ama burada önemli olan dosya yeri farklı ama verinin çekildiği sayfa ve hücre aynı sadece değişen yeri ve dosyanın ismi olacak. Yani kod satırında dosya konumunun olduğu yere bir değişken atayabilir miyiz?

Aşağıdaki kodlarla dosya seçimi yapılabilecektir. Sabit olan sayfa adı ve verinin alınacağı hücre kodlarda aşağıda kırmızı renkle belirtilmiştir....

Rich (BB code):
Sub Test2()
    'Haluk - 23/05/2019
    'E-posta:sa4truss@gmail.com
    '
    Dim FD As FileDialog
    Dim MyFile As String, MySheet As String, myRange As String
    Dim strFolder As String, strFile As String
    Dim strSheet As String, strRange As String
    Dim myArgs() As Variant, argXL4 As String
    
    Set FD = Application.FileDialog(msoFileDialogOpen)
    
    FD.Title = "Dosya seçin..."
    FD.Filters.Clear
    FD.Filters.Add "Excel dosyası", "*.xlsx; *.xlsm"
    FD.AllowMultiSelect = False
    
    If FD.Show = -1 Then
        MyFile = FD.SelectedItems(1)
        
        strFolder = Left(MyFile, InStrRev(MyFile, Application.PathSeparator))
        strFile = Replace(MyFile, strFolder, "")
        strSheet = "Ö.Ctvl"
        strRange = "B42"
        
        myArgs = Array(strFolder, strFile, strSheet, strRange)
        argXL4 = "'" & myArgs(0) & "[" & myArgs(1) & "]" & myArgs(2) & "'!" & Range(myArgs(3)).Address(ReferenceStyle:=xlR1C1)
        Range("B6") = ExecuteExcel4Macro(argXL4)
    Else
        MsgBox "Dosya seçimi yapılmadı....!"
    End If
    
    Set FD = Nothing
End Sub

.
 
Son düzenleme:
Aşağıdaki kodlarla dosya seçimi yapılabilecektir. Sabit olan sayfa adı ve verinin alınacağı hücre kodlarda aşağıda kırmızı renkle belirtilmiştir....

Rich (BB code):
Sub Test2()
    'Haluk - 23/05/2019
    'E-posta:sa4truss@gmail.com
    '
    Dim FD As FileDialog
    Dim MyFile As String, MySheet As String, myRange As String
    Dim strFolder As String, strFile As String
    Dim strSheet As String, strRange As String
    Dim myArgs() As Variant, argXL4 As String
   
    Set FD = Application.FileDialog(msoFileDialogOpen)
   
    FD.Title = "Dosya seçin..."
    FD.Filters.Clear
    FD.Filters.Add "Excel dosyası", "*.xlsx; *.xlsm"
    FD.AllowMultiSelect = False
   
    If FD.Show = -1 Then
        MyFile = FD.SelectedItems(1)
       
        strFolder = Left(MyFile, InStrRev(MyFile, Application.PathSeparator))
        strFile = Replace(MyFile, strFolder, "")
        strSheet = "Ö.Ctvl"
        strRange = "B42"
       
        myArgs = Array(strFolder, strFile, strSheet, strRange)
        argXL4 = "'" & myArgs(0) & "[" & myArgs(1) & "]" & myArgs(2) & "'!" & Range(myArgs(3)).Address(ReferenceStyle:=xlR1C1)
        Range("B6") = ExecuteExcel4Macro(argXL4)
    Else
        MsgBox "Dosya seçimi yapılmadı....!"
    End If
   
    Set FD = Nothing
End Sub

.
Bunların hepsini gözat diye bir butonun içinemi yazmam gerekiyor.
 
Kodları yeni bir modüle olduğu gibi yapıştırın, sonra kendi butonunuza kod olarak;

Kod:
Call Test2

Yazın, butonu tıklayın ....

.
 
Kodları yeni bir modüle olduğu gibi yapıştırın, sonra kendi butonunuza kod olarak;

Kod:
Call Test2

Yazın, butonu tıklayın ....

.
Elinize sağlık çalıştı ama ben sayfa 2 veya daha fazla sayfadanda veri çekmek istiyorum. Bunu nasıl yapabiliriz.
 
Elinize sağlık çalıştı ama ben sayfa 2 veya daha fazla sayfadanda veri çekmek istiyorum. Bunu nasıl yapabiliriz.

Ücretli bir danışmanlık hizmeti almak isterseniz, özel mesajla bana ulaşabilirsiniz...

.
 
Merhaba @Haluk hocam yazdığınız kod ile (2 nolu mesaj) sabit bir hücreye sabit bir veri alınıyor (istek bu şekilde olduğu için tabi) peki ben bu mantık ile düşeyara yapabilir miyim acaba , yani aktif açık dosyamdaki I sütundaki bir veriyi kapalı dosyadaki bu veriyi A sütununda bulup 2. sütundaki veriyi verecek .Tabi bunu sizin yazdığınız kod mantığı ile. Tekrardan Teşekkür ederim.
 
Telefondan yazdigim icin cok fazla detay veremiyorum ama; forumda "kapali dosya dusey ara ADO" gibi arama yaparsaniz, benim hazirladigim dosya orneklerine ulasabilirsiniz...

.
 
Teşekkur ederim Haluk hocam sizin örneklerinizi inceleyecegim .
 
Geri
Üst