Mdemir63
Altın Üye
- Katılım
- 7 Temmuz 2006
- Mesajlar
- 2,989
- Excel Vers. ve Dili
- Ofis2010 32Bit Türkçe
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
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.
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
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)
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 kikitabı 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)
ÜstadKod: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?