sevensuleyman
Altın Üye
- Katılım
- 9 Kasım 2012
- Mesajlar
- 202
- Excel Vers. ve Dili
- office 2010
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Option Explicit
Sub Mamul_Koduna_Gore_Resimleri_Klasorlere_Aktar()
Dim Dizi As Object, Alan As Range, Veri As Range, S1 As Worksheet, Resim As Object
Dim XL_Chart As Object, Genislik As Integer, Yukseklik As Integer
Dim Nesne As Shape, Ana_Klasor As String, Yol As String, Son As Long
Application.ScreenUpdating = False
Set Dizi = CreateObject("Scripting.Dictionary")
Set S1 = Sheets("Sheet1")
Ana_Klasor = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator & "Mamül Resimleri"
If Dir(Ana_Klasor, vbDirectory) = "" Then MkDir (Ana_Klasor)
Son = S1.Cells(S1.Rows.Count, 2).End(3).Row
Set Alan = S1.Range("B2:B" & Son)
For Each Veri In Alan
Dizi.Item(Veri.Value) = 1
Yol = Ana_Klasor & Application.PathSeparator & Veri.Value
If Dir(Yol, vbDirectory) = "" Then MkDir (Yol)
Genislik = Veri.Offset(0, 2).Width
Yukseklik = Veri.Offset(0, 2).Height
For Each Nesne In S1.Shapes
If Nesne.Type = msoPicture Then
If Not Intersect(Nesne.TopLeftCell, Veri.Offset(0, 2)) Is Nothing Then
Nesne.CopyPicture
Application.DisplayAlerts = False
Set XL_Chart = S1.ChartObjects.Add(0, 0, Genislik, Yukseklik)
With XL_Chart
.Chart.Parent.Activate
.Chart.Parent.Border.LineStyle = 0
.Chart.Paste
DoEvents
Set Resim = ActiveChart.Shapes.Range(Array("chart"))
With Resim
.Width = Genislik
.Height = Yukseklik
End With
.Chart.Export Filename:=Yol & Application.PathSeparator & _
Veri.Offset(0, 3).Value & ".jpg", FilterName:="jpg"
.Chart.Parent.Delete
End With
Application.DisplayAlerts = True
End If
End If
Next
Next
Set Dizi = Nothing
Set S1 = Nothing
Set Alan = Nothing
Set XL_Chart = Nothing
Application.ScreenUpdating = True
MsgBox "Mamül resimleri aşağıdaki klasöre başarıyla kayıt edilmiştir." & Chr(10) & Chr(10) & Ana_Klasor
End Sub
Option Explicit
Sub Mamul_Koduna_Gore_Resimleri_Klasorlere_Aktar()
Dim Alan As Range, Veri As Range, S1 As Worksheet, Resim As Object
Dim XL_Chart As Object, Genislik As Integer, Yukseklik As Integer
Dim Nesne As Shape, Yol As String, Son As Long
Application.ScreenUpdating = False
Set S1 = Sheets("Sayfa1")
Yol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator & "Mamül Resimleri"
If Dir(Yol, vbDirectory) = "" Then MkDir (Yol)
Son = S1.Cells(S1.Rows.Count, 1).End(3).Row
Set Alan = S1.Range("A2:A" & Son)
For Each Veri In Alan
Genislik = Veri.Offset(0, 1).Width
Yukseklik = Veri.Offset(0, 1).Height
For Each Nesne In S1.Shapes
If Nesne.Type = msoPicture Then
If Not Intersect(Nesne.TopLeftCell, Veri.Offset(0, 1)) Is Nothing Then
Nesne.CopyPicture
Application.DisplayAlerts = False
Set XL_Chart = S1.ChartObjects.Add(0, 0, Genislik, Yukseklik)
With XL_Chart
.Chart.Parent.Activate
.Chart.Parent.Border.LineStyle = 0
.Chart.Paste
DoEvents
Set Resim = ActiveChart.Shapes.Range(Array("chart"))
With Resim
.Width = Genislik
.Height = Yukseklik
End With
.Chart.Export Filename:=Yol & Application.PathSeparator & _
Veri.Value & ".jpg", FilterName:="jpg"
.Chart.Parent.Delete
End With
Application.DisplayAlerts = True
End If
End If
Next
Next
Set S1 = Nothing
Set Alan = Nothing
Set XL_Chart = Nothing
Application.ScreenUpdating = True
MsgBox "Mamül resimleri aşağıdaki klasöre başarıyla kayıt edilmiştir." & Chr(10) & Chr(10) & Yol
End Sub
@kakara,
Deneyiniz.
C++:Option Explicit Sub Mamul_Koduna_Gore_Resimleri_Klasorlere_Aktar() Dim Alan As Range, Veri As Range, S1 As Worksheet, Resim As Object Dim XL_Chart As Object, Genislik As Integer, Yukseklik As Integer Dim Nesne As Shape, Yol As String, Son As Long Application.ScreenUpdating = False Set S1 = Sheets("Sayfa1") Yol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator & "Mamül Resimleri" If Dir(Yol, vbDirectory) = "" Then MkDir (Yol) Son = S1.Cells(S1.Rows.Count, 1).End(3).Row Set Alan = S1.Range("A2:A" & Son) For Each Veri In Alan Genislik = Veri.Offset(0, 1).Width Yukseklik = Veri.Offset(0, 1).Height For Each Nesne In S1.Shapes If Nesne.Type = msoPicture Then If Not Intersect(Nesne.TopLeftCell, Veri.Offset(0, 1)) Is Nothing Then Nesne.CopyPicture Application.DisplayAlerts = False Set XL_Chart = S1.ChartObjects.Add(0, 0, Genislik, Yukseklik) With XL_Chart .Chart.Parent.Activate .Chart.Parent.Border.LineStyle = 0 .Chart.Paste DoEvents Set Resim = ActiveChart.Shapes.Range(Array("chart")) With Resim .Width = Genislik .Height = Yukseklik End With .Chart.Export Filename:=Yol & Application.PathSeparator & _ Veri.Value & ".jpg", FilterName:="jpg" .Chart.Parent.Delete End With Application.DisplayAlerts = True End If End If Next Next Set S1 = Nothing Set Alan = Nothing Set XL_Chart = Nothing Application.ScreenUpdating = True MsgBox "Mamül resimleri aşağıdaki klasöre başarıyla kayıt edilmiştir." & Chr(10) & Chr(10) & Yol End Sub

Option Explicit
Sub Mamul_Koduna_Gore_Resimleri_Klasorlere_Aktar()
Dim Dizi As Object, Alan As Range, Veri As Range, S1 As Worksheet, Resim As Object
Dim XL_Chart As Object, Son As Long, Aranan_Klasor As String, Aranan_Resim As String
Dim Nesne As Shape, Ana_Klasor As String, Yol As String
Application.ScreenUpdating = False
Set Dizi = CreateObject("Scripting.Dictionary")
Set S1 = Sheets("Sheet1")
Ana_Klasor = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator & "Mamül Resimleri"
If Dir(Ana_Klasor, vbDirectory) = "" Then MkDir (Ana_Klasor)
Aranan_Klasor = ThisWorkbook.Path & Application.PathSeparator & "KAYNAK KLASÖR" & Application.PathSeparator
Son = S1.Cells(S1.Rows.Count, 2).End(3).Row
Set Alan = S1.Range("B2:B" & Son)
For Each Veri In Alan
Dizi.Item(Veri.Value) = 1
Yol = Ana_Klasor & Application.PathSeparator & Veri.Value
If Dir(Yol, vbDirectory) = "" Then MkDir (Yol)
Aranan_Resim = Aranan_Klasor & Veri.Offset(0, 3).Value & ".jpg"
If Dir(Aranan_Resim) <> "" Then
FileCopy Aranan_Resim, Yol & Application.PathSeparator & Veri.Offset(0, 3).Value & ".jpg"
End If
Next
Set Dizi = Nothing
Set S1 = Nothing
Set Alan = Nothing
Application.ScreenUpdating = True
MsgBox "Mamül resimleri aşağıdaki klasöre başarıyla kayıt edilmiştir." & Chr(10) & Chr(10) & Ana_Klasor
End Sub
Söylediğiniz gibi excell dosyamı kayank klasörüme içerisnne ekleyip çalıştırdım. klasörler oluşuyor.fakat resimler kopyalanmıyor.@SeviLmeyen,
KAYNAK KLASÖR'ünüz bu makroyu kullanacağınız dosya ile aynı bölümde olsun. Ya da Aranan_Klasor yolunu kendinize göre düzenleyiniz.
C++:Option Explicit Sub Mamul_Koduna_Gore_Resimleri_Klasorlere_Aktar() Dim Dizi As Object, Alan As Range, Veri As Range, S1 As Worksheet, Resim As Object Dim XL_Chart As Object, Son As Long, Aranan_Klasor As String, Aranan_Resim As String Dim Nesne As Shape, Ana_Klasor As String, Yol As String Application.ScreenUpdating = False Set Dizi = CreateObject("Scripting.Dictionary") Set S1 = Sheets("Sheet1") Ana_Klasor = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator & "Mamül Resimleri" If Dir(Ana_Klasor, vbDirectory) = "" Then MkDir (Ana_Klasor) Aranan_Klasor = ThisWorkbook.Path & Application.PathSeparator & "KAYNAK KLASÖR" & Application.PathSeparator Son = S1.Cells(S1.Rows.Count, 2).End(3).Row Set Alan = S1.Range("B2:B" & Son) For Each Veri In Alan Dizi.Item(Veri.Value) = 1 Yol = Ana_Klasor & Application.PathSeparator & Veri.Value If Dir(Yol, vbDirectory) = "" Then MkDir (Yol) Aranan_Resim = Aranan_Klasor & Veri.Offset(0, 3).Value & ".jpg" If Dir(Aranan_Resim) <> "" Then FileCopy Aranan_Resim, Yol & Application.PathSeparator & Veri.Offset(0, 3).Value & ".jpg" End If Next Set Dizi = Nothing Set S1 = Nothing Set Alan = Nothing Application.ScreenUpdating = True MsgBox "Mamül resimleri aşağıdaki klasöre başarıyla kayıt edilmiştir." & Chr(10) & Chr(10) & Ana_Klasor End Sub
daha önce Mamül Resimleri adlı klasör kayıtlı duyordu. silip tekrar çalıştırdıgımda düzeldi. çok teşekkür ederim .sorunsuz çalışıyorBende kopyalanıyor.
Korhan Bey,@SeviLmeyen,
KAYNAK KLASÖR'ünüz bu makroyu kullanacağınız dosya ile aynı bölümde olsun. Ya da Aranan_Klasor yolunu kendinize göre düzenleyiniz.
C++:Option Explicit Sub Mamul_Koduna_Gore_Resimleri_Klasorlere_Aktar() Dim Dizi As Object, Alan As Range, Veri As Range, S1 As Worksheet, Resim As Object Dim XL_Chart As Object, Son As Long, Aranan_Klasor As String, Aranan_Resim As String Dim Nesne As Shape, Ana_Klasor As String, Yol As String Application.ScreenUpdating = False Set Dizi = CreateObject("Scripting.Dictionary") Set S1 = Sheets("Sheet1") Ana_Klasor = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator & "Mamül Resimleri" If Dir(Ana_Klasor, vbDirectory) = "" Then MkDir (Ana_Klasor) Aranan_Klasor = ThisWorkbook.Path & Application.PathSeparator & "KAYNAK KLASÖR" & Application.PathSeparator Son = S1.Cells(S1.Rows.Count, 2).End(3).Row Set Alan = S1.Range("B2:B" & Son) For Each Veri In Alan Dizi.Item(Veri.Value) = 1 Yol = Ana_Klasor & Application.PathSeparator & Veri.Value If Dir(Yol, vbDirectory) = "" Then MkDir (Yol) Aranan_Resim = Aranan_Klasor & Veri.Offset(0, 3).Value & ".jpg" If Dir(Aranan_Resim) <> "" Then FileCopy Aranan_Resim, Yol & Application.PathSeparator & Veri.Offset(0, 3).Value & ".jpg" End If Next Set Dizi = Nothing Set S1 = Nothing Set Alan = Nothing Application.ScreenUpdating = True MsgBox "Mamül resimleri aşağıdaki klasöre başarıyla kayıt edilmiştir." & Chr(10) & Chr(10) & Ana_Klasor End Sub