• DİKKAT

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

Kodlardaki Hata! Hk.

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,989
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Selamlar
Ekteki dosyada kapalı dosya seçerek (Burada Data dosyası) veri çekerken InputBox ile Hücre aralıklarını belirtiyorum. Ama kodlar hata veriyor. Sorunun kaynağını bulamadım.

Teşekkürler
 

Ekli dosyalar

dosyanızı dış siteye yükleyebilir misiniz?
normal üye olduğumdan dosyayı indiremiyorum.
 
Set kopya = Application.InputBox("Kopyalamak İstediğiniz Hücreyi Giriniz..!", Type:=8)
 
siz kopya değişkenini range olarak tanımlamışsınız, oysa inputbox basit bir değer gönderir o nedenle atamayı aşağıdaki gibi tanımlayıp dener misiniz
Set kopya = ActiveSheet.Range(InputBox("Kopyalamak İstediğiniz Hücre Aralığını Giriniz..!", Default:="A2"))
burada ActiveSheet yerine sayfa adı da yazılabilir
 
Range olarak tanımlamışısınız. Hata vermez, çalışıyor. Aşğıdaki linkten kontrol edebilirsiniz.
Application.InputBox method (Excel) | Microsoft Learn
Ama kodunuzda daha ciddi bir hata var.
Alan seçmeden dosyayı açmanız gerekmiyormu?
Diğer bir konu ise kapalı dosya ise buna neden gerek duydunuz? Biraz fanteziye kaçmışsınız sanki.
 
siz kopya değişkenini range olarak tanımlamışsınız, oysa inputbox basit bir değer gönderir o nedenle atamayı aşağıdaki gibi tanımlayıp dener misiniz
Set kopya = ActiveSheet.Range(InputBox("Kopyalamak İstediğiniz Hücre Aralığını Giriniz..!", Default:="A2"))
burada ActiveSheet yerine sayfa adı da yazılabilir

Sayın: @haliliyas
değişkenleri de düzelttim, Yine hata verdi
 
Range olarak tanımlamışısınız. Hata vermez, çalışıyor. Aşğıdaki linkten kontrol edebilirsiniz.
Application.InputBox method (Excel) | Microsoft Learn
Ama kodunuzda daha ciddi bir hata var.
Alan seçmeden dosyayı açmanız gerekmiyormu?
Diğer bir konu ise kapalı dosya ise buna neden gerek duydunuz? Biraz fanteziye kaçmışsınız sanki.

Üstad
doğru söylüyorsunuz, Ama ihtiyaç halinde yapabilmek adına öğrenmek istediğimden kaynaklanıyor
 
Sayın: @Erkan Akayay
Sayın: @haliliyas

Aşağıdaki kodlarla Sorun çözüldü.
İlgi ve alakalarınızdan dolayı çok teşekkür ederim.

Kod:
Sub KapaliDosyadanVeriCek()
Dim kopya As Variant: Dim yapistir As Variant: Dim kaynak As Variant
            Range("A2:E" & Rows.Count).Clear
            With Application.FileDialog(msoFileDialogOpen)
            .Filters.Clear
            .Filters.Add "Microsoft Excel", "*.xls;*.xlsx;*.xlsm;*.xlsb"
            .AllowMultiSelect = False
            .Show
           
            If .SelectedItems.Count = 0 Then
                  MsgBox "Veri çekmek istediğiniz Excel dosyasını seçiniz..!", vbInformation
                  Exit Sub
            End If
           
            kopya = InputBox("Kopyalamak İstediğiniz Hücre Aralığını Giriniz.", Default:="A2")
            yapistir = InputBox("Yapıştırmak İstediğiniz Hücreyi Giriniz.", Default:="A2")
     
            Application.Workbooks.Open .SelectedItems(1)
            Set kaynak = Application.ActiveWorkbook
     
            kaynak.ActiveSheet.Range(kopya).Copy ThisWorkbook.ActiveSheet.Range(yapistir)
            kaynak.Close False
            Set kaynak = Nothing
     
      End With
End Sub
 
amacınız kapalı dosyadan veri almaksa bunu ADO ile yapabilirsiniz
 
Kod:
kopya = InputBox("Kopyalamak İstediğiniz Hücre Aralığını Giriniz.", Default:="A2")
            yapistir = InputBox("Yapıştırmak İstediğiniz Hücreyi Giriniz.", Default:="A2")
    
            Application.Workbooks.Open .SelectedItems(1)

Sayfayı açmadan hangi aralığı kopya ile tanıtıyorsunuz?
 
tek hücre için executeexcel4macro de kullanılabilir
 
kitabı açmadan sadece belli hücrelerdeki veriyi almak için aşağıdaki kod kullanılabilir, veri msgbox ile gösteriliyor ama siz onu istediğiniz değişkene atayabilirsiniz

Kod:
   kopya = Range(InputBox("Kopyalamak İstediğiniz Hücre Aralığını Giriniz..!", Default:="A2")).Address(ReferenceStyle:=xlR1C1)
   Adres = "'" & Replace(.SelectedItems(1), Dir(.SelectedItems(1)), "[" & Dir(.SelectedItems(1))) & "]Sayfa1'!" & kopya
           MsgBox ExecuteExcel4Macro(Adres)
 
kitabı açmadan sadece belli hücrelerdeki veriyi almak için aşağıdaki kod kullanılabilir, veri msgbox ile gösteriliyor ama siz onu istediğiniz değişkene atayabilirsiniz

Kod:
   kopya = Range(InputBox("Kopyalamak İstediğiniz Hücre Aralığını Giriniz..!", Default:="A2")).Address(ReferenceStyle:=xlR1C1)
   Adres = "'" & Replace(.SelectedItems(1), Dir(.SelectedItems(1)), "[" & Dir(.SelectedItems(1))) & "]Sayfa1'!" & kopya
           MsgBox ExecuteExcel4Macro(Adres)
olabilir tabi ki
 
Kod:
kopya = InputBox("Kopyalamak İstediğiniz Hücre Aralığını Giriniz.", Default:="A2")
            yapistir = InputBox("Yapıştırmak İstediğiniz Hücreyi Giriniz.", Default:="A2")
   
            Application.Workbooks.Open .SelectedItems(1)

Sayfayı açmadan hangi aralığı kopya ile tanıtıyorsunuz?
Üstad
Sanırım dosya arkada açılıyor. Ondan sonra aralığı girebiliyoruz.
 
Geri
Üst