Soru Kaydedilen Resim Boş Gözüküyor

Katılım
8 Ağustos 2024
Mesajlar
12
Excel Vers. ve Dili
Office 2013 / Türkçe
Merhaba arkadaşlar elimde bir kod var kod sorunsuz olarak Excel'de ki sayfayı masaüstündeki klasöre kaydediyor ancak göründüğü şekilde değil boş beyaz bir sayfa olarak kaydediyor kodun neresinde hata var?

Bu kod Excel 2016'da çalışmıyor

Kod:
Sub SaveRangeAsImageAndAppendData()
    Dim ws As Worksheet
    Dim rng As Range
    Dim chartObj As ChartObject
    Dim filePath As String
    Dim imgFileName As String
    Dim cellA2 As String
    Dim cellI2 As String
    Dim recordSheet As Worksheet
    Dim dataRange As Range
    Dim cell As Range
    Dim recordRow As Long
    Dim lastRow As Long
   
    ' Sayfa2'yi referans olarak al
    Set ws = ThisWorkbook.Sheets("Sayfa2")
   
    ' A2 ve I2 hücrelerinin içeriğini al
    cellA2 = ws.Range("A2").Value
    cellI2 = ws.Range("I2").Value
   
    ' Dosya adı oluştur
    imgFileName = cellA2 & "_" & cellI2 & ".jpg"
    filePath = Environ("USERPROFILE") & "\Desktop\Resim\" & imgFileName
   
    ' A1:AQ19 aralığını seç
    Set rng = ws.Range("A1:AQ19")
   
    ' Geçici bir grafik oluştur
    Set chartObj = ws.ChartObjects.Add(Left:=rng.Left, Width:=rng.Width, Top:=rng.Top, Height:=rng.Height)
    chartObj.Chart.ChartArea.Format.Line.Visible = msoFalse ' Kenarlıkları kaldır
    chartObj.Chart.PlotArea.Format.Line.Visible = msoFalse ' Çizgi kaldır
   
    ' Aralığı resim olarak kopyala
    rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    chartObj.Chart.Paste
    chartObj.Chart.Export fileName:=filePath, FilterName:="JPEG"
   
    ' Grafik nesnesini temizle
    chartObj.Delete
   
    ' Kayıt sayfasını oluştur veya aç
    On Error Resume Next
    Set recordSheet = ThisWorkbook.Sheets("Kayıt")
    On Error GoTo 0
   
    If recordSheet Is Nothing Then
        Set recordSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        recordSheet.Name = "Kayıt"
    End If
   
    ' Sonraki boş satırı bul
    lastRow = recordSheet.Cells(recordSheet.Rows.Count, 1).End(xlUp).Row + 1
   
    ' A19:AQ19 hücrelerini alt alta şekilde kaydet
    Set dataRange = ws.Range("D19:AF19")
   
    For Each cell In dataRange
        recordSheet.Cells(lastRow, 1).Value = cell.Value
        lastRow = lastRow + 1
    Next cell
   
    ' Kullanıcıya bilgi ver
    MsgBox "Resim kaydedildi: " & filePath & vbCrLf & "Veri 'Kayıt' sayfasına eklendi."
End Sub
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,160
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İnceleyiniz.

 
Katılım
8 Ağustos 2024
Mesajlar
12
Excel Vers. ve Dili
Office 2013 / Türkçe
İnceleyiniz.

Merhaba Korhan bey o bahsettiğiniz sayfada bir çözüm göremedim. Aslında bu paylaşmış olduğum kod muhtemelen eski versiyonlarda çalışıyor ancak Office 2016'ya uyarlanması gerekiyor resmi klasöre kaydediyor ancak boş Paint sayfası gibi kaydediyor ve bu kodda düzenleme yapmam gerekiyor içerisinde veri kayıt kodu da var tek tuşla işimi görebiliyorum
 
Son düzenleme:
Katılım
8 Ağustos 2024
Mesajlar
12
Excel Vers. ve Dili
Office 2013 / Türkçe
Merhaba Korhan bey o bahsettiğiniz sayfada bir çözüm göremedim. Aslında bu paylaşmış olduğum kod muhtemelen eski versiyonlarda çalışıyor ancak Office 2016'ya uyarlanması gerekiyor resmi klasöre kaydediyor ancak boş Paint sayfası gibi kaydediyor ve bu kodda düzenleme yapmam gerekiyor içerisinde veri kayıt kodu da var tek tuşla işimi görebiliyorum
Lütfen yardımlarınızı esirgemeyin
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,786
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
kodun kırmızı olan bölümü bulup değiştirin belki çalışır.

rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture

rng.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,160
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
2 nolu mesajda paylaştığım linkte farklı bir başlığa bağlantı var. Orada ki çözümü deneyiniz.

Farklı bir link...

 
Katılım
8 Ağustos 2024
Mesajlar
12
Excel Vers. ve Dili
Office 2013 / Türkçe
2 nolu mesajda paylaştığım linkte farklı bir başlığa bağlantı var. Orada ki çözümü deneyiniz.

Farklı bir link...

Muhtemelen çözüm vardır ancak paylaştığım kodu ChatGpt'ye yazdırdım kodlara müdahele edebilecek kadar bilgim yok
 
Katılım
20 Şubat 2007
Mesajlar
648
Excel Vers. ve Dili
2007 Excel, Word Tr
Muhtemelen çözüm vardır ancak paylaştığım kodu ChatGpt'ye yazdırdım kodlara müdahele edebilecek kadar bilgim yok
Merhaba,
Sadece bir satırın yerini değiştirmek gerekiyor.
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Yukarıdaki satırı
' Geçici bir grafik oluştur
satırının üzerine taşıyıp dener misiniz.
 
Katılım
6 Mart 2024
Mesajlar
70
Excel Vers. ve Dili
Excel 2013 TR & Excel 2016 TR
Merhaba
@Korhan Ayhan 2022 yılında aşağıda ki link ihtiyacınız olan kodları vermiş

Örnek Kodlarda bulunan

Resmi çekilecek olan hücrelerin bulunduğu SAYFA ismi = Fiyat ve Üretim
Resmi çekilecek olan HÜCRELER = A1:G25
Resmin KAYIT edileceği TAM YOLU ve resmin İSMİ = D:\Download\Foto.jpg ( Direk C sürüsüne kayıt kabul edilmez C:\Foto.jpg gibi )
Siz bunları kendi çalışmanıza göre düzenlemelisiniz


Not : Width ve Height değerini Resmi Çekilecek Hücre aralığı büyüklüğüne göre ayarlamak daha iyi olur gibi
tabi bu benim düşüncem siz ihtiyacınıza göre değiştir ister yapar ister yapmazsınız
sonuçta @Korhan Ayhan öncü kodları vermiş müdahele edin kodlara, kurcaladıkça öğreniliyor.

Sub Hucrelere_Resim_Cek() Dim Grafik As Object Sheets("Fiyat ve Üretim").Select ActiveWindow.Zoom = 110 Range("A1:G25").CopyPicture xlScreen, xlBitmap ActiveSheet.Paste Selection.Cut Set Grafik = ActiveSheet.ChartObjects.Add(Left:=0, Top:=0, Width:=580, Height:=500) Grafik.Activate Grafik.Chart.Paste Grafik.Chart.Export "D:\Download\Foto.jpg" Grafik.Delete MsgBox "Resim kayıt edilmiştir." End Sub
 
Üst