Skip to main content

AccessTr.neT


Excel'den Veri Alma Aktarma

Excel'den Veri Alma Aktarma

Çözüldü #1
Arkadaşlar merhaba,
Excel'e veri aktarıyorum aktarım sonrasında birincil anahtar olan (NO) otomatik sayıda gidiyor. Aktardığım excel'den tekrar access'e veri çektiğimde otomatik sayı alanı (NO) sorun çıkartıyor. Kısacası aşağıdaki kullandığım kodda nasıl bir değişiklik yapmalııyımki no alanını excele aktarmasın.

Visual Basic Code
On Error GoTo Err_Komut33
Dim Klasor
Klasor = CurrentProject.Path & "\" & "BİLGİTAKİP (EXCEL OLARAK YEDEK)-" & " " & Format(Date, "mm/dd/yy") & " " & Format(Time, "hh-mm-ss-AM/PM") & ".xls"
If MsgBox("Aktarma işlemi,programın bulunduğu yere kayıt olacak,oradan bulun,Verileri Excele aktarmak istiyor musunuz? ", 36, "EXCELE VERI AKTARIMI") = 6 Then
DoCmd.TransferSpreadsheet acExport, 8, "PERSONEL", Klasor, True, "ÇEKER BİLGİLER"

MsgBox "Dikkat programın bulunduğu yere Aktarma işlemi Tamamlandı", 0, "EXCELE VERI AKTARIMI"
Exit_Komut33:
    Exit Sub
Err_Komut33:
    MsgBox Error$
    Resume Exit_Komut33
End If

edacan19, 17-04-2010 tarihinden beri AccessTr.neT
Son Düzenleme: 23/06/2020, 10:41, Düzenleyen: edacan19.
Cevapla
#2
doğrudan tablo yerine otomatik alan dışındakilerin yer aldığı bir sorgu kullanmayı deneyebilirsiniz
Cevapla
#3
Bu kodda sadece aktaracağım alanları belirteceğim bir değişiklik yapamazmıyız.
edacan19, 17-04-2010 tarihinden beri AccessTr.neT
Cevapla
#4

Visual Basic Code
Dim dbs As DAO.Database
Dim rsSQL As DAO.Recordset
Dim strSQL As String
Dim xlApp As Excel.Application
Dim xlSh As Excel.Worksheet
Dim objWkb As Excel.Workbook
Dim i As Long

Set xlApp = New Excel.Application

With xlApp
            .Visible = True
            Set objWkb = .Workbooks.Add
            Set xlSh = objWkb.Worksheets(1)
            xlSh.Name = "İş listesi"
End With

xlApp.Visible = True
xlApp.ActiveWindow.WindowState = xlMaximized

xlSh.Cells(1, 2).value = "Tür"
xlSh.Cells(1, 3).value = "Konu1"
xlSh.Cells(1, 4).value = "Konu2"
xlSh.Cells(1, 5).value = "Mevcut Durum"
xlSh.Cells(1, 6).value = "Açıklama"


Set dbs = CurrentDb
strSQL = "SELECT * FROM srg_plan"
Set rsSQL = dbs.OpenRecordset(strSQL, dbOpenSnapshot)

If rsSQL.RecordCount > 0 Then
rsSQL.MoveFirst
rsSQL.MoveLast
End If


rsSQL.MoveFirst
If rsSQL.RecordCount > 0 Then
For i = 0 To rsSQL.RecordCount - 1



xlSh.Cells(GSayi + i + 1, 2).value = rsSQL!tur
xlSh.Cells(GSayi + i + 1, 3).value = rsSQL!konu1
xlSh.Cells(GSayi + i + 1, 4).value = rsSQL!konu2
xlSh.Cells(GSayi + i + 1, 5).value = rsSQL!mevcutdurum
xlSh.Cells(GSayi + i + 1, 6).value = rsSQL!bildirimaciklama

rsSQL.MoveNext
Next i
End If



rsSQL.Close
Set rsSQL = Nothing


Şeklinde kod kullanılabilir, ancak @berduşun da belirttiği gibi istenilen alanları içeren sorgu oluşturulup excele aktarmak daha mantıklı.

"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
#5
(23/06/2020 10:39)edacan19 Adlı Kullanıcıdan Alıntı: DoCmd.TransferSpreadsheet acExport, 8, "PERSONEL", Klasor, True, "ÇEKER BİLGİLER"
bu kodda kullanılan mantık sorgu yada tablonun tümüdür, excelden alırken sayfanın sınırlarını belirleyebiliyorsunuz ama bildiğim kadarıyla access tabloları için öyle bir şey yapılamıyor sadece aktarılacak veriler ve alanlar için uygun bir sorgu olusturup onu aktarırsınız ama excelden alırken zaten alanı belirleyebiliyorsunuz, içer aktarırken otomatik alanı devre dışı bırakıp almayı deneyebilirsiniz.
Cevapla
#6
Sorguyla denedim hata kaydı oluşturuyor. çekmeye çalıştığım Excel tablosunu ekledim.
.rar BİLGİTAKİP (EXCEL OLARAK YEDEK)- 06.23.20 01-37-06-PM.rar (Dosya Boyutu: 1,53 KB | İndirme Sayısı: 3)
edacan19, 17-04-2010 tarihinden beri AccessTr.neT
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task