xedapdo2006
Thành viên mới
- Tham gia
- 11/11/13
- Bài viết
- 22
- Được thích
- 0
Các a.c pro cho e hỏi, trong vba có thể lấy được giá trị scale của ảnh trong excel. Em cảm ơn
Có thể lấy được, đưa file và ví dụ cụ thể lên đi bạn.Các a.c pro cho e hỏi, trong vba có thể lấy được giá trị scale của ảnh trong excel. Em cảm ơn
Thay cho ghi nhận thì bạn vào bài #1 và sửa những từ viết tắt nhé. Nhớ là bỏ từ pro đi vì nhiều người không chấp nhận từ đó.Em xin ghi nhận ý kiến, nhưng em đang cần 1 câu trả lời câu hỏi hơn là 1 ý kiến bắt lỗi nhỏ nhặt như vậy. Em cảm ơn
Có thể trả về giá trị gốc, sau đó lấy giá trị đã resize chia cho giá trị gốc thì ra giá trị scale nha bạn. Bạn nên đưa file cụ thể lên.Ví dụ một ảnh có giá trị scale height là 124% và scale width là 136%, thì trong VBA có lệnh nào có thể lấy 2 giá trị này ra ko ạ
.. mình cần ý kiến xây dựng về bài
..
Mình rất tôn trọng mọi người, nhưng có những người nói những câu chói tai nên mình phản ứng lại thôi
..Với cái ảnh ví dụ đó bạn cho biết cái gọi là scale height và scale width là bao nhiêu - 2 con số cụ thể cho ảnh cụ thể. Và giải thích bạn đã lấy bằng tay thế nào, hoặc tính toán thế nào để ra 2 con số đó. Có như vậy người giúp mới hiểu ý bạn.
Mà bạn cần 2 con số đó chắc cho mục đích cụ thể chứ không phải để thỏa chí tò mò. Vậy mục đích đó là gì? Biết đâu có con đường khác dễ dàng hơn để đi tới cái đích đó. Vậy hãy nói ra nhé.
Private Function GetOriginalMeasurements(ByRef myShape As Excel.Shape)
Dim shpCopy As Excel.Shape
Dim measurements(1) As Single
Set shpCopy = myShape.Duplicate
' Reset original measurements
shpCopy.ScaleHeight 1, msoTrue
measurements(0) = shpCopy.width
measurements(1) = shpCopy.height
shpCopy.Delete
GetOriginalMeasurements = measurements
End Function
Sub Main()
Dim myShape As Excel.Shape
Dim measurements() As Single
Dim width As Single
Dim height As Single
Set myShape = ActiveWorkbook.ActiveSheet.Shapes(1)
measurements = GetOriginalMeasurements(myShape)
width = measurements(0)
height = measurements(1)
Debug.Print width
Debug.Print height
End Sub
Cảm ơn bạn đã xây dựng bài, code đường vòng mình có làm được rồi, ý của mình là có câu lệnh nào rút ra được ngay không. Dù sao cũng cảm ơn bạn đã hỗ trợXin chào bạn @xedapdo2006
OT đã đọc các bài viết của bạn và mọi người trong chủ đề này, OT tham gia diễn đàn này đã lâu nên nhận hầu hết tất cả mọi người tham gia vào chủ đều này đều có thể giúp đỡ cho bạn được về mặt chuyên môn.
Bạn cần ý kiến xây dựng bài, OT có thấy trong bài viết mà OT trích dẫn dưới đây có hỏi/xác nhận với bạn vấn đề liên quan đến câu hỏi ccủa bạn nhưng chưa thấy bạn trả lời :
thay vào đó bạn toàn trả lời các vấn đề liên quan đến tranh luận về quan điểm như vậy có thể coi là là xây dựng bài và tôn trọng được không bạn?
--------
Về vấn đề liên quan đến câu hỏi của bạn OT không hiểu tiếng anh của từ "scale" là gì và đã sử dụng trình dịch internet thì kết quả là.
Sau đó OT tìm kiếm theo chuỗi tiếng anh "get scale values of excel images"
View attachment 249702
thì có thấy link sau, :
Bạn hỏi về code chắc là bạn cũng đã biết sử dụng code rồi? Vậy bạn thử tham khảo code bên dưới này xem:Determine actual and displayed size of picture object in VBA
In VBA, I'm trying to determine both the actual and the displayed size of a picture object on a worksheet. The displayed size can be different from the actual size due to scaling factors. So far, I...stackoverflow.com
Mã:Private Function GetOriginalMeasurements(ByRef myShape As Excel.Shape) Dim shpCopy As Excel.Shape Dim measurements(1) As Single Set shpCopy = myShape.Duplicate ' Reset original measurements shpCopy.ScaleHeight 1, msoTrue measurements(0) = shpCopy.width measurements(1) = shpCopy.height shpCopy.Delete GetOriginalMeasurements = measurements End Function
OT cũng không hiểu ý bạn như thế nào nhưng thấy bạn cứ nhất định muốn xây dựng bài mà không trả lời các câu hỏi liên quan của người hỏi thì OT trả lời mò thôi.Mã:Sub Main() Dim myShape As Excel.Shape Dim measurements() As Single Dim width As Single Dim height As Single Set myShape = ActiveWorkbook.ActiveSheet.Shapes(1) measurements = GetOriginalMeasurements(myShape) width = measurements(0) height = measurements(1) Debug.Print width Debug.Print height End Sub
Ý bạn nói tôi hiểu, nhưng tôi chỉ muốn hỏi giá trị scale thôi, tức là 3 hình kích thước khác nhau nhưng nếu scale 100% thì vẫn rút ra đúng số như vậy. Cảm ơn bạn đóng góp ý kiếnGiả sử tôi có ảnh "anh.jpg" nào đó với kích thức trên đĩa là height = 8,33 cm, width = 20,48 cm.
Tôi chọn Insert -> Picture -> chọn anh.jpg. Trên sheet tôi có ảnh với kích thước thực.
Bây giờ tôi chọn Insert -> Shape -> chọn hình chữ nhật -> vẽ hình chữ nhật có height = 8,33 và width = 10,24 -> phải chuột chọn Size and Properties -> chọn Fill -> chọn anh.jpg. Trên sheet tôi cũng có ảnh nhưng nhỏ bằng 1/2 ảnh gốc.
Bây giờ tôi chọn Insert -> Shape -> chọn hình chữ nhật -> vẽ hình chữ nhật có height = 8,33 và width = 5,12 -> phải chuột chọn Size and Properties -> chọn Fill -> chọn anh.jpg. Trên sheet tôi cũng có ảnh nhưng nhỏ bằng 1/4 ảnh gốc.
Bây giờ phải chuột trên từng ảnh chọn Size and Properties. Sẽ thấy là với cả 3 ảnh đều thấy ghi Scale Height = 100%, Scale width = 100%.
View attachment 249717
Ba ảnh lần lượt bằng 100%, 50% và 25% ảnh gốc mà đều có cái gọi là Scale Height và Scale width bằng 100%. Vậy giả sử nếu bằng cách nào đó đọc được giá trị Scale Height = Scale width = 100% thì các giá trị đọc được là vô dụng, chắc là người hỏi không muốn đọc các giá trị này. Còn nếu người hỏi muốn đọc ra cho "ảnh 1" giá trị 100% và 100%, cho "ảnh 2" giá trị 100% và 50%, cho "ảnh 3" giá trị 100% và 25% thì người hỏi phải mô tả rõ ràng. Tốt nhất là đính kèm tập tin và dựa vào ̣đó mô tả.
Nếu đọc bài #7 và #10 thì moi người sẽ thấy là tôi không bắt bẻ chủ thớt. Chỉ có lời khuyên sửa bài #1 và câu hỏi. Lời khuyên tốt cho chủ thớt vì nếu làm theo tôi nói thì mọi lưu ý về nội qui sẽ chấm dứt ngay lập tức. Một khi tôi chưa hiểu ý thì tôi luôn hỏi. Tôi không muốn mất thời gian cho những chuyện không đâu. Nhưng nếu người hỏi không muốn nhọc công thì thôi. Họ có quyền không trả lời mình. Tât nhiên tôi cũng có quyền của tôi. Tôi không thấy buồn tẻ tới mức phải van lậy ai đó để có việc làm không công.
Tôi chấm dứt ở đây.