SORU ve CEVAPLAR (Yazılabilir) > Çözülen Excel, Vba, Makro, Formül vb. Soruları
[Çözüldü] Kapalı Excel Çalışma Kitaplarından Veri Çekmek
drejan62:
Merhabalar,
c:\Belgelerim\Maaşlar Klasörü içinde
Maaş1, Maaş2, Maaş3, Maaş4, Maaş5 isimli dosyalarımız var.
Bu dosyalarda veriler 7. satırdan başlıyor ve satır sayısı değişken,
Amacım kodları yazdığım Çalışma kitabında Sayfa1'e bu maaşları alt alta kaydetmek. Yanlız ilk maaşı1 sayfasını 7. satırdan en son satıra kadar alacak sonraki maaş2,3,5 çalışma kitaplarını ise 8, satırdan son satıra kadar alarak alt alta kaydedecek.
ben alttaki kodları deniyorum ama zaman alıyor haliyle,
zaman kazanmak için kodları kısaltabilirmiyiz,
Teşekkürler
--- Kod: ---
Workbooks.Open Filename:="C:\\Belgelerim\Maaşlar \Maaş1.xls"
Range("C7").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("TümMaaş.xls").Activate
Sheets("Sayfa1").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Selection.End(xlDown).Select
Windows("Maaş1.xls").Activate
ActiveWorkbook.Close False
Workbooks.Open Filename:="C:\\Belgelerim\Maaşlar \Maaş2.xls"
Range("C8").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("TümMaaş.xls").Activate
Sheets("Sayfa1").Select
ActiveCell.Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
Range("A1").Select
Selection.End(xlDown).Select
Windows("Maaş2.xls").Activate
ActiveWorkbook.Close False
--- Kod sonu ---
Orion1:
--- Alıntı yapılan: drejan62 - 19 Ağustos 2010, 11:09:20 ---Merhabalar,
c:\Belgelerim\Maaşlar Klasörü içinde
Maaş1, Maaş2, Maaş3, Maaş4, Maaş5 isimli dosyalarımız var.
Bu dosyalarda veriler 7. satırdan başlıyor ve satır sayısı değişken,
Amacım kodları yazdığım Çalışma kitabında Sayfa1'e bu maaşları alt alta kaydetmek. Yanlız ilk maaşı1 sayfasını 7. satırdan en son satıra kadar alacak sonraki maaş2,3,5 çalışma kitaplarını ise 8, satırdan son satıra kadar alarak alt alta kaydedecek.
ben alttaki kodları deniyorum ama zaman alıyor haliyle,
zaman kazanmak için kodları kısaltabilirmiyiz,
Teşekkürler
--- Kod: ---
Workbooks.Open Filename:="C:\\Belgelerim\Maaşlar \Maaş1.xls"
Range("C7").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("TümMaaş.xls").Activate
Sheets("Sayfa1").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Selection.End(xlDown).Select
Windows("Maaş1.xls").Activate
ActiveWorkbook.Close False
Workbooks.Open Filename:="C:\\Belgelerim\Maaşlar \Maaş2.xls"
Range("C8").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("TümMaaş.xls").Activate
Sheets("Sayfa1").Select
ActiveCell.Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
Range("A1").Select
Selection.End(xlDown).Select
Windows("Maaş2.xls").Activate
ActiveWorkbook.Close False
--- Kod sonu ---
--- Alıntı sonu ---
Örnek dosyaları eklerseniz bir şeyler yaparız.
drejan62:
Üstad,
Örnek dosya eklidim.
Teşekkür ederim.
Maaş1 ve Maaş2 dosyalırındaki veriler
Tümmaş dosyasındaki Sayfa1 e kopyalanacak.
sağolun
[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
Orion1:
Dosyanız ektedir. :cooll
--- Kod: ---Sub aktar_59()
Dim i As Byte, conn As Object, rs As Object, sat As Long
Dim dosya As String
Sheets("Sayfa1").Select
sat = 2
Range("A2:M65536").ClearContents
Application.ScreenUpdating = False
Set conn = CreateObject("AdoDb.Connection")
Set rs = CreateObject("AdoDb.Recordset")
For i = 1 To 2
dosya = "Maaş" & i & ".xls"
If Dir(ThisWorkbook.Path & "\" & dosya) = "" Then
MsgBox ThisWorkbook.Path & "\" & dosya & " Bulunamdı.", vbCritical, "UYARI"
Else
conn.Open "Provider=Microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "\" & dosya & ";extended properties=""Excel 8.0;Hdr=no;imex=1"";"
rs.Open "Select * from [Sayfa1$A8:M65536];", conn, 1, 1
If rs.RecordCount > 0 Then
Range("A" & sat).CopyFromRecordset rs
sat = Cells(65536, "A").End(xlUp).Row + 1
End If
rs.Close: conn.Close
End If
Next i
Set rs = Nothing: Set conn = Nothing
Application.ScreenUpdating = True
If Cells(65536, "A").End(xlUp).Row > 1 Then
MsgBox "Veriler aktarıldı." & vbLf & _
"evrengizlen@hotmail.com", vbOKOnly + vbInformation, "E V R E N"
End If
End Sub
--- Kod sonu ---
[Forum yazılım güncelleme esnasında sorun oluştuğundan eklendi silinmiştir.]
drejan62:
Teşekkürler üstad.
Çok sağol
Navigasyon
[0] Mesajlar
[#] Sonraki Sayfa
Tam sürüme git