• DİKKAT

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

Dosyayı Excele Aktarma

İki ayrı makro ile yaparım tek makroyla olurmu? Biraz uğraşayım hocam
 
ADO kodlamasında istenen sütunları kayıt setine alabiliyorsunuz. Fakat sayfaya yazdırma işleminde sütun atlatma oluyormu bilmiyorum açıkçası..

Kayıt seti verileri diziye alınarak büyük ihtimalle yapılabilir. Ama ben olsam varolan bilgimle iki sorgu üzerinden ilerlerdim.
 
Hocam yine kapalı bi excel dosyam var ve içinde hep tek sayfa oluşuyor ama sayfa adı değişiyor aslında Sayfa(1) yani
Aşağıdaki kodun Şubat1 olan bölümüne nasıl tanımlama yapmam gerekir.

Kod:
Set Kayit_Seti = Baglanti.Execute("Select * From [Şubat1$C2:J] Where F3 Is Not Null")
 
Burhan Bey,

ADO veri tabanı için kullanılmaktadır. Bu sebeple bazı kurallara uymak durumundasınız. Excel için kullandığınızda bazı istenmeyen durumlarla karşılaşılabiliyor. Çünkü excel veritabanı uygulaması değildir.

Bu sebeple ado kullanırken sayfa adı bilgisi önem arz etmektedir. Sayfa adı değişkense aşağıdaki konu başlığı size fikir verecektir. Konu başlığında kapalı dosyadaki sayfa isimleri listelenmektedir. Bunu kendi dosyanıza sanırım uyarlayabilirsiniz.

 
Hocam sağolun baya uğraştırdı ama az çok taşlar yerine oturmaya başladı
iki sorgu ile veriyi boş sütun bırakarak alabildim teşekkür ederim.

Kod:
Option Explicit
Sub MuhSgk_Aktar3_GSS()
    Dim Dosya As String, Baglanti As Object, Sorgu As String
    Dim Kayit_Seti As Object, Sayfa As Worksheet, Zaman As Double
    
    Dosya = Application.GetOpenFilename(FileFilter:="Excel Dosyaları (*.xls;*.xlsx;*.xlsm),*xls;*.xlsm;*.xlsx", MultiSelect:=False)
    
    Zaman = Timer
    
    Set Baglanti = CreateObject("AdoDb.Connection")
    
    Baglanti.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
    Dosya & ";Extended Properties=""Excel 12.0;Hdr=No"""
    
    Sorgu = "Select F1 From [maasEBildirgeExcel$B2:B]"
    Set Kayit_Seti = Baglanti.Execute(Sorgu)
    Cells(Rows.Count, 2).End(3)(2, 1).CopyFromRecordset Kayit_Seti
    
    Sorgu = "Select F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22 From [maasEBildirgeExcel$D2:Y]"
    Set Kayit_Seti = Baglanti.Execute(Sorgu)
    Cells(Rows.Count, 4).End(3)(2, 1).CopyFromRecordset Kayit_Seti
  
    Kayit_Seti.Close
    Baglanti.Close
    
    Set Kayit_Seti = Nothing
    Set Baglanti = Nothing
    
    MsgBox "Veri aktarımı tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 
Geri
Üst