ARCH_ANGEL
Thành viên chính thức


- Tham gia
- 16/2/13
- Bài viết
- 55
- Được thích
- 2
Kính chào các anh chị.
Sau khi tham khảo một số bài viết, em vẫn chưa tìm ra được bài nào phù hợp với nhu cầu của mình. Rất mong các anh chị giúp em với cái đề bài của em.
Em có 2 cột: 1 cột tên mã hàng, cột còn lại là mô tả (ảnh sản phẩm). Em muốn sau khi gõ xong hết mã hàng, chạy lệnh sẽ tự động chèn hình ảnh sản phẩm sang cột bên cạnh tương ứng với mã hàng đó, hình ảnh được lưu trong máy tính với tên từng ảnh tương tự mã sản phẩm. Mã nào không có sản phẩm sẽ để trống ô
Em thấy có 1 số code chèn ảnh tuy vừa với ô có sẵn nhưng lại bị mất dòng kẻ của ô, một số copy gửi sang cho người khác thì lại không thấy ảnh.
Em xin cám ơn mọi người, dưới là file mẫu e đính kèm mong mọi người giúp đỡ.
---------------------------------------------------------------------------------------------------------------------------------------------------
Em xin cám ơn anh befaint và thầy ndu96081631 đã giúp em hoàn thiện được đề bài của em.
Dưới đây là 2 phương án cho đề bài này để mọi người tham khảo:
[INFO1]Thanks to befaint[/INFO1]
[INFO1]Thanks to ndu96081631[/INFO1]
Sau khi tham khảo một số bài viết, em vẫn chưa tìm ra được bài nào phù hợp với nhu cầu của mình. Rất mong các anh chị giúp em với cái đề bài của em.
Em có 2 cột: 1 cột tên mã hàng, cột còn lại là mô tả (ảnh sản phẩm). Em muốn sau khi gõ xong hết mã hàng, chạy lệnh sẽ tự động chèn hình ảnh sản phẩm sang cột bên cạnh tương ứng với mã hàng đó, hình ảnh được lưu trong máy tính với tên từng ảnh tương tự mã sản phẩm. Mã nào không có sản phẩm sẽ để trống ô
Em thấy có 1 số code chèn ảnh tuy vừa với ô có sẵn nhưng lại bị mất dòng kẻ của ô, một số copy gửi sang cho người khác thì lại không thấy ảnh.
Em xin cám ơn mọi người, dưới là file mẫu e đính kèm mong mọi người giúp đỡ.
---------------------------------------------------------------------------------------------------------------------------------------------------
Em xin cám ơn anh befaint và thầy ndu96081631 đã giúp em hoàn thiện được đề bài của em.
Dưới đây là 2 phương án cho đề bài này để mọi người tham khảo:
Mã:
[COLOR=#0000BB][FONT=monospace][I]Sub insertIMG[/I][/FONT][/COLOR][COLOR=#007700][FONT=monospace][I]()
[/I][/FONT][/COLOR][COLOR=#0000BB][FONT=monospace][I]Dim path [/I][/FONT][/COLOR][COLOR=#007700][FONT=monospace][I]As [/I][/FONT][/COLOR][COLOR=#0000BB][FONT=monospace][I]String
Dim img [/I][/FONT][/COLOR][COLOR=#007700][FONT=monospace][I]As [/I][/FONT][/COLOR][COLOR=#0000BB][FONT=monospace][I]Object
Dim cll [/I][/FONT][/COLOR][COLOR=#007700][FONT=monospace][I]As [/I][/FONT][/COLOR][COLOR=#0000BB][FONT=monospace][I]Range
path [/I][/FONT][/COLOR][COLOR=#007700][FONT=monospace][I]= [/I][/FONT][/COLOR][COLOR=#DD0000][FONT=monospace][I]"D:\Google drive\Caesar\San Pham\Picture\"
For Each cll In Range("[/I][/FONT][/COLOR][COLOR=#0000BB][FONT=monospace][I]B3[/I][/FONT][/COLOR][COLOR=#DD0000][FONT=monospace][I]", Range("[/I][/FONT][/COLOR][COLOR=#0000BB][FONT=monospace][I]B65000[/I][/FONT][/COLOR][COLOR=#DD0000][FONT=monospace][I]").End(xlUp))
If cll <> 0 Then
With cll.Offset(0, 1)
Set img = Nothing
On Error Resume Next
Set img = Sheet1.Pictures.Insert(path & cll.Value & "[/I][/FONT][/COLOR][COLOR=#007700][FONT=monospace][I].[/I][/FONT][/COLOR][COLOR=#0000BB][FONT=monospace][I]jpg[/I][/FONT][/COLOR][COLOR=#DD0000][FONT=monospace][I]")
img.LockAspectRatio = msoTrue
x = img.Width
y = img.Height
a = .Width - 3
b = .Height - 3
If a * y / x <= b Then
img.Width = a - 3
img.Top = .Top + 0.5 * (b - img.Height)
img.Left = .Left + 3
End If
If b * x / y <= a Then
img.Height = b - 3
img.Top = .Top + 3
img.Left = .Left + 0.5 * (a - img.Width)
End If
End With
End If
Next
End Sub [/I][/FONT][/COLOR]
Mã:
[COLOR=#000000]Private Sub InsertPic(ByVal PicPath As String, Optional ByVal PicCel As Range, _
[/COLOR] Optional ByVal ScaleWidth As Single = 1, _
Optional ByVal ScaleHeight As Single = 1)
Dim pic As Picture, fso As Object, bChk As Boolean
Set fso = CreateObject("Scripting.FileSystemObject")
If PicCel Is Nothing Then Set PicCel = ActiveCell
bChk = fso.FileExists(PicPath)
If bChk = False Then
PicPath = ActiveWorkbook.path & "\" & PicPath
bChk = fso.FileExists(PicPath)
End If
If bChk Then
On Error Resume Next
PicCel.Parent.Pictures(PicCel.Address(0, 0)).Delete
On Error GoTo 0
Set pic = PicCel.Parent.Pictures.Insert(PicPath)
With pic
.ShapeRange.LockAspectRatio = msoFalse
.Placement = xlMoveAndSize
.Left = PicCel.Left: .Top = PicCel.Top
.Width = PicCel.Width: .Height = PicCel.Height
.ShapeRange.ScaleWidth ScaleWidth, msoFalse, msoScaleFromMiddle
.ShapeRange.ScaleHeight ScaleHeight, msoFalse, msoScaleFromMiddle
.Name = PicCel.Address(0, 0)
End With
End If
Set fso = Nothing
[COLOR=#000000]End Sub
[/COLOR][COLOR=#000000]Sub Main()[/COLOR] Dim rng As Range, cel As Range
Dim sFolder As String, PicPath As String
Set rng = Sheet1.Range("B3", Sheet1.Range("B10000").End(xlUp))
[B][COLOR=#ff0000]With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
If .Show Then sFolder = .SelectedItems(1)
End With[/COLOR][/B]
If Len(sFolder) Then
If Right$(sFolder, 1) <> "\" Then sFolder = sFolder & "\"
For Each cel In rng
PicPath = sFolder & cel.Value & ".jpg"
InsertPic PicPath, cel.Offset(, 1), [B][COLOR=#0000cd]0.8[/COLOR][/B], [B][COLOR=#0000cd]0.8[/COLOR][/B]
Next
MsgBox "Done!"
End If [COLOR=#000000]End Sub[/COLOR]
File đính kèm
Lần chỉnh sửa cuối: