Makro ile çekilen fotoyu hücreye ortalamak

kneehot

Altın Üye
Katılım
4 Ekim 2007
Mesajlar
625
Excel Vers. ve Dili
OFFİCE 365
Altın Üyelik Bitiş Tarihi
06-10-2025
Arkadaşlar merhaba, elimde aşağıdaki kod var fakat resmi tanımlı hücrenin soluna yaslıyor. Hücreyi ortalayacak şekilde güncellemek istiyorum. Yardımlarınız için şimdiden teşekkürler.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
Dim p As Object, t As Double, l As Double, w As Double, h As Double

ResimDosya = "C:\Foto" & "\" & Target.Value & ".jpg"
'ResimDosya = "C:\Foto" & "\" & Target.Offset(0, 1).Value & ".jpg"
If Dir(ResimDosya) = "" Then Exit Sub
Set p = ActiveSheet.Pictures.Insert(ResimDosya)

With Cells(Target.Row, Target.Column - 1)
t = .Top
l = .Left
w = .Offset(0, .Columns.Count).Left - .Left
h = .Offset(.Rows.Count, 0).Top - .Top
End With

With p
.Top = t
.Left = l
.Width = w
.Height = h
End With

Set p = Nothing

End Sub
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Kod:
        p.Top = .Top + 3 'hücrenin üst kısmından 3 birim aşağı kaydırır
        p.Left = .Left + 3 'hücrenin sol kısmından 3 birim sağa kaydırır
Aşağıdaki kodda da açıklama yaptım. Aşağıdaki kodu kullanın
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
    Dim p As Object, t As Double, l As Double, w As Double, h As Double
    ResimDosya = "C:\Foto" & "\" & Target.Value & ".jpg"
    If Dir(ResimDosya) = "" Then Exit Sub
    Set p = ActiveSheet.Pictures.Insert(ResimDosya)
    
    With Cells(Target.Row, Target.Column - 1)
        p.Top = .Top + 3 'hücrenin üst kısmından 3 birim aşağı kaydırır
        p.Left = .Left + 3 'hücrenin sol kısmından 3 birim sağa kaydırır
        p.Width = .Offset(0, .Columns.Count).Left - .Left
        p.Height = .Offset(.Rows.Count, 0).Top - .Top
    End With
End Sub
 

kneehot

Altın Üye
Katılım
4 Ekim 2007
Mesajlar
625
Excel Vers. ve Dili
OFFİCE 365
Altın Üyelik Bitiş Tarihi
06-10-2025
Merhaba.
Kod:
        p.Top = .Top + 3 'hücrenin üst kısmından 3 birim aşağı kaydırır
        p.Left = .Left + 3 'hücrenin sol kısmından 3 birim sağa kaydırır
Aşağıdaki kodda da açıklama yaptım. Aşağıdaki kodu kullanın
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
    Dim p As Object, t As Double, l As Double, w As Double, h As Double
    ResimDosya = "C:\Foto" & "\" & Target.Value & ".jpg"
    If Dir(ResimDosya) = "" Then Exit Sub
    Set p = ActiveSheet.Pictures.Insert(ResimDosya)
   
    With Cells(Target.Row, Target.Column - 1)
        p.Top = .Top + 3 'hücrenin üst kısmından 3 birim aşağı kaydırır
        p.Left = .Left + 3 'hücrenin sol kısmından 3 birim sağa kaydırır
        p.Width = .Offset(0, .Columns.Count).Left - .Left
        p.Height = .Offset(.Rows.Count, 0).Top - .Top
    End With
End Sub
Çok teşekkürler, bir konuda daha yardımınızı isteyebilir miyim? Sadece jpg uzantılı dosyaları okuyor hem jpg hem de png dosyalarını okuyabilecek şekilde kodlanabilir mi?
 

kneehot

Altın Üye
Katılım
4 Ekim 2007
Mesajlar
625
Excel Vers. ve Dili
OFFİCE 365
Altın Üyelik Bitiş Tarihi
06-10-2025
Merhaba, bu kodu ekleyebilecek yardımsever bir arkadaş varmıdır :)
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Şöyle dener misiniz?

PHP:
ResimDosya = "C:\Foto" & "\" & Target.Value & ".jpg"
If Dir(ResimDosya) = "" Then
    ResimDosya = "C:\Foto" & "\" & Target.Value & ".png"
End If
If Dir(ResimDosya) = "" Then Exit Sub
 
Üst