Page 1 of 1
save รูปพร้อมกับใส่ชื่อ
Posted: Tue Jan 28, 2020 3:18 pm
by mr.zatan
ต้องการ Save รูป พร้อมกับใส่ชื่อครับ
- ติดปัญหาคือชื่อไม่ตรงกับรูป
VBA
Code: Select all
Sub SaveImages()
'the location to save all the images
Const destFolder$ = "C:\Users\user\Desktop\New folder\"
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("image")
Dim ppt As Object, ps As Variant, slide As Variant
Set ppt = CreateObject("PowerPoint.application")
Set ps = ppt.presentations.Add
Set slide = ps.slides.Add(1, 1)
Dim shp As Shape, shpName$
For Each shp In ws.Shapes
shpName = destFolder & shp.TopLeftCell.Offset(1, 1) & ".jpg"
shp.Copy
With slide
.Shapes.Paste
.Shapes(.Shapes.Count).Export shpName, 2
.Shapes(.Shapes.Count).Delete
End With
Next shp
With ps
.Saved = True
.Close
End With
ppt.Quit
Set ppt = Nothing
End Sub
Re: save รูปพร้อมกับใส่ชื่อ
Posted: Tue Jan 28, 2020 8:41 pm
by snasui

ในเครื่องผมไม่สามารถ Debug ได้เพราะ Code จะจบแค่
.Shapes.Paste ไม่มีการ Run ต่อ
ลอง Debug ตรง
.Shapes(.Shapes.Count) โดยสังเกตว่าเป็น Shape อะไร ตรงกับภาพที่นำมาวางหรือไม่ครับ
Re: save รูปพร้อมกับใส่ชื่อ
Posted: Fri Jan 31, 2020 10:42 am
by mr.zatan
รัน VBA นานๆแล้ว solve system error &H80070057(-2147024809)
- Excel 2019
- รูปเยอะมากๆ จำเป็นต้อง รันนานๆ ครับ
** มีวิธีแก้ไหมครับ
Code: Select all
Sub Export_Pictures()
Dim picturename As String, mypath As String
Dim PicWidth As Double, PicHeight As Long
Dim init_PicWidth As Long, init_PicHeight As Double
Dim shp As Shape
Dim tempChart As Chart
Dim chartName As String
Dim sheetname As String
Dim sh As Worksheet
mypath = "C:\Users\safe\Desktop\New folder\"
sheetname = ActiveSheet.Name
Set tempChart = Charts.Add
tempChart.Location xlLocationAsObject, Name:=sheetname
chartName = Mid(ActiveChart.Name, Len(sheetname) + 2)
For Each shp In ActiveSheet.Shapes
picturename = Replace(shp.TopLeftCell.Offset(0, 1).Value, "/", "-")
picturename = Application.WorksheetFunction.Substitute(Application.WorksheetFunction.Substitute(picturename, _
Chr(10), " "), " ", " ")
init_PicWidth = shp.Width
init_PicHeight = shp.Height
If shp.Name <> "Chart 1" And shp.HasChart = False Then
If Dir(flowerpath & picturename & ".jpg") = "" Then
shp.ScaleHeight 1#, True, msoScaleFromTopLeft
PicHeight = shp.Height
PicWidth = shp.Width
With ActiveSheet.Shapes(chartName)
.Width = shp.Width
.Height = shp.Height
End With
shp.Copy
ActiveChart.Paste
ActiveChart.Export Filename:=mypath & picturename & ".jpg", FilterName:="jpg"
shp.Width = init_PicWidth
shp.Height = init_PicHeight
ActiveChart.Shapes(1).Delete
End If
End If
Next
ActiveChart.ChartArea.Clear
End Sub

Re: save รูปพร้อมกับใส่ชื่อ
Posted: Fri Jan 31, 2020 10:28 pm
by snasui

เปิดหน้าต่าง Immediate Window และเพิ่ม
Debug.print shp.name ก่อนบรรทัด
shp.copy เพื่อจะดูว่า Code มา Error ด้วย Shape ตัวไหน เผื่อพอจะได้ไล่หาสาเหตุจาก Shape ตัวนั้นได้ครับ
Re: save รูปพร้อมกับใส่ชื่อ
Posted: Sat Feb 01, 2020 9:29 am
by mr.zatan
ขึ้นมาแบบนี้ครับ
Code: Select all
Picture 1
Picture 2
Picture 3
Picture 8
Picture 9
Picture 11
Picture 1
Picture 2
Picture 3
Picture 5
Picture 6
Picture 8
Picture 9
Picture 11
Picture 1
Picture 2
Picture 3
Picture 5
Picture 6
Picture 8
Picture 9
Picture 11
Picture 12
Picture 13
Picture 13
Picture 14
Picture 16
Picture 17
Picture 18
Picture 22
Picture 24
Picture 25
Picture 27
Picture 28
Picture 29
Picture 30
Picture 31
Picture 32
Picture 33
Picture 34
Picture 35
Picture 36
Picture 37
Picture 38
Picture 39
Picture 40
Picture 41
Picture 42
Picture 44
Picture 45
Picture 46
Picture 47
Picture 48
Picture 49
Picture 50
Picture 51
Picture 52
Picture 53
Picture 54
Picture 5
Picture 6
Picture 8
Picture 9
Picture 11
Picture 12
Picture 13
Picture 14
Picture 16
Picture 17
Picture 18
Picture 19
Picture 20
Picture 21
Picture 22
Picture 23
Picture 2
Picture 3
Picture 5
Picture 6
Picture 8
Picture 9
Picture 11
Picture 12
Picture 13
Picture 14
Picture 16
Picture 17
Picture 18
Picture 19
Picture 20
Picture 21
Picture 22
Picture 24
Picture 25
Picture 26
Picture 8
Picture 9
Picture 1
Picture 2
Picture 5
Picture 12
Picture 17
Picture 25
Picture 27
Picture 29
Picture 30
Picture 39
Picture 35
Picture 1
Picture 5
Picture 6
Picture 8
Picture 12
Picture 1
Picture 2
Picture 3
Picture 1
Picture 1
Picture 3
Picture 6
Picture 8
Picture 12
Picture 19
Picture 22
Picture 29
Picture 1
Picture 2
Picture 3
Picture 5
Picture 6
Picture 8
Picture 9
Picture 11
Picture 12
Picture 13
Picture 14
Picture 16
Picture 17
Picture 18
Picture 19
Picture 20
Picture 21
Picture 22
Picture 23
Picture 24
Picture 25
Picture 26
Picture 27
Picture 28
Picture 29
Picture 30
Picture 31
Picture 32
Picture 33
Picture 34
Picture 2
Picture 3
Picture 5
Picture 1
Picture 2
Picture 3
Picture 5
Picture 6
Picture 8
Picture 9
Picture 11
Picture 12
Picture 13
Picture 14
Picture 16
Picture 17
Picture 18
Picture 19
Picture 20
Picture 21
Picture 22
Picture 23
Picture 24
Picture 26
Picture 27
Picture 28
Picture 29
Picture 30
Picture 31
Picture 32
Picture 33
Picture 34
Picture 35
Picture 1
Picture 3
Picture 2
Picture 1
Picture 2
Picture 3
Picture 5
Picture 6
Picture 2
Picture 1
Picture 1
Re: save รูปพร้อมกับใส่ชื่อ
Posted: Sat Feb 01, 2020 9:38 am
by snasui

บรรทัดสุดท้ายคือรายการใด แสดงว่ารายการนั้นก่อให้เกิดปัญหา ลองเพิ่ม Debug.Pirnt ของชื่อชีตมาแสดงควบคู่ไปด้วยจะได้ทราบว่าของชีตไหนครับ
Re: save รูปพร้อมกับใส่ชื่อ
Posted: Sat Feb 01, 2020 9:48 am
by mr.zatan
รึว่าเป็นเพราะมี Shape ตรงไหนสักแห่งที่ไม่ใช่ picture
ผมลองเพิ่ม Shape ลงไปที่ไม่ใช่ picture ก็จะเกิด solve system error &H80070057(-2147024809)
Re: save รูปพร้อมกับใส่ชื่อ
Posted: Sat Feb 01, 2020 9:54 am
by snasui

ก็อาจจะเป็นไปได้เช่นกัน หากจะแก้ปัญหานี้ก็ต้องดักว่าจะต้องเป็น Picture จึงจะคัดลอกไปวางครับ
Re: save รูปพร้อมกับใส่ชื่อ
Posted: Sat Feb 01, 2020 10:02 am
by mr.zatan
รบกวนแก้ Code ดักเอาแต่ Picture ให้ด้วยครับ
Re: save รูปพร้อมกับใส่ชื่อ
Posted: Sat Feb 01, 2020 10:15 am
by snasui

ลองเขียนมาเองดูก่อนครับ
ดูตัวอย่างโพสต์นี้มีการดักว่าชื่อขึ้นต้นด้วย "Pict" แล้วลบทิ้ง
viewtopic.php?t=324