• DİKKAT

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

excel sütündaki resimleri ürün kodu ismiyle kaydetme

Katılım
22 Temmuz 2017
Mesajlar
11
Excel Vers. ve Dili
ecxell 2010, türkçe
excelde a sütündaki resimleri b sütünündaki ürün kodu baz alınarak dosyaya kaydetmek istiyorum.
yardımcı olabilirmisiniz.
şimdiden teşekkürler
 
Biraz daha açabilir misiniz?
B sütunu baz alınarak A sütununa ürün resmi mi almak istiyorsunuz?
Bir nevi katalog yani...
 
şöyleki 500 tane fln fotoğraf var a sütünda, b sutunundada fotograflara ait ürün kodları var. ben bu resimleri isimleri ürün kodu olacak şekilde dosyaya kaydetmek istiyorum. bilmem becerebildimmi anlatmayı :)
 
Dosyaya derken, yeni klasöre diyorsunuz sanırım.
Bu beşyüz fotoğraf excel dışında bir klasörde mevcut mu peki?
 
evet yeni klasörü kast etmiştim.
Bu beşyüz fotoğraf excel dışında bir klasörde mevcut mu peki? hayır excelde
 
Resimlerin tamamı A hücrelerinde mi? Taşma falan yok yani...
 
Aşağıdaki kodu bir deneyin.
Masa üstüne Resim diye bir klasör açın.
Kod çalışırsa resimleri bu klasöre B deki isimlerle kaydeder.
Kodu denemedim, bir deneyin.


Kod:
Sub KOD()
    
    Dim rng As Range, cht As ChartObject, say As Double, obj As Object
    Const strPath As String = "C:\Destkop\Resim\"
    
    Application.ScreenUpdating = False
    
    For i = 1 To Cells(Rows.Count, "A").End(3).Row
        
        Set obj = CreateObject("Scripting.FileSystemObject").GetFolder(strPath)
        say = obj.Files.Count + 1
        
        Set rng = Range(Cells(i, "A")
        
        rng.CopyPicture xlScreen, xlPicture
        Set cht = ActiveSheet.ChartObjects.Add(0, 0, rng.Width + 0, rng.Height + 0)
        cht.Border.LineStyle = 0
        cht.Chart.Paste
        cht.Chart.Export strPath & "" & Range(Cells(i, "B").Value & ".jpg"
        cht.Delete
        
ExitProc:
        
    Next i
    Set obj = Nothing: Set rng = Nothing: Set cht = Nothing
    Application.ScreenUpdating = True
    
End Sub
 
denedim şimdi
compile error
expected : list separator or diye uyarı verdi


resim diye klasör actım bu arada masa üstüne

Aşağıdaki kodu bir deneyin.
Masa üstüne Resim diye bir klasör açın.
Kod çalışırsa resimleri bu klasöre B deki isimlerle kaydeder.
Kodu denemedim, bir deneyin.


Kod:
Sub KOD()
    
    Dim rng As Range, cht As ChartObject, say As Double, obj As Object
    Const strPath As String = "C:\Destkop\Resim\"
    
    Application.ScreenUpdating = False
    
    For i = 1 To Cells(Rows.Count, "A").End(3).Row
        
        Set obj = CreateObject("Scripting.FileSystemObject").GetFolder(strPath)
        say = obj.Files.Count + 1
        
        Set rng = Range(Cells(i, "A")
        
        rng.CopyPicture xlScreen, xlPicture
        Set cht = ActiveSheet.ChartObjects.Add(0, 0, rng.Width + 0, rng.Height + 0)
        cht.Border.LineStyle = 0
        cht.Chart.Paste
        cht.Chart.Export strPath & "" & Range(Cells(i, "B").Value & ".jpg"
        cht.Delete
        
ExitProc:
        
    Next i
    Set obj = Nothing: Set rng = Nothing: Set cht = Nothing
    Application.ScreenUpdating = True
    
End Sub
 
Bir yöntem buldum galiba.

Sayfanızdan bir ekran görüntüsü paylaşmanız mümkün mü?
 
Öncelikle dosyanızın yedeğini mutlaka alın.

C diskinin içinde Resim adıyla bir klasör açın.

Şu kodu sayfa1'in kod alanına yapıştırın.


Kod:
Private Sub Worksheet_Activate()
 Range("C1").Select
ActiveCell.FormulaR1C1 = "=COUNTA(RC[-1]:R[499]C[-1])"

Call resimal
End Sub

Boş bir modül açarak içine aşağıdaki kodları olduğu gibi kopyalayın.

Kod:
Sub KOD()
    
    Dim rng As Range, cht As ChartObject, say As Double, obj As Object
    Const strPath As String = "C:\Resim\"
    
    Application.ScreenUpdating = False
    
    For i = 1 To Cells(Rows.Count, "A").End(3).Row
        
        Set obj = CreateObject("Scripting.FileSystemObject").GetFolder(strPath)
        say = obj.Files.Count + 1
        
        Set rng = Range(Cells(i, "A"), Cells(i, "A"))
        
        rng.CopyPicture xlScreen, xlPicture
        Set cht = ActiveSheet.ChartObjects.Add(0, 0, rng.Width + 0, rng.Height + 0)
        cht.Border.LineStyle = 0
        cht.Chart.Paste
        cht.Chart.Export strPath & "" & Range("b" & i) & ".jpg"
        cht.Delete
        
ExitProc:
        
    Next i
    Set obj = Nothing: Set rng = Nothing: Set cht = Nothing
    Application.ScreenUpdating = True
    
    Call sil
End Sub


Sub sil()

 ActiveSheet.Range("A1").Select
 Selection.EntireRow.Delete
 Sheets("sayfa2").Select
  Sheets("sayfa1").Select
 
End Sub

Sub resimal()

If ActiveSheet.Range("C1").Value <> 0 Then
Call KOD
Call sil
End If

End Sub

Ardında önce sayfa2'ye, sonra da sayfa1'e tıklayın.

Bende çalıştı kodlar.
 
Geri
Üst