-
Mail Merge có hình
Minh Tiên > 23-11-15, 10:48 AM
Kính gửi: Các A/C/E Pro.
Tiên có một "đề bài" nhưng nghĩ mãi không sao làm đc. Nhờ các Pro chỉ giúp:
Đề bài:
1. Có 1 File Excel gồm các cột: Stt, Tên hình, Hình.
2. Có 1 File Word dùng để hiển thị gồm: Stt, Tên hình, Hình.
Yêu cầu:
Dùng Mail Merge để hiển thị Stt, Tên hình, Hình trong Excel lên Word.
Để hiển thị đc Stt và Tên hình thì OK, nhưng Tiên ko biết cách nào lưu trữ được Hình trong Excel để hiển thị lên Word.
Nhờ các A/C/E Pro giúp.
Cảm ơn nhiều ! -
RE: Mail Merge có hình
paulsteigel > 23-11-15, 03:37 PM
Thế này nhé
Presumably the picture locations are in a column of the Excel sheet that is the datasource.
Thế này nhé....Ví dụ, bạn có một cột là Tên, Ảnh (trong Excel) trong đó· Tên là tên đầy đủ· Ảnh là đường dẫn của file ảnhKhi merger sang, bạn cần phải sửa đổi trường Merge một tẹo:
Bước 1: Chèn Merge Field Tên, Ảnh vào Word
Bước 2: Nhấn Alt+F9 tại trường Ảnh và nó hiện ra cái này
{ MERGEFIELD Picture }
Giống như Excel, dấu {} chèn được khi nhấn tổ hợp Ctrl+F9
Bước 3: Di chuyển chuộn vào sau dấu { của { MERGEFIELD Picture } và nhấn Ctrl+F9, gõ vào dòng lệnh như sau:
{ INCLUDEPICTURE { MERGEFIELD Ảnh } }
Sau đó nhấn lại Alt+F9 và bạn sẽ thấy kết quả nhé Tiên nhé.
Tuy nhiên nếu bạn đã có ảnh ở trong Excel roài thì vấn đề lại khác, lúc ý – mailmerge sẽ nỏ được nữa mà phải dùng tính năng xuất ảnh sang Word thôi Tiên nhé. Bên GPE có đầy đủ bài viết liên quan đến vụ này đới.
À, có một cái này... Việc lưu ảnh trong Excel không giống như chèn ảnh từ CSDL access – cụ thể là excel không biết ảnh nào thuộc ô nào mà nó coi Ảnh là Đối tượng ngang hàng nhau trong 1 Sheet. Do đó, nếu bạn cho ảnh vào trong Ô Excel thì mail merge cũng chịu nhá.! -
RE: Mail Merge có hình
Minh Tiên > 23-11-15, 05:06 PM
Thanks "pausteigel" !
Tiên sưu tầm được đoạn code (File) này để Link hình trong Excel nhưng khi chạy trên Excel 2013 lỗi ở dòng:
"pausteigel" cùng A/C/E Pro xem sửa dòng code giúp nhé !Mã:ActiveSheet.Shapes("Pic").Delete
Toàn bộ đoạn code:
Mã:Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, PicName As String
Application.ScreenUpdating = False
On Error Resume Next
If Not Intersect([R2], Target) Is Nothing Then
Set Rng = Sheet3.Range(Sheet3.[B1], Sheet3.[T65536].End(xlUp))
PicName = Rng.Resize(, 1).Find(Target, LookAt:=xlWhole).Offset(, 20)
ActiveSheet.Shapes("Pic").Delete
With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & PicName)
.Name = "Pic"
.Left = [B12:O22].Left: .Top = [B12:O22].Top
.Width = [B12:O22].Width: .Height = [B12:O22].Height
End With
End If
End Sub
File đính kèm: http://www.mediafire.com/view/3g5up756k7...ghiem.xlsx
Thanks. -
RE: Mail Merge có hình
paulsteigel > 23-11-15, 07:00 PM
(23-11-15, 05:06 PM)Minh Tiên Đã viết: Thanks "pausteigel" !
Tiên sưu tầm được đoạn code (File) này để Link hình trong Excel nhưng khi chạy trên Excel 2013 lỗi ở dòng:
"pausteigel" cùng A/C/E Pro xem sửa dòng code giúp nhé !Mã:ActiveSheet.Shapes("Pic").Delete
Toàn bộ đoạn code:
Mã:Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, PicName As String
Application.ScreenUpdating = False
On Error Resume Next
If Not Intersect([R2], Target) Is Nothing Then
Set Rng = Sheet3.Range(Sheet3.[B1], Sheet3.[T65536].End(xlUp))
PicName = Rng.Resize(, 1).Find(Target, LookAt:=xlWhole).Offset(, 20)
ActiveSheet.Shapes("Pic").Delete
With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & PicName)
.Name = "Pic"
.Left = [B12:O22].Left: .Top = [B12:O22].Top
.Width = [B12:O22].Width: .Height = [B12:O22].Height
End With
End If
End Sub
File đính kèm: http://www.mediafire.com/view/3g5up756k7...ghiem.xlsx
Thanks.
Mình nói với Tiên trong bài trước rồi...
Excel không quản lý hình ảnh liên kết với các Cell nên việc biết hình nào thuộc bản ghi/ dòng nào là một điều khó khăn. Vì vậy, khi dùng mailmerge có hình sang word thì trường hình ảnh chỉ là đường dẫn tuyệt đối của hình ảnh. Nếu muốn xem trên excel thì chỉ cần link một đối tượng view với đường dẫn ảnh thôi.
Cái code của bạn làm việc đó đấy!
Đoạn ActiveSheet.Shapes("Pic").Delete là để xóa hình nếu nó đã tồn tại. Từ khóa On Error Resume Next. Vì mình không có Excel2013 nên mình không kiểm chứng được lỗi. Nếu cần bạn dùng teamview mình sẽ xem cho! -
RE: Mail Merge có hình
Minh Tiên > 24-11-15, 09:36 AM
Lệnh ActiveSheet trong Excel của PC mình ko chạy đc. Ko biết do PC mình thiếu thư viện hay Ex2013 ko có lệnh này.
Nhờ các A/C/E chỉ giúp.
Thanks ! -
RE: Mail Merge có hình
paulsteigel > 24-11-15, 11:39 PM
ActiveSheet thì không thể thiếu thư viện được vì nó là một đối tượng làm việc của Excel. Có thể do bạn cài chưa chuẩn (Ex chưa activate), Thứ bạn đang dùng là Addin hoặc bạn đang trỏ đến một sheet không chứa đối tượng. Vì có câu lệnh on error resume ... nên rất khó xác định lỗi. Bạn bỏ lệnh đó đi đã thì biết ngay lỗi ở đâu! -
RE: Mail Merge có hình
Minh Tiên > 25-11-15, 05:56 PM
Tiên đã bỏ lệnh "on error resume" nên mới biết lỗi tại dòng: ActiveSheet.Shapes("Pic").Delete
Trong môi trường VBA, khi gõ: ActiveSheet rồi gõ dấu chấm (.) ---> Nó "lặng im" nên Tiên biết là lệnh ActiveSheet không có tác dụng.
Nhờ các Pro chỉ giáo giúp !
Thanks./. -
RE: Mail Merge có hình
paulsteigel > 25-11-15, 09:44 PM
(25-11-15, 05:56 PM)Minh Tiên Đã viết: Tiên đã bỏ lệnh "on error resume" nên mới biết lỗi tại dòng: ActiveSheet.Shapes("Pic").Delete
Trong môi trường VBA, khi gõ: ActiveSheet rồi gõ dấu chấm (.) ---> Nó "lặng im" nên Tiên biết là lệnh ActiveSheet không có tác dụng.
Nhờ các Pro chỉ giáo giúp !
Thanks./.
Dim theSheet as worksheet
Set theSheet=ActiveSheet
Sau đó các lệnh sau thì thay ActiveSheet bằng theSheet thì sẽ dùng Intelisense được (hộp chọn các lệnh sau khi gõ dấu chấm).