Access'ten Excel'e Gömülü Fotoğraf Aktarma

1 2
21/12/2017, 20:57

donepezil

Herkese yeniden merhaba;

Her ne kadar gereksiz olduğunu savunsam da, iş dünyasında o kadar gereksiz istekler var ki. Bu da onlardan biri.

Ürün fotoğraflarının, klasör yoluyla tutulduğu bir dosyamız var. Bu Access dosyamızdan, excel'e veri aktarırken, ürün fotoğraflarının da Excel dosyası içine gömülü olarak aktarılması istenmekte. Mümkün olup olmadığına dair bir fikrim de yok açıkçası
Forumda aradım ama bulamadım. Belki ihtiyaç olmamıştır.

Ekte örnek bir çalışma düzenledim. Alınması istenilen Excel dosyasını da ekledim.

Örnek ürün fotoları da rar içinde. Kendi bilgisayarınızın klasör yolundan görmesi gerektiği için forma eklemedim. Formdan ekleyerek deneme yapabilirsiniz.

Yardımlarınız için şimdiden teşekkür ederim.
22/12/2017, 18:34

donepezil

Sağa sola bakınırken, kod kullanılarak yapılabileceğinin mümkün olduğunu gördüm. En azından dosya dönüştürme siteleri bunu yapabiliyor.

Örneğin bu site, oldukça başarılı bir şekilde pdf içindeki resimleri, Excel içine gömülü olarak aktarabiliyor.

Vba ile ilgili hatırı sayılır bir kaynağa maalesef henüz ulaşamadım
24/12/2017, 04:05

donepezil

Evet, hala boğuşmaktayım
En azından, geçerli formdaki resmi Excel üzerinde istediğim yere göndermeyi başardım. Ancak bunu bilgiler olmadan yapabildim. Şimdi hem bilgileri, hem de resimleri Excel de satır yüksekliklerini de ayarlayarak gönderebiliyor olmam lazım.

"Tüm Ürünleri Excel'e Aktar" butonuna kodu ekleyerek geçerli formdaki resmi excel' gönderebilirsiniz.


Kod:
On Error GoTo Err_Komut11

'DoCmd.OutputTo acQuery, "Sorgu1", "MicrosoftExcel(*.xls)", "", False, "", 0

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim PicLocation As String



Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
xlBook.Application.Visible = True

Set xlSheet = xlBook.Worksheets.Add

xlSheet.Name = "Ürün Bilgileri"


xlSheet.Activate



 PicLocation = Me.resim_yolu
   If Dir(PicLocation) <> "" Then
                                 
                 
                 
   'False      Link to File
   'True       Save with Document
   'All below values are in Points
   'Left       100
   'Top        100
   'Width       70
   'Height      70
                   
xlSheet.Shapes.AddPicture PicLocation, False, True, 10, 100, 100, 100


'DoCmd.OutputTo acQuery, "Sorgu1", "MicrosoftExcel(*.xls)", "", False, "", 0

           End If


Exit_Komut11:

   Exit Sub
Err_Komut11:
    MsgBox "Klasör seçmediğiniz için işlem iptal edildi", , "İŞLEM İPTAL EDİLDİ"
   Resume Exit_Komut11
Ustalarımın yardımını bekliyorum
Edit: Butona eklenmiş halini ekledim. Ürün fotolarını tekrar yükleyiniz.
24/12/2017, 19:03

direnist

Merhaba donapezil;
Ben çok üst seviyede değilim ama açtığınız bu konunun sonucunu merak ettiğimden ve henüz diğer hocalarımızdan bir geri dönüş olmadığından göndermiş olduğunu kod üzerinden kendi bildiklerimde ile çabalayarak ekli örneği yaptım. 
Ancak belirttiğim gibi çok ileri seviye olmadığımdan şöyle bir sorunu var bu örneğin.
Uygulamayı ilk açıp Komut14 butonunu ilk çalıştırdığınızda dediğinizi yapabiliyorum. Fakat ikinci defa çalıştırmak istediğimde 1004 numaralı hatayı veriyor. Ve nedenini bulamadım. Bende bir hata kontrolü ekleyip sadece uyarı olarak göstereyim dedim.
Uygulamayı kapatıp yeniden açtığınızda yine sorunsuz olarak yapıyor istediğiniz aktarımı.
Belirttiğim gibi merak edip bayağıdır uğraştığım için bu hali ile belki işinize yararsa diye paylaşmak istedim.
Kod tarafına da açıklamalar ekledim.
İyi çalışmalar.
24/12/2017, 19:47

donepezil

(24/12/2017, 19:03)direnist yazdı: Merhaba donapezil;
Ben çok üst seviyede değilim ama açtığınız bu konunun sonucunu merak ettiğimden ve henüz diğer hocalarımızdan bir geri dönüş olmadığından göndermiş olduğunu kod üzerinden kendi bildiklerimde ile çabalayarak ekli örneği yaptım. 
Ancak belirttiğim gibi çok ileri seviye olmadığımdan şöyle bir sorunu var bu örneğin.
Uygulamayı ilk açıp Komut14 butonunu ilk çalıştırdığınızda dediğinizi yapabiliyorum. Fakat ikinci defa çalıştırmak istediğimde 1004 numaralı hatayı veriyor. Ve nedenini bulamadım. Bende bir hata kontrolü ekleyip sadece uyarı olarak göstereyim dedim.
Uygulamayı kapatıp yeniden açtığınızda yine sorunsuz olarak yapıyor istediğiniz aktarımı.
Belirttiğim gibi merak edip bayağıdır uğraştığım için bu hali ile belki işinize yararsa diye paylaşmak istedim.
Kod tarafına da açıklamalar ekledim.
İyi çalışmalar.

Marhaba sayın direnist;

İnanın ne söyleyeceğimi bilemiyorum. En zor zamanlarımda, hayat kurtarıcı bilgilerimi aldığım bu forumda, kimseden tek bir yorum bile gelmeyince inanın bu son konu ile kendi kendime çabalıyormuşum gibi gelmişti. Biliyorum oldukça zor bir konu. Daha birkaçgün öncesine kadar, bunun hep yapılamayacağına dair bilgiler buluyor ve ben de öyle düşünüyordum. Hatta başka forumlarda, bunun hala yapılamayacağına dair yorumlar var. Ama 1 fotoğraf gidiyorsa, sizin yaptığınız gibi diğerleride gidebiliyor işte
Bu kadar emek sarfedip, kodları bu seviyeye kadar getirmeniz bile, borcu ödenemeyecek bir emek hakkı. Tıpkı daha önce bu forumdan öğrendiğim bilgiler gibi.

Kodları inceledim. O kadar tane tane notlar eklemişsiniz ki... Emeğinize sağlık. Hatanın sebebinin ne olduğunu benim anlamam imkansız gibi duruyor. Bu haliyle bile istenilen şeyi yapıyor. Hocalarımızdan başkaca bir cevap gelmezse, bu kadarı bile benim ve hatta bu konuyla ilgili sıkıntı çeken pek çok yazılımcının işini görecektir. "İşinize yararsa" ne demek! Günlerce uğraşılacak bir Excel dosyasını, tek tıkla yaptıracak kadar harikulade.

Usta hocalarımızın hatanın kaynağını bularak düzenleyeceğine eminim. Ama ben bu kadarıyla bile müthiş bir iş çıktığı kanısındayım.

Tekrar sonsuz teşekkürlerimi iletiyorum.
 
Saygılar...
24/12/2017, 22:52

direnist

Merhaba sn. donapezil;
Öncelikle rica ederim. Bu hali ile bile işinize yarıyor olmasına ayrıca çok sevindim. 
Açıkçası konunuzu ilk okuduğumda bende yapılamaz diye düşündüm. Çünkü, Excel kitabı içinde hücrenin içine fotoğrafı gömülü şekilde ekleyebilmenin  bayağı bir kod yazımı yada uzun bir algoritma gerektireceğini düşündüm.
Ancak sizin araştırmalarınız sonucunda ulaştığınız sayenizde benim de öğrendiğim (bunun için bende size teşekkür ederim) "xlSheet.Shapes.AddPicture PicLocation, False, True, 125, y, 100, 100" kodunu görünce bunun üzerinden ilerleyerek acemice bişeyler yaptım. Aslında kod tarafı daha dinamik olabilir.
Ve şu hatayı da düzeltebilseydim daha güzel olurdu.
Belirttiğiniz gibi hocalarımız müsait olduğunda bakabilirler ise ki eminim başka bir profesyonel bir yolu da vardır. 
Bende çok merak ediyorum bu konuyu.
İyi çalışmalar.
Saygılar.
1 2