Xin giúp đỡ về tự crop ảnh khi chèn ảnh vào Excel

Liên hệ QC

ok95sonok

Thành viên mới
Tham gia
20/5/22
Bài viết
24
Được thích
1
Em xin chào mọi người.
Em xin nhờ nhiều chút về VBA ạ. Cụ thể là tự động Crop ảnh khi chèn vào ô trong Sheet bằng code chèn ảnh tự động.
Em giới thiệu qua là em đã có file tự động chèn ảnh của bác @batman1 giúp trước đó. Trong file đó khi bấm vào chèn ảnh, sẽ tự động chèn ảnh theo tên ảnh từ thư mục “/Anh” cùng cấp vào lần lượt các ô đã điền số từ 1~24. (Tên ảnh là các số từ 1~24)
Bây giờ em muốn Crop đi 4 cạnh của ảnh khi chèn vào ô mà ảnh vẫn center trong ô đó.
Vd: ảnh là 1500x1000 cắt trên và dưới mỗi mỗi khoảng 300, cắt hai bên đi mỗi khoảng 200. —> Target được khoảng 900x600 giữa ảnh như vùng bôi đỏ ảnh em đính kèm. F3924A7C-1ACB-4513-9984-B7CBBA69DF96.jpeg
Em đã tìm được code này có vẻ là nó nhưng năng lực của em không làm được.
Link: Link code Crop ảnh
Cuối cùng em xin nhờ sự chỉ dạy của mọi người giúp em làm như em viết ở trên hoặc có thể làm giúp em và chỉ dạy em nguyên lý của của nó với ạ.
Em xin chân thành cảm ơn!
Link: File Excel đã có code chèn ảnh tự động
 
Dạ. Để em về nhà rồi đính kèm tệp sau. Chứ em chụp ảnh lung tung quá. Rất xin lỗi anh và vẫn mong nhận được sự giúp đỡ của anh.
Tôi định đề nghị cách phân biệt ô có khung là ô có merge còn ô không có merge thì không là khung. Nhưng xem lại bài #8 thì thấy 24 khung mà mỗi khung là 1 ô không có merge gì ở đây. Vậy không thể lấy merge làm tiêu chí phân biệt.

Tôi có thể lấy tập tin bài #8 nếu bạn đồng ý những yêu cầu của tôi.

- Khung có thể là 1 ô. Nếu khung là nhiều ô thì phải merge chúng. Tất cả các khung đều có số dòng và cột như nhau. Vd. tất cả đều có 1 dòng 1 cột (bài #8) hoặc 3 dòng 3 cột.

- A27 = tên ô có khung 1, vd. B5, B27 = số khung ở hàng ngang, C27 = số khung ở hàng dọc.

- Mỗi khung có thể chứa tên ảnh hoặc trống. Không nhất thiết mọi khung đều có tên ảnh.

- A25:C25 như đã thống nhất ở trước.

Nếu bạn khẳng định những điều ở trên thì tôi sẽ viết code cho bạn căn cứ vào dữ liêu bài #8.
 
Upvote 0
Tôi định đề nghị cách phân biệt ô có khung là ô có merge còn ô không có merge thì không là khung. Nhưng xem lại bài #8 thì thấy 24 khung mà mỗi khung là 1 ô không có merge gì ở đây. Vậy không thể lấy merge làm tiêu chí phân biệt.

Tôi có thể lấy tập tin bài #8 nếu bạn đồng ý những yêu cầu của tôi.

- Khung có thể là 1 ô. Nếu khung là nhiều ô thì phải merge chúng. Tất cả các khung đều có số dòng và cột như nhau. Vd. tất cả đều có 1 dòng 1 cột (bài #8) hoặc 3 dòng 3 cột.

- A27 = tên ô có khung 1, vd. B5, B27 = số khung ở hàng ngang, C27 = số khung ở hàng dọc.

- Mỗi khung có thể chứa tên ảnh hoặc trống. Không nhất thiết mọi khung đều có tên ảnh.

- A25:C25 như đã thống nhất ở trước.

Nếu bạn khẳng định những điều ở trên thì tôi sẽ viết code cho bạn căn cứ vào dữ liêu bài #8.
Dạ.
Đính kèm #8 là demo nên em không ngờ là nhiều ô merge thành khung thì lại không ghép đc ạ.
-Khung là nhiều ô và phải merge chúng. Tất cả các khung đều có số dòng và cột như nhau. Vd. tất cả đều có 3 dòng 3 cột.
- A27 = tên ô có khung 1, vd. B5, B27 = số khung ở hàng ngang, C27 = số khung ở hàng dọc.
- Khung nào có tên ảnh thì ảnh đó sẽ được chèn vào. Khung nào không có tên ảnh sẽ bỏ qua.
- “A25:C25 như đã thống nhất ở trước.” Ý anh có phải là cái phần Crop bao nhiêu đó ạ, nếu đúng thì giữ nguyên ạ.
 
Upvote 0
Dạ.
Đính kèm #8 là demo nên em không ngờ là nhiều ô merge thành khung thì lại không ghép đc ạ.
-Khung là nhiều ô và phải merge chúng. Tất cả các khung đều có số dòng và cột như nhau. Vd. tất cả đều có 3 dòng 3 cột.
- A27 = tên ô có khung 1, vd. B5, B27 = số khung ở hàng ngang, C27 = số khung ở hàng dọc.
- Khung nào có tên ảnh thì ảnh đó sẽ được chèn vào. Khung nào không có tên ảnh sẽ bỏ qua.
- “A25:C25 như đã thống nhất ở trước.” Ý anh có phải là cái phần Crop bao nhiêu đó ạ, nếu đúng thì giữ nguyên ạ.
Nhìn ảnh cuối cùng trong chủ đề này thì thấy các khung chiếm cả cột D của dòng 25, vậy không thể dùng A25: D25 được. Tôi chuyển hết lên A1: D4. Nếu bạn chuyển sang chỗ khác thì sửa trong code ở những chỗ có A1, B1, C1, D1, A4, B4, C4.

Nếu mỗi khung chỉ có 1 dòng 1 cột thì tất nhiên không phải Merge rồi. Code sẽ tự biết khung có merge hay không. Chỉ phải đảm bảo là nếu mỗi khung là nhiều > 1 ô thì phải merge bằng tay để code biết.
 

File đính kèm

  • Chenanhtudong.xlsm
    25.5 KB · Đọc: 24
Upvote 0
Nhìn ảnh cuối cùng trong chủ đề này thì thấy các khung chiếm cả cột D của dòng 25, vậy không thể dùng A25: D25 được. Tôi chuyển hết lên A1: D4. Nếu bạn chuyển sang chỗ khác thì sửa trong code ở những chỗ có A1, B1, C1, D1, A4, B4, C4.

Nếu mỗi khung chỉ có 1 dòng 1 cột thì tất nhiên không phải Merge rồi. Code sẽ tự biết khung có merge hay không. Chỉ phải đảm bảo là nếu mỗi khung là nhiều > 1 ô thì phải merge bằng tay để code biết.
Em test thử vào form thấy OK rồi anh ạ! Hình như anh đang để trong 1 khung được tạo bằng bao nhiêu cột với hàng tuỳ thích đúng không. Em thêm cột và merge ảnh vẫn chèn hết khung.
Cảm ơn anh! :clap2:
 
Upvote 0
Em test thử vào form thấy OK rồi anh ạ! Hình như anh đang để trong 1 khung được tạo bằng bao nhiêu cột với hàng tuỳ thích đúng không. Em thêm cột và merge ảnh vẫn chèn hết khung.
Cảm ơn anh! :clap2:
Số dòng và cột trong mỗi khung là tùy ý, miễn sao các khung đều giống nhau. Thậm chí 1 dòng 1 cột. Chỉ cần nhớ là khi khung có > 1 dòng hoăc / và > 1 cột thì phải merge. Số dòng và cột trong mỗi khung code tự phát hiện ở
Mã:
so_dong_khung = cell_start.MergeArea.Rows.Count         ' so dong trong moi khung
so_cot_khung = cell_start.MergeArea.Columns.Count       ' so cot trong moi khung
 
Upvote 0
Số dòng và cột trong mỗi khung là tùy ý, miễn sao các khung đều giống nhau. Thậm chí 1 dòng 1 cột. Chỉ cần nhớ là khi khung có > 1 dòng hoăc / và > 1 cột thì phải merge. Số dòng và cột trong mỗi khung code tự phát hiện ở
Mã:
so_dong_khung = cell_start.MergeArea.Rows.Count         ' so dong trong moi khung
so_cot_khung = cell_start.MergeArea.Columns.Count       ' so cot trong moi khung
Vâng a. Vd mình để 4 hàng ngang thì nó sẽ tìm đủ 4 hàng khung giống ô đầu tiên đúng không anh?
 
Upvote 0
Vâng a. Vd mình để 4 hàng ngang thì nó sẽ tìm đủ 4 hàng khung giống ô đầu tiên đúng không anh?
Code sẽ tìm thấy ở khung 1 a dòng và b cột. Do mọi khung như nhau nên ...

Bạn muốn hiểu thế nào cũng được. Có mỗi cái cỏn con ấy mà bạn hỏi đi hỏi lại.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom