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

1 2 3 4 5
27/09/2016, 14:19

balkan85

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
27/09/2016, 14:29

atoz112

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.
27/09/2016, 14:37

balkan85

(27/09/2016, 14:29)atoz112 yazdı: 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.  
27/09/2016, 14:42

atoz112

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.
27/09/2016, 15:01

balkan85

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.

[attachment=25506]

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.







Tekrar teşekkürler.
27/09/2016, 15:07

balkan85

(27/09/2016, 14:42)atoz112 yazdı: 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.
1 2 3 4 5