Merhaba arkadaşlar, işimin gereği resimler için kullandığımız bir makromuz mevcuttur, fakat macroyu tam bilemediğim için sizlerden yardım rica ediyorum. Saha ekibimiz için Google drive üzerinden 600 civarı klasör oluşturduk ve klasörlerin ismine mağaza isimlerini verdik. O klasörlerin içinde de mağazaların resimleri bulunmakta. Mevcutta olan macromuz şu şekilde çalışmaktadır bir klasörü seçtiğimizde belli bir slayt formatı ile her resimi bir slayda ortaya ekleyerek ve resmin ismini başlık olarak yapmaktadır. Sorunumuz bu resimleri yeniden klasör ismi ile isimlendirmem gerekiyor buda bize zaman kaybettiriyor örn TEKNOSA MAĞAZASI ---> 1234.JPG. Yapmak istediğim makronun tek seferde klasörlerin içindeki resimleri alıp slayda eklemesi ve klasörün ismini başlık olarak almasıdır. Çözümleriniz için şimdiden çok teşekkürler. Kodu aşağıdadır. Sunum dosyasını isterseniz mailinize gönderebilirim.
Kod:
Public isim As String
Public altyazı As String
Public adet As Integer
Public adres As String
Sub HhpPower()
Dim xtop As Integer
xtop = ActivePresentation.Slides(2).Shapes(3).Top
Dim xleft As Integer
xleft = ActivePresentation.Slides(2).Shapes(3).Left
Dim xheigth As Integer
xheigth = ActivePresentation.Slides(2).Shapes(3).Height
Dim xWidth As Integer
xWidth = ActivePresentation.Slides(2).Shapes(3).Width
adres = "C:\Users\daco\Desktop\Mağazalar"
adres = InputBox("Kaynak Dosyayını Aşağıdan Değiştirebilirsiniz!", "Fotografların Bulunduğu Klasör", adres)
altyazı = "A5 Live Dummy"
altyazı = InputBox("Slayt Alt Bilgisi?", "Display Raporu Hangi Cihaz")
adres = adres + "\"
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim i As Integer
Dim isim2 As String
Dim uzunluk As Integer
Dim strTemp As String
Dim strPath As String
Dim strFileSpec As String
Dim oSld As Slide
Dim oPic As Shape
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(adres)
i = 2
For Each objFile In objFolder.Files
isim = objFile.Name
i = i + 1
strPath = adres
strFileSpec = "*.jpg"
'strTemp = Dir(strPath & strFileSpec)
strPath = adres
ActivePresentation.Slides(2).Copy
ActivePresentation.Slides.Paste
ActivePresentation.Slides(i).Select
Set oSld = ActivePresentation.Slides(i)
isim2 = Left(isim, Len(isim) - 4)
isim2 = UCase(isim2)
'isim2 = a.Substring(0, isim.Length - a.LastIndexOf("."))
ActivePresentation.Slides(i).Shapes(1).TextFrame.TextRange.Text = isim2
ActivePresentation.Slides(i).Shapes(2).TextFrame.TextRange.Text = altyazı
Set oPic = oSld.Shapes.AddPicture(FileName:=strPath & isim, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=0, _
Top:=0, _
Width:=-1, _
Height:=-1)
With oPic
.LockAspectRatio = msoFalse
.Height = xheigth
.Width = xWidth
.Left = xleft
.Top = xtop
End With
Next objFile
ActivePresentation.Slides(2).Delete
MsgBox ("İşlem Tamamlanmıştır, Şuanki dosyayı farklı kaydederek elinizdeki 'HHp-Powerpoint' dosyasını kalıp olarak kullanmaya devam edebilirsiniz!")
ActivePresentation.Slides(1).Select
End Sub
Sub ekle()
Dim strTemp As String
Dim strPath As String
Dim strFileSpec As String
Dim oSld As Slide
Dim oPic As Shape
For i = 2 To adet
strPath = "C:\Users\trada25\Desktop\res\"
strFileSpec = "*.jpg"
strTemp = Dir(strPath & strFileSpec)
strPath = "C:\Users\trada25\Desktop\res\"
ActivePresentation.Slides(1).Copy
ActivePresentation.Slides.Paste
Set oSld = ActivePresentation.Slides(i)
Set oPic = oSld.Shapes.AddPicture(FileName:=strPath & strTemp, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=0, _
Top:=0, _
Width:=-1, _
Height:=-1)
With oPic
.LockAspectRatio = msoFalse
.Height = ActivePresentation.PageSetup.SlideHeight - 200
.Width = ActivePresentation.PageSetup.SlideWidth - 200
.Left = 100
.Top = 100
End With
Next i
End Sub
Son düzenleme:
