Pictures.insert() bị lỗi trong Excel 2007

Liên hệ QC

Cuongloan

Thành viên mới
Tham gia
27/10/09
Bài viết
15
Được thích
0
Chào mọi người!
Mình có code như sau:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, PicName As String, path As String
Dim i As Integer
Application.ScreenUpdating = False
On Error Resume Next
If Not Intersect([U3], Target) Is Nothing Then
Set Rng = Sheet3.Range(Sheet3.[B1], Sheet3.[T65536].End(xlUp))
PicName = Rng.Resize(, 1).Find(Target, LookAt:=xlWhole).Offset(, 20)
path = ActiveSheet.Range("U3").Value
Sheet1.Shapes(PicName).Delete

With ActiveSheet.Pictures.Insert(ThisWorkbook.path & "\Picture\" & path & "\" & "Site view.jpg ")
.Name = PicName
.Left = ActiveSheet.[G19:L44].Left
.Top = ActiveSheet.[G19:L44].Top
.Width = ActiveSheet.[G19:L44].Width
.Height = ActiveSheet.[G19:L44].Height
End with
End if
End Sub

Đoạn code trên chạy trên excel 2003 thì ảnh nằm trong G19:L44. Nhưng khi chạy trên excel 2007 thì bức ảnh lại không nằm trong ô G19:L44, mà thường lớn hơn
Có ai biết vì sao không? khắc phục thế nào?!$@!!
 
Đoạn code trên chạy trên excel 2003 thì ảnh nằm trong G19:L44. Nhưng khi chạy trên excel 2007 thì bức ảnh lại không nằm trong ô G19:L44, mà thường lớn hơn
Có ai biết vì sao không? khắc phục thế nào?!$@!!
Cũng chẳng biết tại sao trên Excel 2007 nó lại thế
Khắc phục tình trạng này, tôi nghĩ bạn nên chèn hình vào Image thì hơn!
Cú pháp chèn hình:
ActiveSheet.Image1.Picture = LoadPicture(Đường dẩn chứa hình)
 
Upvote 0
Đoạn code trên chạy trên excel 2003 thì ảnh nằm trong G19:L44. Nhưng khi chạy trên excel 2007 thì bức ảnh lại không nằm trong ô G19:L44, mà thường lớn hơn
Có ai biết vì sao không? khắc phục thế nào?!$@!!
Tôi vừa tìm ra được nguyên nhân gây ra lỗi ngớ ngẩn này... Đó là khi ta muốn chỉnh Width và Height của Shape 1 cách độc lập thì đầu tiên phải Set Lock aspect ratio = False
Hic...
Vậy đoạn code này:
PHP:
With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\Picture\" & Path & "\" & "Site view.jpg ")
  .Name = PicName
  .Left = ActiveSheet.[G19:L44].Left
  .Top = ActiveSheet.[G19:L44].Top
  .Width = ActiveSheet.[G19:L44].Width
  .Height = ActiveSheet.[G19:L44].Height
End With
Phải sửa lại thành:
PHP:
ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\Picture\"  & Path & "\" & "Site view.jpg ").Name = PicName
With ActiveSheet.Shapes(PicName)
   .LockAspectRatio = False
  .Left = ActiveSheet.[G19:L44].Left
  .Top = ActiveSheet.[G19:L44].Top
  .Width = ActiveSheet.[G19:L44].Width
  .Height = ActiveSheet.[G19:L44].Height
End With
Bạn thử lại xem thế nào nhé
(nếu chưa được, hãy cho file lên đây)
 
Upvote 0
Tôi vừa tìm ra được nguyên nhân gây ra lỗi ngớ ngẩn này... Đó là khi ta muốn chỉnh Width và Height của Shape 1 cách độc lập thì đầu tiên phải Set Lock aspect ratio = False
Hic...
Vậy đoạn code này:
PHP:
With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\Picture\" & Path & "\" & "Site view.jpg ")
.Name = PicName
.Left = ActiveSheet.[G19:L44].Left
.Top = ActiveSheet.[G19:L44].Top
.Width = ActiveSheet.[G19:L44].Width
.Height = ActiveSheet.[G19:L44].Height
End With
Phải sửa lại thành:
PHP:
ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\Picture\" & Path & "\" & "Site view.jpg ").Name = PicName
With ActiveSheet.Shapes(PicName)
.LockAspectRatio = False
.Left = ActiveSheet.[G19:L44].Left
.Top = ActiveSheet.[G19:L44].Top
.Width = ActiveSheet.[G19:L44].Width
.Height = ActiveSheet.[G19:L44].Height
End With
Bạn thử lại xem thế nào nhé
(nếu chưa được, hãy cho file lên đây)

Buồn quá bạn ạ! Mình thử đoạn code của bạn nhưng vẫn không được. Ảnh vẫn không năm trong [G19:L44]. Sao excel2003 lại được nhỉ?
 
Upvote 0
Buồn quá bạn ạ! Mình thử đoạn code của bạn nhưng vẫn không được. Ảnh vẫn không năm trong [G19:L44]. Sao excel2003 lại được nhỉ?
Tôi thí nghiệm thành công mới đưa lên đấy bạn à!
Như tôi đã nói ở trên, nếu bạn không làm được thì đưa file lên đây (ai biết bạn đã làm sai chổ nào)
 
Upvote 0
Tôi thí nghiệm thành công mới đưa lên đấy bạn à!
Như tôi đã nói ở trên, nếu bạn không làm được thì đưa file lên đây (ai biết bạn đã làm sai chổ nào)

Mình mới tham gia diễn đàn. Không biết đưa file lên diễn đàn. Bạn download từ link này nhá
http://www.mediafire.com/file/tgzqifrthdz/INSERTPIC.rar

Note: Mình vẫn làm được trên excel2003 nhưng sang 2007 thì gặp nỗi
Cảm ơn bạn nhiều
 
Upvote 0
Có phải bạn nói lỗi này: Picture không nằm vừa trong cái khung bạn vẽ?


insertPic.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Mình mới tham gia diễn đàn. Không biết đưa file lên diễn đàn. Bạn download từ link này nhá
http://www.mediafire.com/file/tgzqifrthdz/INSERTPIC.rar

Note: Mình vẫn làm được trên excel2003 nhưng sang 2007 thì gặp nỗi
Cảm ơn bạn nhiều
Tôi chẳng thấy lỗi gì trong này cả... có chăng là file của bạn thiếu thông tin (tại sheet 3) nên code bị lỗi thôi
Xem file này nhé
 

File đính kèm

Upvote 0
Tôi chẳng thấy lỗi gì trong này cả... có chăng là file của bạn thiếu thông tin (tại sheet 3) nên code bị lỗi thôi
Xem file này nhé
Cảm ơn bác nhá. Em tìn ra lỗi rồi. Hóa ra là cái dòng
PicName = Rng.Resize(, 1).Find(Target, LookAt:=xlWhole).Offset(, 20)
với dòng này
ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\Picture\" & Path & "" & "Site view.jpg ").Name = PicName
With ActiveSheet.Shapes(PicName

CHưa hợp logic.
Nhưng sao excel2003 vẫn chạy ngon nhỉ?
 
Upvote 0
với dòng này
ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\Picture\" & Path & "" & "Site view.jpg ").Name = PicName
With ActiveSheet.Shapes(PicName

CHưa hợp logic.
Nhưng sao excel2003 vẫn chạy ngon nhỉ?
Thế bạn thấy chưa Logic ở chổ nào? Tôi không cảm thấy điều đó ---> Mong bạn chỉ giáo thêm!
Còn cái vụ hình không điều chỉnh size đính vị trị thì như tôi đã nói ở trên, với Excel 2007 bắt buộc phải có dòng này
LockAspectRatio = False
 
Upvote 0
Thế bạn thấy chưa Logic ở chổ nào? Tôi không cảm thấy điều đó ---> Mong bạn chỉ giáo thêm!
Còn cái vụ hình không điều chỉnh size đính vị trị thì như tôi đã nói ở trên, với Excel 2007 bắt buộc phải có dòng này
LockAspectRatio = False

Biến PicName = Rng.Resize(, 1).Find(Target, LookAt:=xlWhole).Offset(, 20)
sẽ khác giá trị "site view" mình nghĩ thế.
Mà mình đang nhờ bạn chỉ giáo mà!
Thanh nhiều nhá
 
Upvote 0
Web KT

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

Back
Top Bottom