• DİKKAT

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

Kopyala ilk boş satıra yapıştır makrosu

Katılım
22 Ekim 2012
Mesajlar
100
Excel Vers. ve Dili
2007 Türkçe
2016 Türkçe
Arkadaşlar merhaba;
Sorumu başka bir başlık altında sordum ancak yardım alamadım. Bu sebeple yeni bir konu açmak durumunda kaldım kusura bakmayın. Sorunuma gelince kendime müşteri bilgilerini saklamak için bir dosya hazırlıyorum. Bunun içinde bir excel dosyasını veri dosyası olarak kullanacagım. Yeni gelen bilgileri bu dosyada en son boş satıra kaydetmek istiyorum. Bunun için aşağıdaki kodu düzenlemeye çalıştım ancak "Object doesn't support this property or method" hatası veriyor. Kodu nasıl düzeltmem gerektiği konusunda yardımınızı rica ederim.
Kod:
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Windows("FalconTr.xlsm").Activate
Sheets("MasrafGirişleri").Select
Range("A9:E50").Select
Selection.Copy
Workbooks.Open (ThisWorkbook.Path & "\Data\HData.xlsm")
Sheets("data1").Select
sonsatır = Cells(Rows.Count, "B").End(3).Row + 1
Cells(sonsatır, "B").Range
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Workbooks("GData").Close True
Application.ScreenUpdating = True
End Sub
 
Cells(sonsatır, "B").Range

kısmını

Cells(sonsatır, "B").Select

olarak dener misiniz?
 
Maalesef bu sefer bu satırda "Range sınıfının Select yönetimi başarısız" uyarısı verdi.
 
O satırda Range ile ilgili bir şey mi var?
 
Boş dosya sadece A sütununda sıra numarası onun dışında birşey bulunmuyor.
 
Yardımcı olması için örnek klasör ekledim.
 

Ekli dosyalar

Nedense HData dosyasını açıp Data1 sayfasını seçtiğimiz halde ondan sonraki kodları FalconTR dosyasında çalıştırmaya devam ediyor. deneme amaçlı sonsatır'ı G34 hücresine yaz şeklinde satır ekledim ve FalconTR dosyasının MasrafGirişleri sayfasının G34 hücresine 51 yazdı. Halbuki HData dosyasının data1 sayfasının G34 hücresine 41 yazmalıydı.

Çözemedim.
 
Benden benzer hatalarla karşılaştım ve neden böyle yaptığının içinden çıkamadım. Yardımınız için yineden çok teşekkür ederim. Sorunu çözecek birisi çıkar diye düşünüyorum.
 
Merhaba, deneme yapmış değilim ama;
HData.xlsm belgesini aktif belge haline getirdikten sonra
(yani bir Activate satırı ekledikten sonra)
Data1 sayfasının seçilmesi gerekmez mi acaba?
 
Kodu aşağıdaki gibi değiştirdim ancak "Object doesn't support this property or method" hatası verdi.Acaba başka bir kod yazarak çözebilir miyiz?
Kod:
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Windows("FalconTr.xlsm").Activate
Sheets("MasrafGirişleri").Select
Range("A9:E50").Select
Selection.Copy
Workbooks.Open (ThisWorkbook.Path & "\Data\HData.xlsm")
Windows("HData.xlsm").Activate
Sheets("data1").Range
'Workbooks("HData").Range
'Sheets("data1").Select
sonsatır = Cells(Rows.Count, "B").End(3).Row + 1
Cells(sonsatır, "B").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Workbooks("GData").Close True
Application.ScreenUpdating = True
End Sub
 
Daha önce de belirttiğim gibi .Range diye bir kullanım yok. O hatayı ondan veriyor. .Select olması lazım ama o da çalışmıyor. Activate'nin kullanımını çözmek lazım.
 
Kodu şimdide bu şekilde yaptım. Bu seferde "Cells(sonsatır, "B").Select" satırında aynı hatayı veriyor.

Kod:
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Workbooks.Open (ThisWorkbook.Path & "\Data\HData.xlsm")
Windows("FalconTr.xlsm").Activate
Sheets("MasrafGirişleri").Select
Range("A9:E50").Select
Selection.Copy
Windows("HData.xlsm").Activate
Sheets("data1").Select
sonsatır = Cells(Rows.Count, "B").End(3).Row + 1
Cells(sonsatır, "B").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Workbooks("GData").Close True
Application.ScreenUpdating = True
End Sub
 
Kodu şimdide bu şekilde yaptım. Bu seferde "Cells(sonsatır, "B").Select" satırında aynı hatayı veriyor.

Kod:
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Workbooks.Open (ThisWorkbook.Path & "\Data\HData.xlsm")
Windows("FalconTr.xlsm").Activate
Sheets("MasrafGirişleri").Select
Range("A9:E50").Select
Selection.Copy
Windows("HData.xlsm").Activate
Sheets("data1").Select
sonsatır = Cells(Rows.Count, "B").End(3).Row + 1
Cells(sonsatır, "B").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Workbooks("GData").Close True
Application.ScreenUpdating = True
End Sub

Hdata dosyasını açıp programa Gdata dosyasını kapatmasını istiyorsunuz..
 
Şu şekilde yapınca oldu:

Kod:
Private Sub CommandButton2_Click()

Sheets("MasrafGirişleri").Select
Range("A9:E50").Select
Selection.Copy
Workbooks.Open (ThisWorkbook.Path & "\Data\HData.xlsm")
Windows("HData.xlsm").Activate
Sheets("data1").Select
Sheets("data1").Activate
sonsatır = Workbooks("HData.xlsm").Sheets("data1").Cells(Rows.Count, "B").End(3).Row + 1
Workbooks("HData.xlsm").Sheets("data1").[g34] = sonsatır
Workbooks("HData.xlsm").Sheets("data1").Cells(sonsatır, "B").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
ActiveWorkbook.Save
ActiveWorkbook.Close
Windows("FalconTr.xlsm").Activate
Application.CutCopyMode = False
[d1].Select

End Sub
 
Çok teşekkür ederim. Denedim sorunsuz çalışıyor.
 
Merhaba,

Bu tarz sorunlar yaşamamak için objeleri setleyerek hafızaya almalısınız.

Kod:
Private Sub CommandButton2_Click()
    Dim K1 As Workbook, S1 As Worksheet, K2 As Workbook, S2 As Worksheet, Son As Long
    Application.ScreenUpdating = False
    Set K1 = ThisWorkbook
    Set S1 = K1.Sheets("MasrafGirişleri")
    Son = S1.Cells(S1.Rows.Count, "A").End(3).Row
    Set K2 = Workbooks.Open(K1.Path & "\Data\HData.xlsm")
    Set S2 = K2.Sheets("data1")
    S1.Range("A9:E" & Son).Copy
    Son = S2.Cells(S2.Rows.Count, "B").End(3).Row + 1
    S2.Cells(Son, "B").PasteSpecial Paste:=xlPasteValues
    K2.Save
    K2.Close 0
    Set S2 = Nothing
    Set K2 = Nothing
    Set S1 = Nothing
    Set K1 = Nothing
    Application.ScreenUpdating = True
    MsgBox "Verileriniz aktarılmıştır.", vbInformation
End Sub
 
Korhan Bey ilginiz için teşekkür ederim. Objeleri setlemek kısmını kendime not aldım. Tekrar teşekkürler.
 
Geri
Üst