Kapalı dosyadan buton ile veri alma.

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,272
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodun aşağıdaki satırı temizleme işlemi yapıyor.

Range("H2:I" & Rows.Count).ClearContents

H2 hücresinden başlıyor I sütunu son satıra kadar temizlene yapıyor.

Aşağıdaki satırda kayıt setini H2 hücresinden itibaren hücreye aktarıyor.

Range("H2").CopyFromRecordset rs
 
Katılım
13 Mart 2022
Mesajlar
18
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
15-03-2023
Korhan bey 1 ve 2 aktarma makrolari ile istedigim sekilde aktariyorum burada sorun yok. Ancak aktarma 1 makrosunu tekrar calistırıram makro2 nin bilgilerinide siliyor. Makrolarda silinecek yani H2:I bölgesini H2:I11 olarak kabul etmiyor, bunu nasil cözebiliriz. Tsk ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,272
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tasarladığınız kodu ya da örnek dosyalarınızı ekleyip açıklarsanız daha hızlı yanıt alırsınız.
 
Katılım
13 Mart 2022
Mesajlar
18
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
15-03-2023
Merhaba arkadaslar... asagıdaki makro sorunsuz calısıyor ancak acılan dosya ac ekranında iptal dedigimizde makro hata veriyor... nereye ekleme yapabiliriz...
Sub Düğme1_Tıklat()
Dim conn As Object, rs As Object, yol As String, dosya
Range("H2:I" & Rows.Count).ClearContents
Set conn = CreateObject("Adodb.Connection")
Set rs = CreateObject("Adodb.Recordset")
ChDir (ThisWorkbook.Path)
dosya = Application.GetOpenFilename("Excel Dosyaları,xlsx", , "LÜTFEN DOSYAYI SEÇİNİZ")
conn.Open "Provider=microsoft.ace.oledb.12.0;data source=" & dosya & ";extended properties=""excel 12.0;hdr=yes"";"
rs.Open "Select [Başlık 1],[Başlık 2] from [Sayfa1$A1:F" & Rows.Count & "]", conn, 1, 1
If rs.RecordCount > 0 Then Range("H2").CopyFromRecordset rs
rs.Close: conn.Close
MsgBox "Aktarma yapıldı."
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,272
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Düğme1_Tıklat()
    Dim conn As Object, rs As Object, yol As String, dosya
    Range("H2:I" & Rows.Count).ClearContents
    Set conn = CreateObject("Adodb.Connection")
    Set rs = CreateObject("Adodb.Recordset")
    ChDir (ThisWorkbook.Path)
    dosya = Application.GetOpenFilename("Excel Dosyaları,xlsx", , "LÜTFEN DOSYAYI SEÇİNİZ")
    If dosya = False Then
        MsgBox "Dosya seçimi yapmadığınız için işleminiz iptal edilmiştir.", vbExclamation
        Exit Sub
    End If
    conn.Open "Provider=microsoft.ace.oledb.12.0;data source=" & dosya & ";extended properties=""excel 12.0;hdr=yes"";"
    rs.Open "Select [Başlık 1],[Başlık 2] from [Sayfa1$A1:F" & Rows.Count & "]", conn, 1, 1
    If rs.RecordCount > 0 Then Range("H2").CopyFromRecordset rs
    rs.Close: conn.Close
    MsgBox "Aktarma yapıldı."
End Sub
 
Katılım
22 Şubat 2021
Mesajlar
106
Excel Vers. ve Dili
Ofis 360 Türkçe
Herkese merhabalar, bende kapalı ANA-DOSYA.xlsm adında uzantısını bıldıgım bir dosyadan veri almak istiyorum nasıl yapabilirim? şimdiden teşekkür ederim.
 

antitez21

Altın Üye
Katılım
26 Ocak 2013
Mesajlar
40
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
11-05-2027
Korhan bey merhaba,

Aşağıdaki koda "select" kısmına üçüncü bir başlık eklemek istediğimde hata alıyorum. Sadece 2 sütundaki verileri aktarıyor. Ama üçüncü bir sütun için "Select [Stok Adı],[Temel Mik.],[Tutarı (KDV Dahil)] from...aralıkta bulunan bir başlık daha eklediğimde geçerli bir ad değil hatası alıyorum. Yardımcı olabilirseniz çok memnun olurum.

Sub Düğme1_Tıklat()
Dim conn As Object, rs As Object, yol As String
Sheets("veri").Range("A2:C" & Rows.Count).ClearContents
Set conn = CreateObject("Adodb.Connection")
Set rs = CreateObject("Adodb.Recordset")

yol = ThisWorkbook.Path
conn.Open "Provider=microsoft.ace.oledb.12.0;data source=" & yol & "\Temp1.xlsx;extended properties=""excel 12.0;hdr=yes"";"
rs.Open "Select [Stok Adı],[Temel Mik.],[Tutarı (KDV Dahil)] from [Temp1$a1:F" & Rows.Count & "]", conn, 1, 1
If rs.RecordCount > 0 Then Sheets("veri").Range("A2").CopyFromRecordset rs
rs.Close: conn.Close

MsgBox "Aktarma yapıldı."
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,272
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sütun başlıklarında kullanılan nokta sorun yaratmaktadır.

Aşağıdaki şekilde bu sorunu aşabilirsiniz.

[Temel Mik#]
 

antitez21

Altın Üye
Katılım
26 Ocak 2013
Mesajlar
40
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
11-05-2027
Vallahi bilgi güçtür ne diyeyim. Çok teşekkür ederim.
 
Üst