• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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:
İnceleyiniz.

 
İ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:
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
 
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
 
2 nolu mesajda paylaştığım linkte farklı bir başlığa bağlantı var. Orada ki çözümü deneyiniz.

Farklı bir link...

 
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
 
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.
 
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
 
Geri
Üst