Skip to main content

AccessTr.neT


VBA Makro ile Access'teki verileri formatlı Excel sayfasına aktarma hatası

VBA Makro ile Access'teki verileri formatlı Excel sayfasına aktarma hatası

#1
Merhaba;

Office 2010 kullanırken aşağıdaki Vba kodu ile Access'teki verileri hazır formatlı bir Excel dosyasına kopyalıyordum. Yani her bir veri satırı için bir düğmeyle talimat oluşturuyordum. Ancak, 2013 yükseltmesinden sonra mevcut kod 9-10-11 satırlarda hata veriyor ve talimat Excel'ine verileri aktarmıyor. Açıkası sorunun nedenini anlayamadım ve yardımcı olabileceğinizi düşündüm.

Konu biraz spesifik bir konu olduğundan gerek yabancı forumlarda gerekse bu forumda benzer bir konu bulamadım ve konu açmaya karar verip bilen birinden yardım talep etmek istedim. Umarım forumda konu kirliliği yaratmamışımdır.

Yardımcı olabilirseniz çok sevinirim.

Kod
Private Sub Komut332_Click() 'TALİMAT OLUŞTURMA

Dim xlApp As Excel.Application
Dim MyXL As Object
FileCopy "C:\LCW TT\Data\KTDNM.xlsx", "C:\Users\UMIT.BALKAN\Desktop\Talimat " & Ülke & " ID" & Invoice_ID & " " & Kap_Sayısı & " Kap.xlsx"
Set xlApp = CreateObject("excel.application")
Set MyXL = GetObject("C:\Users\UMIT.BALKAN\Desktop\Talimat " & Ülke & " ID" & Invoice_ID & " " & Kap_Sayısı & " Kap.xlsx")
MyXL.Application.Visible = True
MyXL.Application.WindowState = 3
MyXL.Parent.Windows(1).Visible = False
MyXL.Parent.ActiveWindow.WindowState = 2
    
    With MyXL.worksheets(1)
        .Range("B4").Value = Acente
        .Range("B3").Value = Adı & " " & Soyadı
        .Range("E3").Value = Date
        .Range("B30").Value = Banka
        .Range("B14").Value = Alıcı_Firma_Ünvanı
        .Range("B16").Value = Alıcı_Firma_Adresi
        .Range("B32").Value = Ödeme_Şekli
        .Range("B34").Value = Teslim_Şekli
        .Range("D38").Value = Gross_Weight
        .Range("D39").Value = Net_Weight
        .Range("D40").Value = Kap_Sayısı
        .Range("D41").Value = Invoice_ID
        .Range("B24").Value = Varış_Yeri
        .Range("C43").Value = CI
        .Range("C44").Value = PL
        .Range("C45").Value = PRL
        .Range("C46").Value = CO
        .Range("C48").Value = FORMA
        .Range("C49").Value = CMR
        .Range("C50").Value = AWB
        .Range("B54").Value = Talimat_Notları
    End With
    
If CI_Onay = True Then
MyXL.worksheets(1).Range("E43").Value = "<- TİCARET ODASI ONAYLI"
End If

If PRL_Onay = True Then
MyXL.worksheets(1).Range("E45").Value = "<- TİCARET ODASI ONAYLI"
End If
    
xlApp.ActiveWorkbook.Save
'    MyXL.Application.DisplayAlerts = False
'    DoCmd.SelectObject acForm, Me.Name</P> <P>OpenEnd:
Set MyXL = Nothing
'    xlApp.Quit
Set xlApp = Nothing

End Sub
Cevapla
#2
Sayın balkan85,

Site Kuralları sayfasında yazılı hususları tekrar incelemenizi temenni etmekle birlikte;içeriğinde farazi gerçek dışı uydurma olacak halde ve sonuçları görebilmek adına da birkaç kayıt barındıracak şekilde örnek uygulamanızı,Excel uygulaması da geçerli olarak konunuza dahil ediniz.

Katılımcılar tarafından uygun görülen paylaşımları edinmeniz ve çözüm elde etmeniz muhtemeldir.

Bilginize…iyi çalışmalar,saygılar.
Herkes,kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#3
(27/09/2016 14:29)atoz112 Adlı Kullanıcıdan Alıntı: Sayın balkan85,

Site Kuralları sayfasında yazılı hususları tekrar incelemenizi temenni etmekle birlikte;içeriğinde farazi gerçek dışı uydurma olacak halde ve sonuçları görebilmek adına da birkaç kayıt barındıracak şekilde örnek uygulamanızı,Excel uygulaması da geçerli olarak konunuza dahil ediniz.

Katılımcılar tarafından uygun görülen paylaşımları edinmeniz ve çözüm elde etmeniz muhtemeldir.

Bilginize…iyi çalışmalar,saygılar.

Merhaba;

İlginiz için teşekkür ederim. Önerdiğiniz gibi Access veritabanında örneklik bir-iki satır bırakıp beraberinde Excel dosya ile birlikte paylaşacağım. Umarım sorunun kaynağını ilgili/bilgili arkadaşlarla beraber bulabiliriz. Sanırım versiyondan kaynaklı bir uyumsuzluk var ama tam olarak ne olduğunu çözemedim.  Icon_rolleyes
Cevapla
#4
Sayın balkan85,

Bahsettiğiniz soruna dair,bir diğer ihtimal olarak da;
referansları ve eğer varsa kodlarda DECLARE edilmesi gerekli fonksiyonlara yönelik olarak 32 bit  / 64 bit kontrollerini de yapmak gerekebilir.

Bilginize…iyi çalışmalar,saygılar.
Herkes,kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#5
Merhaba arkadaşlar;

atoz112'nin önerisi üzerine ekte 2 satırlı olarak Access veritabanı dosyası, verilerin aktarılacağı formatlı Excel dosyası ve ekran görüntülerini gönderiyorum.

.rar Database and Excel file.rar (Dosya Boyutu: 478,34 KB | İndirme Sayısı: 36)


Görüntülerde göreceğiniz gibi, Sevkiyatlar isimli formda, Talimat sekmesinde, kırmızı yuvarlak içine alınan düğme bu kodu çalıştırıyor ve yine ekran görüntüsündeki hatayı döndürüyor.

[Resim: do.php?imgf=147497744558911.jpg]

[Resim: do.php?imgf=147497744572622.jpg]

[Resim: do.php?imgf=14749774458993.jpg]

Tekrar teşekkürler.
Son Düzenleme: 28/09/2016, 10:50, Düzenleyen: balkan85.
Cevapla
#6
(27/09/2016 14:42)atoz112 Adlı Kullanıcıdan Alıntı: Sayın balkan85,

Bahsettiğiniz soruna dair,bir diğer ihtimal olarak da;
referansları ve eğer varsa kodlarda DECLARE edilmesi gerekli fonksiyonlara yönelik olarak 32 bit  / 64 bit kontrollerini de yapmak gerekebilir.

Bilginize…iyi çalışmalar,saygılar.

İlginiz için teşekkür ederim ama şöyle bir gerçek var. Aslında ben yazılımcı değilim. Bu Access veritabanı, Excel dosya ve diğer Vba bilgimi tamamen amatör olarak yerli/yabancı kaynaklardan kendi ilgimle hobi olarak geliştirdim. O yüzden DECLARE kısmıyla ilgili bahsettiğinizi tam olarak anlayamadım. Sadd
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task