Add-in zoom ảnh

Liên hệ QC

thang_nguyen1

Thành viên hoạt động
Tham gia
6/10/16
Bài viết
116
Được thích
4
Chào các anh chị em trong diễn đàn. Mình có một vấn đề là có thể làm một add-in zoom ảnh được không. Khi chuột click vào ảnh, ảnh đó sẽ phóng to kích thước so với tỉ lệ ban đầu.
 
Chào các anh chị em trong diễn đàn. Mình có một vấn đề là có thể làm một add-in zoom ảnh được không. Khi chuột click vào ảnh, ảnh đó sẽ phóng to kích thước so với tỉ lệ ban đầu.
Ảnh được chèn bằng cách nào? Bắt buộc phải chèn bằng cách đó hay chấp nhận chèn theo cách khác?

Ảnh thường là khi chèn vào sheet sẽ được thu nhỏ. Vậy thì chỉ cần: click 1 lần sẽ có ảnh kích thước thực -> click lần nữa sẽ có ảnh thu nhỏ. Như thế được không hay độ phóng to tùy ý? Vì nếu ảnh phóng to hơn thực thì dĩ nhiên chất lượng sẽ giảm.
 
Upvote 0
Ảnh được chèn bằng cách nào? Bắt buộc phải chèn bằng cách đó hay chấp nhận chèn theo cách khác?

Ảnh thường là khi chèn vào sheet sẽ được thu nhỏ. Vậy thì chỉ cần: click 1 lần sẽ có ảnh kích thước thực -> click lần nữa sẽ có ảnh thu nhỏ. Như thế được không hay độ phóng to tùy ý? Vì nếu ảnh phóng to hơn thực thì dĩ nhiên chất lượng sẽ giảm.
Dạ e biết là khi phóng to nó sẽ giảm chất lượng hình ảnh. Nhưng có thể làm được không v thầy, do tính chất công việc nhiều khi em báo cáo phải kéo ảnh ra hơi bất tiện 1 chút.
 
Upvote 0
Dạ e biết là khi phóng to nó sẽ giảm chất lượng hình ảnh. Nhưng có thể làm được không v thầy, do tính chất công việc nhiều khi em báo cáo phải kéo ảnh ra hơi bất tiện 1 chút.
Thế hiện ảnh kích thước thực, tức như khi chưa thu nhỏ, không đủ to à?
 
Upvote 0
Chào thầy @batman1
Chắc vấn đề của bạn @thang_nguyen1 cũng giống của em nên em mạng phép xin chen ngang giải thích thử.
Ví dụ như em có 1 f work Sheet tổng kết các kết quả hoạt động. Trong đó có một cột (ô) em chèn ảnh để minh họa cho kết quả. Vì ở trong báo cáo tổng kết thì ưu tiên cho phần giải thích và phần số liệu nên ảnh chèn vào em thường kéo cho nó nhỏ lại. vừa vặn trong 1 ô. Trong lúc trình bày báo cáo thì chỗ nào cần mới phóng to hình lên (hiện tại là kéo hình cho nó to ra cở có thể nhìn được là được chứ chưa quan trọng lắm đến độ phân giải hoặc chất lượng ảnh) --> Như thế thì mất thời gian và đôi khi nó chạy từa lưa do mình kéo quá tay hoặc muốn kéo to thì lại thành di chuyển ....
Em (và có thể là bạn @thang_nguyen1 ) muốn chỗ hình nào muốn phóng to (ví dụ bằng kích thước gốc hoặc bằng kích thước nào đó mình quy định sẳn) thì mình chỉ cần click vào hình là được. muốn co hình lại vào ô báo cáo thì lại click vào hình lần nữa.
 
Upvote 0
Chào thầy @batman1
Chắc vấn đề của bạn @thang_nguyen1 cũng giống của em nên em mạng phép xin chen ngang giải thích thử.
Ví dụ như em có 1 f work Sheet tổng kết các kết quả hoạt động. Trong đó có một cột (ô) em chèn ảnh để minh họa cho kết quả. Vì ở trong báo cáo tổng kết thì ưu tiên cho phần giải thích và phần số liệu nên ảnh chèn vào em thường kéo cho nó nhỏ lại. vừa vặn trong 1 ô. Trong lúc trình bày báo cáo thì chỗ nào cần mới phóng to hình lên (hiện tại là kéo hình cho nó to ra cở có thể nhìn được là được chứ chưa quan trọng lắm đến độ phân giải hoặc chất lượng ảnh) --> Như thế thì mất thời gian và đôi khi nó chạy từa lưa do mình kéo quá tay hoặc muốn kéo to thì lại thành di chuyển ....
Em (và có thể là bạn @thang_nguyen1 ) muốn chỗ hình nào muốn phóng to (ví dụ bằng kích thước gốc hoặc bằng kích thước nào đó mình quy định sẳn) thì mình chỉ cần click vào hình là được. muốn co hình lại vào ô báo cáo thì lại click vào hình lần nữa.
Xem thử file này có đúng yêu cầu chưa. (Hình như tác giả của file này là của anh @batman1 thì phải)
 

File đính kèm

  • Zoom Picture.xlsm
    21 KB · Đọc: 37
Upvote 0
Chào thầy @batman1
Chắc vấn đề của bạn @thang_nguyen1 cũng giống của em nên em mạng phép xin chen ngang giải thích thử.
Ví dụ như em có 1 f work Sheet tổng kết các kết quả hoạt động. Trong đó có một cột (ô) em chèn ảnh để minh họa cho kết quả. Vì ở trong báo cáo tổng kết thì ưu tiên cho phần giải thích và phần số liệu nên ảnh chèn vào em thường kéo cho nó nhỏ lại. vừa vặn trong 1 ô. Trong lúc trình bày báo cáo thì chỗ nào cần mới phóng to hình lên (hiện tại là kéo hình cho nó to ra cở có thể nhìn được là được chứ chưa quan trọng lắm đến độ phân giải hoặc chất lượng ảnh) --> Như thế thì mất thời gian và đôi khi nó chạy từa lưa do mình kéo quá tay hoặc muốn kéo to thì lại thành di chuyển ....
Em (và có thể là bạn @thang_nguyen1 ) muốn chỗ hình nào muốn phóng to (ví dụ bằng kích thước gốc hoặc bằng kích thước nào đó mình quy định sẳn) thì mình chỉ cần click vào hình là được. muốn co hình lại vào ô báo cáo thì lại click vào hình lần nữa.
Thử file này xem sao, nếu là file ảnh đã xoay 90 hoặc 270 độ, nằm gần dòng đầu hoặc cột đầu thì có thể bị lỗi (chưa test)
Nếu muốn ảnh lớn hơn thì chỉnh trong code thông số xScale đầu module
Nói thêm, nếu trong quá trình sử dụng mà thêm ảnh mới, muốn phóng to thu nhỏ thì một là đóng file mở lại, hai là assign macro "main" vào
 

File đính kèm

  • ZoomPic.xlsm
    25.1 KB · Đọc: 21
Upvote 0
Thử file này xem sao, nếu là file ảnh đã xoay 90 hoặc 270 độ, nằm gần dòng đầu hoặc cột đầu thì có thể bị lỗi (chưa test)
Nếu muốn ảnh lớn hơn thì chỉnh trong code thông số xScale đầu module
Nói thêm, nếu trong quá trình sử dụng mà thêm ảnh mới, muốn phóng to thu nhỏ thì một là đóng file mở lại, hai là assign macro "main" vào
Ảnh được phóng to nhưng chất lượng giảm nhiều quá. Để so sánh tôi nhập ảnh mới và cả ảnh gốc không thu nhỏ - ở kích thước thực. Tôi thay xScale = 3.4.
Khi click ảnh nhỏ thì tuy ảnh chưa được phóng to như ảnh kích thước thực đã thấy chất lượng giảm nhiều.

Xem thử file này có đúng yêu cầu chưa. (Hình như tác giả của file này là của anh @batman1 thì phải)
Sub InsertPicture và Sub to_nho chắc chắn là của tôi.

Tôi chưa giúp vì đang hỏi xem họ có chấp nhận cách chèn ảnh khác với cách họ đang làm không. Nhưng vẫn chưa nhận được câu trả lời cho câu hỏi này. Nói chung những gì muốn hỏi thì tôi đã viết ở bài đầu. Khi có các câu trả lời cho các câu hỏi ở bài đầu thì tôi mới hướng dẫn. Nhưng bạn đã tung code lên rồi thì không còn gì để nói nữa.
 

File đính kèm

  • ZoomPic.xlsm
    197.6 KB · Đọc: 22
Lần chỉnh sửa cuối:
Upvote 0
Ảnh được phóng to nhưng chất lượng giảm nhiều quá. Để so sánh tôi nhập ảnh mới và cả ảnh gốc không thu nhỏ - ở kích thước thực. Tôi thay xScale = 3.4.
Khi click ảnh nhỏ thì tuy ảnh chưa được phóng to như ảnh kích thước thực đã thấy chất lượng giảm nhiều.
Điều này em đã biết khi em viết xong code. Vấn đề giảm chất lượng này là do Excel chứ không phải do code em viết làm giảm chất lượng ảnh. Bác tạo một file mới, chỉ cần chèn một file ảnh vào, thu nhỏ kích thước. Nếu chưa lưu thì không có vấn đề, nhưng sau khi lưu file, nếu kéo to ảnh lên là sẽ thấy ảnh đã bị giảm chất lượng. Em cũng có thử tìm kiếm trong cài đặt của Excel và thông số bên dưới em không tick gì cả.
1660124344607.png
Nên vấn đề Excel tự nén hình như vậy thì em chưa biết cách nào xử lý được!
 
Upvote 0
Chào thầy @batman1
Chắc vấn đề của bạn @thang_nguyen1 cũng giống của em nên em mạng phép xin chen ngang giải thích thử.
Đọc 2 bài của tôi trong chủ đề này.

Để làm việc của bạn thì tôi có 2 code. 2 code này đã được một bạn tung lên ở bài #6.

Nên vấn đề Excel tự nén hình như vậy thì em chưa biết cách nào xử lý được!
Chính vì thế mà phải làm cách khác. Mà muốn làm cách khác thì phải thống nhất với người hỏi. Đã biết người ta có đồng ý dùng cách khác đâu nên tôi vẫn đang chờ câu trả lời mà không tung code lên.

Tuy nhiên bài #6 đã có code của tôi rồi. Mọi người chạy đua, giật đồ chơi của nhau quá. :D
 
Upvote 0
Dạ em xin cảm ơn các Thầy (Cô) và ACE đâng giúp em.
Em xin được xem xét trả lời các câu hỏi từ từ vì em bận làm việc nên ít online lắm ạ
Có gì chậm trể mong mọi người thông cảm.
 
Upvote 0
Ảnh được phóng to nhưng chất lượng giảm nhiều quá. Để so sánh tôi nhập ảnh mới và cả ảnh gốc không thu nhỏ - ở kích thước thực. Tôi thay xScale = 3.4.
Khi click ảnh nhỏ thì tuy ảnh chưa được phóng to như ảnh kích thước thực đã thấy chất lượng giảm nhiều.


Sub InsertPicture và Sub to_nho chắc chắn là của tôi.

Tôi chưa giúp vì đang hỏi xem họ có chấp nhận cách chèn ảnh khác với cách họ đang làm không. Nhưng vẫn chưa nhận được câu trả lời cho câu hỏi này. Nói chung những gì muốn hỏi thì tôi đã viết ở bài đầu. Khi có các câu trả lời cho các câu hỏi ở bài đầu thì tôi mới hướng dẫn. Nhưng bạn đã tung code lên rồi thì không còn gì để nói nữa.
@batman1
Em mới tải và chạy thử file của thầy.
Đúng là mới click vào ảnh nhỏ sẽ được phóng to một ít nhưng chất lượng ảnh đã giảm đi quá nhiều nên vẫn cưa đáp ứng được mong muốn.

Nhân đây em xin trả lời lại phần câu hỏi của Thầy ở đầu bài :
Câu hỏi : Ảnh được chèn bằng cách nào? Bắt buộc phải chèn bằng cách đó hay chấp nhận chèn theo cách khác?
==> Trả lời : Ảnh chèn bằng cách thông qua macro của mình cũng được mà chèn bằng cách Insert / Picture của Excel cũng được
(Chủ yếu là báo cáo sau cùng có được chức năng phóng to / thu nhỏ hình khi click chuột là được)

Câu hỏi : Ảnh thường là khi chèn vào sheet sẽ được thu nhỏ. Vậy thì chỉ cần: click 1 lần sẽ có ảnh kích thước thực -> click lần nữa sẽ có ảnh thu nhỏ. Như thế được không hay độ phóng to tùy ý? Vì nếu ảnh phóng to hơn thực thì dĩ nhiên chất lượng sẽ giảm.
==> Trả lời : Ảnh khi chèn vào sẽ tự động thu nhỏ bằng với kích thước của ô (Cell) sẽ chứa nó. Mong muốn click một lần ảnh được phóng to theo một kích thước nhất định (chấp nhận kích thước nhỏ hơn ảnh gốc để giữ chất lượng ổn ổn một chút).
Bài đã được tự động gộp:

Xem thử file này có đúng yêu cầu chưa. (Hình như tác giả của file này là của anh @batman1 thì phải)
Em đã tải và dùng thử file này. Kết quả gần đến với mong muốn rồi.
1. Ảnh chèn vào sẽ tự động co giản theo kích thước của ô (cell) chứa nó. --> OK
2. Clich vào ảnh sẽ cho phóng to thu nhỏ tương ứng. ==> OK
3. Chất lượng ảnh phóng to chấp nhận được ==> OK
4. Kích thước ảnh phóng to không đồng nhất (cái nhỏ cái to đối với trường hợp ảnh gốc khác kích thước nhau) ==> mong muốn cài đặt được kích thước ảnh sau phóng to giống nhau. (chấp nhận ảnh gốc nào nhỏ quá thì có thể ảnh phóng to bị vở)
 
Lần chỉnh sửa cuối:
Upvote 0
4. Kích thước ảnh phóng to không đồng nhất (cái nhỏ cái to đối với trường hợp ảnh gốc khác kích thước nhau) ==> mong muốn cài đặt được kích thước ảnh sau phóng to giống nhau. (chấp nhận ảnh gốc nào nhỏ quá thì có thể ảnh phóng to bị vở)
Không đồng nhất thì đúng rồi. Vì code tôi viết là phóng to tới kích thước thực. Khi 2 ảnh có kích thước khác nhau được chèn vào sheet mà phóng to thì dĩ nhiên chúng được phóng to không đồng nhất vì chúng được phóng to tới kích thước thực của mình mà.

Nếu mọi ảnh dù thực tế to nhỏ khác nhau nhưng luôn được phóng to tới kích thước như nhau thì đọc tiếp.

Bạn thử code ở bên dưới.

Ở đầu module có khai báo 2 hàng số - thiết lập kích thước Width và Height cho ảnh phóng to. Hãy sửa theo nhu cầu của mình.
Mã:
Public Const picWidth = 288
Public Const picHeight = 180
Điều này không có nghĩa là ảnh phóng to sẽ luôn có Width = 288 và Height = 180. Ảnh phóng to luôn được phóng to theo cùng tỷ lệ chiều ngang / chiều cao. Vd. ảnh gốc là hình vuông mà phóng to đúng 288 x 180 thì 2 chiều sẽ không được co dãn như nhau nên ảnh sẽ bị méo. Co dãn cùng tỷ lệ nghĩa là sau khi phóng to thì ảnh sẽ vẫn là hình vuông 180 x 180. Tức ảnh sẽ được phóng to theo cùng tỷ lệ sao cho lớn nhất có thể mà vẫn nằm trọn trong hình chữ nhật 288 x 180.

Code dùng để chèn ảnh là Sub InsertPicture, và Sub to_nho để phóng to thu nhỏ
 

File đính kèm

  • xem anh chen tren sheet voi kich thuoc to va chuyen ve nhu cu.xlsm
    84.5 KB · Đọc: 35
Upvote 0
Không đồng nhất thì đúng rồi. Vì code tôi viết là phóng to tới kích thước thực. Khi 2 ảnh có kích thước khác nhau được chèn vào sheet mà phóng to thì dĩ nhiên chúng được phóng to không đồng nhất vì chúng được phóng to tới kích thước thực của mình mà.

Nếu mọi ảnh dù thực tế to nhỏ khác nhau nhưng luôn được phóng to tới kích thước như nhau thì đọc tiếp.

Bạn thử code ở bên dưới.

Ở đầu module có khai báo 2 hàng số - thiết lập kích thước Width và Height cho ảnh phóng to. Hãy sửa theo nhu cầu của mình.
Mã:
Public Const picWidth = 288
Public Const picHeight = 180
Điều này không có nghĩa là ảnh phóng to sẽ luôn có Width = 288 và Height = 180. Ảnh phóng to luôn được phóng to theo cùng tỷ lệ chiều ngang / chiều cao. Vd. ảnh gốc là hình vuông mà phóng to đúng 288 x 180 thì 2 chiều sẽ không được co dãn như nhau nên ảnh sẽ bị méo. Co dãn cùng tỷ lệ nghĩa là sau khi phóng to thì ảnh sẽ vẫn là hình vuông 180 x 180. Tức ảnh sẽ được phóng to theo cùng tỷ lệ sao cho lớn nhất có thể mà vẫn nằm trọn trong hình chữ nhật 288 x 180.

Code dùng để chèn ảnh là Sub InsertPicture, và Sub to_nho để phóng to thu nhỏ
Dạ em cảm ơn Thầy nhiều ạ
Để em vừa học vừa làm tùy biến theo yêu cầu của mình.
Nếu có gì chưa thông em xin làm phiền Thầy tiếp ạ....
 
Upvote 0
Các đoạn code chú Batman1 luôn tuyệt vời, luôn giúp giải thích vấn đề cặn kẽ nhất. Chúc chú nhiều sức khỏe.
 
Upvote 0
Web KT
Back
Top Bottom