sayfaya eklenebilecek resim sayısı nasıl sınırsız olabilir.

Katılım
27 Mayıs 2006
Mesajlar
14
arkadaşlar saygılar
bu siteye yeni uğradım. bir sorunumvar yardımcı olursanız sevinirim.

excel sayfasına makro resim ekliyorum. verilerim değiştikçe eskiresmi makro ile silip yine makro ile otomatikolarak yeni resmi sayfaya ekliyorum.

sorun1: eklenen resim sayısı 65536 olunca hata veriyor. aslında sayfada bir resim var. sanırım excel resimleri sürekli sayıyor. bu saymayı nasılengelleyebilirim yada sıfırlayabilirim?

sorun2: resim dosyasını excel sayfasına eklemeden yerinde ebatlarına bakabilirmiyim? nasıl?

beni kaale alıp cevap verirseniz memnun olurum.

şimdiden teşekkürler.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Re: sayfaya eklenebilecek resim sayısı nasıl sınırsız olabil

atlas127' Alıntı:
....

sorun2: resim dosyasını excel sayfasına eklemeden yerinde ebatlarına bakabilirmiyim? nasıl?

....
Bahsettiğiniz resimlerin tümünü bir klasöre yerleştirin. Daha sonra aşağıdaki kodu çalıştırın.

Klasördeki tüm dosyaların adı A sütununda, resimlerin boyutları da B sütununda listelenecektir.

Kod:
Sub Test()
'
'   Raider ® - Mayis2006
'
    Dim objShell As Object, objFolder As Object
    Dim strFolder As Variant, strFileName As Object
    Dim i As Long
    
    Set objShell = CreateObject("Shell.Application")
    Set strFolder = objShell.BrowseForFolder(0, "Klasor secin ...", 0, 0)
    
    If (Not strFolder Is Nothing) Then
        Set objFolder = objShell.Namespace(strFolder)
        Cells(1, 1) = "Dosya"
        Cells(1, 2) = objFolder.GetDetailsOf(objFolder.Items, 26)
        Range("A1:B1").Font.Bold = True
        i = 1
        For Each strFileName In objFolder.Items
            i = i + 1
            Cells(i, 1) = strFileName
            Cells(i, 2) = objFolder.GetDetailsOf(strFileName, 26)
        Next
        
        Columns("A:B").AutoFit
    End If
End Sub
(WinXP-Home Ed. + Office2000 ile hazırlanmış ve test edilmiştir.)
 
Katılım
27 Mayıs 2006
Mesajlar
14
moderatör ilgin için teşekkür ederim.

1 nci sorunum ile de ilgilenebilirsen sevinirim.

kişi adlarına göre kişilerin resimlerini getiren program yaptım ama bunun sonzuza kadar çalışamayacağını ve bir gün hata vereceğini bilmek beni rahatsız ediyor.

inşallah sorunumu tam olarak izah edebilmişimdir.

teşekkürler!
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
excel sayfasına makro resim ekliyorum. verilerim değiştikçe eskiresmi makro ile silip yine makro ile otomatikolarak yeni resmi sayfaya ekliyorum.
Öncelikle bu işlemi nasıl bir kod ile yapıyorsunuz, bunu belirtirmisiniz. Bu istediğinizin çözümü resmin her sayfaya eklenişinde resmin adını aynı kelime ile değiştirmek olabilir.
 
Katılım
27 Mayıs 2006
Mesajlar
14
arkadaşlar

ActiveSheet.Pictures.Delete
dosya = Application.GetOpenFilename("Jpg resimleri,*.jpg)")
If dosya = False Then Exit Sub
Range("a1").Select
ActiveSheet.Pictures.Insert(dosya).Name = "resim"

makrosu ile resim kaydedince resim sayfada "resim" ismi ale yer alıyor.

Fakat;

ActiveSheet.Pictures.Delete
dosya = Application.GetOpenFilename("Jpg resimleri,*.jpg)")
If dosya = False Then Exit Sub
Range("a1").Select
ActiveSheet.Pictures.Insert(dosya)

şeklinde isim belirtmeden resim aldığımda yada doğrudan eklediğim de "Resim X" şeklinde sıralı isim veriyor. Bu sıralamada isim versem bile numara artmaya devam ediyor. Denedim bu durum sonsuza kadar gitmiyor.

Ayrıca Resmi açmadan boyutuna bakabiceğim kodu denedim. Acaba klasör seçmeden bilinen bir klasöre hatta resme boyutları için bakabilirmiyim.

Çok teşekkürler!
 
Katılım
27 Mayıs 2006
Mesajlar
14
leventm,
ActiveSheet.Pictures.Delete
dosya = Application.GetOpenFilename("Jpg resimleri,*.jpg)")
If dosya = False Then Exit Sub
Range("a1").Select
ActiveSheet.Pictures.Insert(dosya).Name = "resim"

makrosu ile resim kaydedince resim sayfada "resim" ismi ale yer alıyor.

Fakat;

ActiveSheet.Pictures.Delete
dosya = Application.GetOpenFilename("Jpg resimleri,*.jpg)")
If dosya = False Then Exit Sub
Range("a1").Select
ActiveSheet.Pictures.Insert(dosya)

şeklinde isim belirtmeden resim aldığımda yada doğrudan eklediğim de "Resim X" şeklinde sıralı isim veriyor. Bu sıralamada isim versem bile numara artmaya devam ediyor. Denedim bu durum sonsuza kadar gitmiyor.

Çok teşekkürler!
 
Katılım
27 Mayıs 2006
Mesajlar
14
Haluk,

Resmi açmadan boyutuna bakabiceğim kodu denedim. Acaba klasör seçmeden yeri bilinen bir klasöre hatta resme doğrudan boyutları için bakabilirmiyim.

Çok teşekkürler!
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi bir kodla dosya büyüklüğünü bulabilirsiniz.


msgbox CreateObject("Scripting.FileSystemObject").GetFile("c:\kitap1.xls").Size
 
Katılım
27 Mayıs 2006
Mesajlar
14
leventm,

Bu bigi için teşekkür ederim, fakat ben bir resim dosyasının en ve boy ölçülerini nasıl excel içinde iken makro ile bir değişkene atayabilirim. makro yeri bilinen resmin en ve boyunu doğrudan alabilsin istiyorum.

Teşekkürler.
 
Katılım
27 Mayıs 2006
Mesajlar
14
Resmin boyutlarını öğrenmeyi başardım.

Haluk arkadaş teşekürler,

verdiğin kodlar üzerinde oynadım ve aşağıdaki şeki çıktı.
İnceleyin, daha basit yolu varsa bilmek isterim.

Sub Resmin_boyutu()

Dim objShell As Object, objFolder As Object
Dim strFolder As Variant, strFileName As Variant


strFolder = "c:\aaa"
strFileName = "deneme.jpg"

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(strFolder)

For Each strFileName In objFolder.Items
MsgBox strFileName
MsgBox objFolder.GetDetailsOf(strFileName, 26)
Next

End Sub

Teşekkürler
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Daha basiti bilemiyorum ama kodları aşağıdaki gibi kısaltmak mümkün.

Kod:
Set dosya = CreateObject("Shell.Application").Namespace("c:\aaa").ParseName("deneme.jpg")
MsgBox CreateObject("Shell.Application").Namespace("c:\aaa").GetDetailsOf(dosya, 26)
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Merhaba;

Probleminizin çözüldüğüne sevindim ancak şunu hatırlatmak isterim ki; eğer bahsettiğiniz klasörde 1'den fazla resim varsa, tam olarak istediğinizi elde edemezsiniz.

Bu nedenle, kodda biraz modifikasyon yapmak gerekiyor.

Örnek olarak aşağıda, D:\Arsiv\Ataturk.jpg resim dosyasının Boy X Yükseklik değerleri elde edilmektedir.

Bence böylesi sizin daha çok işinize yarayacaktır.

Kod:
Sub Test2()
    '
    '   Raider ® - Haziran 2006
    '
    Dim objShell As Object, objFolder As Object, objFolderItem As Object
    Dim strFolder As Variant, strFileName As Variant
    
    strFolder = "D:\Arsiv"
    strFileName = "Ataturk.jpg"
    
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(strFolder)
    Set objFolderItem = objFolder.ParseName(strFileName)
    MsgBox objFolder.GetDetailsOf(objFolderItem, 26)
    
    Set objFolderItem = Nothing
    Set objFolder = Nothing
    Set objShell = Nothing

End Sub
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,895
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Haluk Bey siz kod yazınca moralim bozuluyor tam öğrenmeye başladım deyince çok farklı şeyler ile çıkıyorsunuz karşımıza :mrgreen:

Sizin kod yazmanız bir yıl yasaklansada benimde moralim yerine gelse..
Excel.web.tr adminine şikayet et kısmı butonu açıldığında ilk sizi şikayet edeceğim :lol:

Bu arada ellerinize sağlık
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sayın fructose;

Beni cidden çok güldürdünüz....:mrgreen:

Allah da sizi güldürsün.

Teşekkür ederim.

Not: Levent dostum, 21:07 ~ 21:02
 
Katılım
27 Mayıs 2006
Mesajlar
14
Haluk,

Teşekkür ederim.

böylesi beni0 daha çok işime yarayacak
 
Üst