Page 1 of 1

เปลี่ยนขนาดรูปภาพด้วย VBA

Posted: Thu Sep 28, 2017 9:50 pm
by mynumnum
ูขอความอนุเคราะห์ท่านผู้รู้
ผมเคยเปลี่ยนขนาดรูปภาพใน Excel ด้วยโค้ดนี้
แต่พอนำมาใช้กับ Word ผมทำการเปลี่ยนโค้ดจาก ActiveSheet เป็น ActiveDocument แล้ว
แต่มันก็ยังไม่สามารถทำงานได้และไม่แจ้งข้อความ ใดๆ เลย
ต้องแก้ไขอย่างไรครับ

Sub Macro1()
Dim s As Shape
For Each s In ActiveDocument.Shapes
s.Select
'กำหนดความสูง ด้านละ 1.5 นิ้ว
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 108#
Selection.ShapeRange.Width = 108#
Next s
End Sub

Re: เปลี่ยนขนาดรูปภาพด้วย VBA

Posted: Thu Sep 28, 2017 11:47 pm
by snasui
:D การโพสต์ Code ควรโพสต์ให้แสดงเป็น Code ดูตัวอย่างในกฎข้อ 5 ด้านบนประกอบครับ

ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Dim i As Integer
For i = 1 To ActiveDocument.InlineShapes.Count
    With ActiveDocument.InlineShapes(i)
        .LockAspectRatio = msoFalse
        .Height = 108
        .Width = 108
    End With
Next i

Re: เปลี่ยนขนาดรูปภาพด้วย VBA

Posted: Fri Sep 29, 2017 12:22 am
by mynumnum
ขออภัยอาจารย์ที่ทำให้เคืองเรื่อง กฏข้อ 5

เอาไปทดลองใช้แล้วได้ผลครับ
ขอขอบพระคุณอาจารย์เป็นอย่างสูงครับ

Re: เปลี่ยนขนาดรูปภาพด้วย VBA

Posted: Fri Sep 29, 2017 6:29 am
by snasui
mynumnum wrote:ขออภัยอาจารย์ที่ทำให้เคืองเรื่อง กฏข้อ 5

เอาไปทดลองใช้แล้วได้ผลครับ
ขอขอบพระคุณอาจารย์เป็นอย่างสูงครับ
:D ขอบคุณที่แจ้งผลและยินดีที่ช่วยได้ครับ

ผมไม่ได้ขุ่นเคืองแต่อย่างใด จำเป็นต้องแจ้งให้ทราบตามหน้าที่เพื่อให้เป็นไปตามกฎของบอร์ดครับ

Re: เปลี่ยนขนาดรูปภาพด้วย VBA

Posted: Sat Oct 07, 2017 3:16 pm
by mynumnum
ถ้ามันเป็นรูปภาพที่กรุ๊ปรวมกับข้อความแล้ว ActiveDocument.InlineShapes.Count หาไม่เจอครับ
หาคำแนะนำในเว็บเป็นภาษาอังกฤษอ่านแล้วไม่เข้าใจ ครับ
ช่วยต่อยอดให้อีกนิดนะครับ

Re: เปลี่ยนขนาดรูปภาพด้วย VBA

Posted: Sat Oct 07, 2017 3:38 pm
by snasui
:D แนบไฟล์ล่าสุดมาใหม่ ชี้ให้เห็นว่าเดิมเป็นอย่างไร ต้องให้ให้แสดงเป็นอย่างไร เขียน Code ไว้แล้วอย่างไร ติดขัดที่บรรทัดใด

ในการปรับ Code จะต้องพยายามปรับปรุงมาก่อนเท่าที่ทำได้ ได้เท่าไรก็เท่านั้น ติดแล้วค่อยถามกันครับ

Re: เปลี่ยนขนาดรูปภาพด้วย VBA

Posted: Sat Oct 07, 2017 4:49 pm
by mynumnum

Code: Select all

Dim i As Integer
MsgBox ActiveDocument.InlineShapes.Count
For i = 1 To ActiveDocument.InlineShapes.Count
    With ActiveDocument.InlineShapes(i)
        .LockAspectRatio = msoFalse
        .Height = 108
        .Width = 108
    End With
Next i
จากโค้ดด้านบนสามารถเปลี่ยนขนาดรูปภาพได้ตามต้องการ
แต่ถ้ามันเป็นรูปภาพที่กรุ๊ปรวมกับข้อความแล้ว ActiveDocument.InlineShapes.Count (บรรทัดที่ 2) หารูปไม่เจอเลยสักรูปครับ

Re: เปลี่ยนขนาดรูปภาพด้วย VBA

Posted: Sun Oct 08, 2017 7:12 am
by snasui
:D ใช้ For each Next เข้ามาช่วยได้ครับ

เช่น

Code: Select all

For Each Obj in ActiveDocument.Shapes
'Other code
Next Obj

Re: เปลี่ยนขนาดรูปภาพด้วย VBA

Posted: Sun Oct 08, 2017 8:35 am
by mynumnum
:thup: ขอบคุณครับอาจารย์
วันหน้าจะมาขอความอนุเคราะห์ใหม่นะครับ