Đưa ảnh hiện vào khung (TextBox) bằng VBA
Mình sưu tầm được code VBA của file đính kèm. Do trình độ non yếu nên không biết các sửa, nay nhờ các bác giúp hộ:
1. Đưa ảnh hiện vào 1 khung.
2. Thay đổi E8 thì ảnh hiện theo
3. Tăng tốc độ tải ảnh. (Em đang up ảnh vào SkyDrive, không biết tốc độ tải ảnh ở trang này có chậm không?)dl.dropboxusercontent.com/s/yyff0utexlrdyg1/TT_DangVien1.xls?token_hash=AAEM9zpuKcjnCv-JWRnSBfa2ieLffKGNZy7w0fUh9hM2nA&dl=1
Trả lời câu hỏi này trước: Vì phải tải ảnh từ Internet về máy tính nên tốc độ chậm là phải rồi (có tăng tốc kiểu nào thì vẫn chậm)
Vậy sao bạn không download toàn bộ ảnh về máy tính trước (có thể download bằng tay hoặc dùng code) rồi hẳn chèn hình vào bảng tính? Khi ấy hình được lấy từ ổ cứng sẽ nhanh hơn
(Code dạng này tôi đã viết từ lâu rồi nhưng cũng bởi vì vấn đề tốc độ nên tôi không đưa lên diễn đàn)
Trả lời tiếp 2 yêu cầu này:
1> Để có khung ảnh, ta vẽ 1 Rectangle, đặt tên cho nó là PicFrame (từ đây ảnh sẽ được chèn vào khung này
2> Để ảnh thay đổi theo E8, dùng sự kiện WorksheetChange:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strPic
On Error Resume Next
If Target.Address = "$E$8" Then
strPic = Target.Parent.Range("K4").Value
With Sheet1.Shapes("PicFrame").Fill
If strPic <> 0 Then
.UserPicture CStr(strPic)
Else
.Solid: .ForeColor.SchemeColor = 12
End If
End With
End If
End Sub
Tóm lại: Code chỉ nhiêu đó (hãy xóa toàn bộ những code đang có của bạn)
Em cũng đã gặp 1 vài file mẫu mà họ tải ảnh vào 1 thư mục. Tuy nhiên em vẫn chọn cách up ảnh lên Internet
– Người dùng chỉ copy 1 file excel là xong. (Gọn nhẹ)
– Em chủ động thay ảnh đã up trên Internet mà ko cần can thiệp vào file mình đã gửi đi.
Chân thành cảm ơn bác. Trước hết vì bác rất nhiệt tình giúp đỡ và chỉ dẫn mọi người, sau đó vì code của bác rất gọn, rất "trong sáng" nên dễ hiểu để học tập và giải quyết các yêu cầu khác. Em hoàn toàn hài lòng vì giải pháp của bác
Đương nhiên giải pháp Upload ảnh lên internet là hợp lý rồi (tôi có nói gì đâu)
Ý tôi là: Thay vì insert ảnh trực tiếp từ internet, ta thêm công đoạn download ảnh về máy tính rồi hẳn insert. Vậy thì tốc độ chắc chắn sẽ ngon lành
Quy trình tôi đề xuất là thế này:
– Tạo Sub AutoOpen làm nhiệm vụ (ngay từ khi khởi động file) download toàn bộ ảnh về đâu đó trên ổ cứng, đông thời đặt tên cho ảnh theo đúng mã số
– Sub AutoOpen cũng làm thêm 1 công đoạn nữa là kiểm tra xem tên file ảnh đã tồn tại trong ổ cứng hay chưa —> Nếu chưa có mới download. Điều này giúp giảm nhẹ công việc khi mở file lần thứ 2 sẽ không phải download tiếp
– Khi thực thi công đoạn chèn ảnh, sẽ lấy ảnh từ ổ cứng thay vì lấy ảnh từ internet
– Khi chuyển file sang máy tính khác thì công việc download ảnh sẽ được thực thi (và chỉ thực thi 1 lần duy nhất)
www.giaiphapexcel.com/diendan/threads/%C4%90%C6%B0a-%E1%BA%A3nh-hi%E1%BB%87n-v%C3%A0o-khung-textbox-b%E1%BA%B1ng-vba.84107/
Xây dựng Lương 3P, KPI cho Doanh nghiệp
Làm thế nào để trả lương cho nhân viên chính xác nhất? Đây là một trong những câu hỏi khó trong quản trị nhân...
Xem khóa học
Tốc độ ra sao cứ thử sẽ biết hen:
1> Code trong Module
2> Code sự kiện Change
————–
Thử nghiệm:
– Mở file và chờ trong giây lát. Đến khi hoàn tất, thực hiện code Change bằng cách thay đổi Validation tai E8 —> Cảm nhận tốc độ
– Đóng file lại và mở lần nữa để kiểm tra
Chắc chắn từ lần mở file thứ 2 trở đi sẽ không phải chờ đợi gì cả
Gì vậy?
Xem video clip này nhé:
DVr20QW_xRI
Đổi tên bình thường mà
Cái đó gọi là Validation bạn à!
Bạn tự tìm trong Excel (Tab DataData Validation) hoặc tìm trên GPE —> Có đầy
Đọc chú thích trong code
Center trong vùng C5:F8
Vừa khít vùng C5:F8