Excel Vba Forum - Excelce.Net

SORU ve CEVAPLAR (Yazılabilir) => Microsoft Excel, Vba, Makro, Formül vb. Soruları => Çözülen Excel, Vba, Makro, Formül vb. Soruları => Konuyu başlatan: drejan62 - 16 Nisan 2010, 10:58:35

Başlık: [Çözüldü] Açılacak Dosyayı Kullanıcıya Sormak
Gönderen: drejan62 - 16 Nisan 2010, 10:58:35
Merhabalar,
Programda veri almamız gereken bir dosya olsun ama bu dosyanın hangi adreste olduğunu kullanıcı kendisi seçsin.
Şöyleki Belgelerim Klasörü içinde "lise" isimli bir excel dosyamız olsun. Hazırladığımız  herhangi bir excel dosyasında (adı "ayıklama" olsun) programımızı çalıştırdığımızda, kullanıcıya verileri alacağı adresi soran bir menü çıksa ve kullanıcı belgelerim klasörü içindeki "lise" isimli dosyalı saçip tamam tuşuna bastıktan sonra lise isimli dosya açılsa ve açılan ilk safyayı kopyalayıp programın kayıtlı olduğu "ayıklama" isimli dosyanın Sayfa1 ine yapıştırıp "lise" lise isimli dosyayı kapatsa,
Bunu kodla yazabilirmiyiz.
teşekkürler
Başlık: Ynt: Açılacak Dosyayı Kullanıcıya Sormak
Gönderen: qbilay06 - 16 Nisan 2010, 11:22:28
Merhaba,
Amacınız tam olarak istenilen herhangi bir excel dosyasından veri almak ise , AD TANIMLAMA işlemi ile sanırım işiniz hallolacaktır.
LİSE dosyanızda A sütunu İSİM sütunu diye düşünürsek, AD TANIMLAMA ile LİSE dosyasının İSİM sütununa bir etiket verip kullanabiliyorsunuz. Verilen etiket " DENEME" olsun.Herhangi bir excel sayfasında iken DENEME olarak yazdığınız zaman, excel işlemi otomatik olarak LİSE sayfasının A sutünu olarak algılıyor.
Umarım isteğinize bir ışık tutabilmişimdir. Eğer isteğiniz, bu doğrultuda ise örnek dosyada ekleyebilirim. Fakat LİSE dosyası açılacak,kopylayacak sonra kapanacak kısımlarına dair bir çözüm üretemeyeceğim  :). O konuda üstadlara iş düşüyor.
Saygılar...
Başlık: Ynt: Açılacak Dosyayı Kullanıcıya Sormak
Gönderen: drejan62 - 16 Nisan 2010, 11:25:25
qbilay bey teşekkür ederim. Tam istediğim bu değil.
LİSE isimli dosya herzaman aynı klasör içinde bulunmayabilir bu nedenle kullanıcıya sormak istiyorum.
Başlık: Ynt: Açılacak Dosyayı Kullanıcıya Sormak
Gönderen: Bülent Öztürk - 16 Nisan 2010, 11:44:44
Merhaba.

Şöyle bir çözüm işinize yarar mı?

Kod: [Seç]
Sub Excelce_DosyaAc_Veri_Al()
dosya = Application.Dialogs(xlDialogOpen).Show
Application.DisplayAlerts = False
If dosya = True Then
dosya_adi = ActiveWorkbook.Name
Cells.Copy
ThisWorkbook.Activate
Range("A1").PasteSpecial (xlPasteAll)
Workbooks(dosya_adi).Close False
End If
Application.DisplayAlerts = True
End Sub
Başlık: Ynt: Açılacak Dosyayı Kullanıcıya Sormak
Gönderen: drejan62 - 16 Nisan 2010, 11:59:53
Tamamdır üstat
teşekkür ederim.
Başlık: Ynt: Açılacak Dosyayı Kullanıcıya Sormak
Gönderen: Orion1 - 16 Nisan 2010, 12:03:34
Ekli dosya ile ado ile dosya kapalı iken veri alınıyor.
Yalnız veri alına dosyada sayfa1 den alınıyor.
Başka sayfadan veri almak için kodda sayfa1$ yazan yeri değiştiriniz.
Dosya ektedir.
Kod: [Seç]
Sub kapali_veri_al()
Dim dosya, conn As Object, rs As Object
ChDir (CreateObject("wscript.shell").SpecialFolders(16))
dosya = Application.GetOpenFilename(filefilter:="Excel Dosyaları,*.xls", Title:="Dosya Seçiniz, evrengizlen@hotmail.com")
If dosya = False Then Exit Sub
Set conn = CreateObject("AdoDb.Connection")
Set rs = CreateObject("AdoDb.Recordset")
Sheets("Sayfa1").Select
Cells.ClearContents
conn.Open "Provider=microsoft.jet.oledb.4.0;data source=" & dosya & ";extended properties=""excel 8.0;hdr=No"""
On Error GoTo hata
rs.Open "Select * from [Sayfa1$];", conn, 1, 1
On Error GoTo 0
Range("A1").CopyFromRecordset rs
MsgBox "Dış veri alındı" & vbLf & _
"evrengizlen@hotmail.com", vbOKOnly + vbInformation, "E V R E N"
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
Exit Sub
hata:
MsgBox "Veri aldığınız dosyada sayfa1 isimli sayfa yoktur.", vbCritical, "UYARI"
Set rs = Nothing
Set conn = Nothing
End Sub

[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Başlık: Ynt: Açılacak Dosyayı Kullanıcıya Sormak
Gönderen: drejan62 - 16 Nisan 2010, 16:12:33
Evren üstad teşekkürler