• DİKKAT

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

Dosya acmadan islem yapmak

  • Konbuyu başlatan Konbuyu başlatan zuzzu
  • Başlangıç tarihi Başlangıç tarihi
Katılım
28 Şubat 2011
Mesajlar
57
Excel Vers. ve Dili
Excel 2007
VBA ile 3 adet birbirine bagli userform olusturdum.
1. Userformda sadece directoryden kullanici incelenecek excel dosyasini sececek. Ardindan 2.Userforma gecince de o excel dosyasi üstünde farkli macro secenekleri uygulanacak. En sonunda da uygulanan makrolarin sonuclari yeni excel dosyasinda acilacak.

Asagidaki kodu yazdim ve bu sadece dosyayi secip direkt aciyor. ben arka planda secili dosyayi tutmasini istiyorum. Bir türlü beceremedim bulamadim.

Yardimlarinizi bekliyorum.


Private Sub CommandButton1_Click()

Dim Filter As String, Title As String, msg As String
Dim i As Integer, FilterIndex As Integer
Dim Filename As Variant
' File filters
Filter = "Excel Files (*.xls),*.xls," & _
"Text Files (*.txt),*.txt," & _
"All Files (*.*),*.*"
' Default filter to *.*
FilterIndex = 3
' Set Dialog Caption
Title = "Select File(s) to Open"
' Select Start Drive & Path
ChDrive ("C")
ChDir ("C:\Belgelerim/Excel_dosyalari")
With Application
' Set File Name Array to selected Files (allow multiple)
Filename = .GetOpenFilename(Filter, FilterIndex, Title, , True)
' Reset Start Drive/Path

End With
' Exit on Cancel
If Not IsArray(Filename) Then

Exit Sub
End If
' Open Files
For i = LBound(Filename) To UBound(Filename)
Workbooks.Open Filename(i)
Next i
End Sub
 
kodun açıklama bölümlerini keşke Türkçe yazsaymışsınız.
 
Mancubus,

VBA hakkinda bildiklerim o kadar az ki, hic bilmedigim seylerle harikalar yaratmak icin cabaliyorum. Internetten örnek dosya acama kodu olarak aldim ve programa koydugumda güzelce calisiyor.

Ama benim yapmak istedigim, yukarida da anlattigim gibi, sectigim excel dosyasini acmadan icinden verilerle oynayip (mesela a,b,c sütunlariyla bir grafik cizdirip), sonucu yeni excelde acmak.

Workbooks.Open Filename(i) yerine bu dosyayi arka planda tut gibi bir kod yazmam lazim. google'da da aradim bir türlü bulamiyorum.
 
sn zuzzu,

"kod yazdım" demek yerine "kod buldum" demek veya, "elimde şöyle bir kod var" demek daha uygun olur. (sizin bulduğunuz yer de o kodu bir başkasından almış olabilir; önemli değil.)

bende de aynı kod mevcut olduğundan takılmadan geçemedim.

şöyle bir şey deneyebilirsiniz.
kırmızı olan bölüme kendi ihtiyacınızı gören kodlar eklenecek. ben örnek olarak dosya ismini gösterttim.

Kod:
Sub xl_dosyalar()

Dim objXL As Object
Dim dosya As Variant
Dim kitap As Workbook
Dim i As Integer

Application.ScreenUpdating = False

Set objXL = CreateObject("Excel.Application")
With objXL
    .Visible = False
    dosya = Application.GetOpenFilename(MultiSelect:=True)
    If Not IsArray(dosya) Then
        MsgBox "Dosya seçilmedi"
        Exit Sub
    End If
    For i = LBound(dosya) To UBound(dosya)
       Set kitap = Workbooks.Open(Filename:=dosya(i))
       [COLOR="Red"]'buraya yapmak istediğiniz işlemlere yönelik kodlar / örnek aşağıda[/COLOR]        
       [COLOR="Red"]MsgBox kitap.Name[/COLOR]       
       kitap.Close SaveChanges:=False
    Next
End With

Set objXL = Nothing

Application.ScreenUpdating = True

End Sub
 
Son düzenleme:
Mancubus,

Yanitiniz icin cok tesekkür ederim. 2 gündür bunun cevabini ariyordum. Emeginiz icin tesekkürler.

Dediginiz gibi kodu yazmadim, yabanci bir siteden buldum ve uyguladim. Haklisiniz, art niyetle yazilmis bir husus degil. Bundan sonraki yazilarimda dikkat ederim.

Kod olarak degil ama fikir olarak bir sey danismak istiyorum. Uygulanacak islemler 2. Userformda bulunuyor ve kullanici da o zaman sececek. Bu secilen dosyayi bir sekilde bir degiskene atama yapsam, sonra islemlerin kodlarina da [Call.Filename(i)] seklinde bir cagirma yapip, secilen dosya üstünde oynamalar yapilabilir mi? Nasil mümkün olabilir?

Tesekkür ederim.
 
rica ederim. fakat benim değişken isimlerini Türkçe vermek dışında kodda bir emeğim yok. dediğim gibi takılmak ve bu vesile ile atladığımız bir hususa vurgu yapmak amacıyla kritik getirdim. yazılmayacak kodlar değil ama birisi yazmış. kopyala yapıştır imkanı sağladığı için bile aldığımız yeri zikretmek kadirşinaslık olacaktır.

doğru mu anladım? kullanıcı 1. form ile bir takım işlemler yapıyor. sonra 2. form açılıyor ve bu formda işlem yapılırken bir yerde yukarıdaki kodların çalışması isteniyor. eğer böyle ise, 2. forma bir "comandbutton" ekler, "click" olayına bu kodları ihtiyacıma göre revize ederek yazardım.
 
1. Userformda sadece verilerin alinacagi excel dosyasi seciliyor. sonra 2. Userforma geciliyor.
2. Userformda, 1. basamakta secilen excel dosyasina uygulanacak farkli fonksiyonlar var (checkbox halinde Fonk1, Fonk2, Fonk3 ve Fonk4 olarak belirttim).

Örnegin, kullanici Fonk1i sectigi zaman, önceden secilen excel dosyasina, Fonk1'in islemlerini yaptirsin.

Cok genel olarak sorumu tekrarlarsam; ilk asamada dosyayi acmadan sadece sectigimiz, arka planda calisan excel dosyasini, ilerki islemlerimde nasil cagirabilirim? Fonk1i kodlarken de, öncelikle önceden sectigin excel dosyasini al, komutunu eklemem lazim.

Secilen excel dosyalarinin adi sürekli degisecegi icin, bu dosya adini genelleme ile nasil tanimlarim ve cagiririm?
 
temsili verilerileri içeren örnek ana dosya, üzerinde işlem yapılacak dosyalardan yine temsili 1-2 satırlık verisi olan dosyaları sıkıştırarak eklerseniz daha fazla yardımcı olabiliriz.


diğer yandan mantık aşağıdaki gibi olur.

Kod:
Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then Call Fonk1_Makro

End Sub
 
Yanitiniz icin tekrardan tesekkür ederim.
Kurdugunuz mantigi anladim. Ancak ilk sectigimiz excel dosyasini nasil cagirmamiz gerekir?
Bütün islemler, ilk etapta secilen excel dosyasinin üstünden yapiliyor, oradan veriler aliniyor, ve islem sonrasinda yeni sonuclar baska bir word/excel'e aciliyor.

2. Userforma gectigim zaman, ilk acilan excel dosyasi hala aktif durumda kaliyor mu?

Farkindayim cok karisik, yazisarak da anlasmak zor oluyor. Dosyayi ekledim. Sheet1de hem örnek bir excel dosyasi var (secilen), hem de Start ile Makrolar basliyor. Fonksiyonlar henüz bos, cagirma islemlerini nasil yapacagimi merak ediyorum.

Vaktiniz icin tesekkürler.
 

Ekli dosyalar

evet dosyanız karmaşık.

şu satıra kadar kitap açık.
Kod:
 kitap.Close SaveChanges:=False
istediğiniz şeyi yapabilirsiniz.

Kod:
kitap.Worksheets("veriler").Rows("9").Copy _
       Destination:=ThisWorkbook.Worksheets("Sheet1").Rows("9")

kolay gelsin.
 
Yanitiniz ve vaktiniz icin cok tesekkür ederim.

Kaplumbaga hizi ile olsa da sayenizde ilerleyebiliyorum. :)

Iyi günler dilerim.
 
Geri
Üst