Xin giúp đỡ cách tùy biến ShockwaveFlash nhúng vào excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

wjndwjng

Thành viên mới
Tham gia
26/2/11
Bài viết
7
Được thích
0
Em cần chèn file swf vào excel với phần tên của file swf nằm ở ô H5 khi thay đổi sẽ làm file swf chèn vào thay đổi theo nên tạo một macro như sau thì bị lỗi:

Sub MacroRefresh()
'
' MacroRefresh Macro
'


'
ActiveSheet.OLEObjects.Add(ClassType:="ShockwaveFlash.ShockwaveFlash.10", _
Link:=False, DisplayAsIcon:=False, Left:=304.2, Top:=9.6, Width:=40.2 _
, Height:=37.8).Select.Movie = Range("H5")
End Sub

em không rành về ngôn ngữ vba nên rất mong các cao thủ giúp đỡ em!
 
Em đang muốn có được hiệu ứng y như file này, chỉ cần thay đổi STT là ảnh tự động thay đổi theo nhưng bây giờ thay vì ảnh thì là các tập tin SWF. Mong mọi người giúp em!
 

File đính kèm

Upvote 0
Em đang muốn có được hiệu ứng y như file này, chỉ cần thay đổi STT là ảnh tự động thay đổi theo nhưng bây giờ thay vì ảnh thì là các tập tin SWF. Mong mọi người giúp em!

Bạn biết chèn 1 Flash Object vào bảng tính không?
Tôi giả định rằng bạn biết làm nhé. Vậy trên bảng tính hiện giờ có 1 Flash Object với tên là ShockwaveFlash1 chẳng hạn
Ta sửa lại code:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Rng As Range, SWF_File As String
  On Error Resume Next
  If Not Intersect([R2], Target) Is Nothing Then
    Set Rng = Sheet3.Range(Sheet3.[B1], Sheet3.[T65536].End(xlUp))
    SWF_File = Rng.Resize(, 1).Find(Target, LookAt:=xlWhole).Offset(, 20)
    Sheet1.ShockwaveFlash1.Movie = ThisWorkbook.Path & "\" & SWF_File
  End If
End Sub
Với thằng em SWF_File là tên của file Flash được ghi tại cột V của sheet Data
 
Upvote 0
Bạn ơi, nếu như ô STT không phải là dữ liệu nhập trực tiếp mà là một công thức thì đoạn code trên phải sửa lại như thế nào vậy?
 
Upvote 0
Bạn ơi, nếu như ô STT không phải là dữ liệu nhập trực tiếp mà là một công thức thì đoạn code trên phải sửa lại như thế nào vậy?

Công thức là công thức gì?
Cho dù ô STT là công thức đi nữa thì nó cũng phải thay đổi dựa vào việc thay đổi dữ liệu ở đâu đó (chẳng hạn A1 thay đổi, ô STT là công thức tham chiếu đến A1 cũng thay đổi theo).
Vậy thì trong sự kiện Worksheet_Change ta sẽ "bám" vào sự thay đổi tại ô ta gõ thôi
Nếu bạn không tự làm được, hãy cho file lên đây
 
Upvote 0
Đúng như bạn nói nó vẫn hoạt động nhưng file swf không tự động thay đổi khi mà ô STT là công thức mà mình phải F2 rồi enter lại ô STT thì file swf mới load cái mới
 
Lần chỉnh sửa cuối:
Upvote 0
Đúng như bạn nói nó vẫn hoạt động nhưng file swf không tự động thay đổi khi mà ô STT là công thức mà mình phải F2 rồi enter lại ô STT thì file swf mới load cái mới

Hình như bạn chưa hiểu ý tôi nói thì phải? Ý tôi là:
- Xem lại công thức ô STT là công thức gì? Nó tham chiếu đến đâu
- Tôi giả sử rằng ô STT tham chiếu đến cell A1, tức khi A1 thay đổi thì ô STT cũng thay đổi
- Vậy trong sự kiện Worksheet_Change có đoạn:
If Not Intersect([R2], Target) Is Nothing Then
Giờ sẽ thay thành:
If Not Intersect([A1], Target) Is Nothing Then
là được rồi
Suy luận logic cũng hiểu được vấn đề nằm ở đâu mà. Tuy nhiên nếu bạn vẫn chưa giải quyết được, cứ cho file lên đây
 
Upvote 0
Đây là file mình đang cần hoàn thiện, mình muốn khi mình bấm vào xem từ nào thì các file swf ở ô I4 và O4 cũng tự thay đổi theo, nhưng mà mình cứ phải F2 và enter vào ô H4 thì swf mới cập nhật. Và mình đang không biết viết mã như thế nào cho swf thứ 2 ở ô O4 để có 2 swf chạy 1 lúc. Mong bạn giúp đỡ nha!

https://www.dropbox.com/s/d9nxdszv2uxi688/HanNomMo.xls
 
Lần chỉnh sửa cuối:
Upvote 0
Đây là file mình đang cần hoàn thiện, mình muốn khi mình bấm vào xem từ nào thì các file swf ở ô I4 và O4 cũng tự thay đổi theo, nhưng mà mình cứ phải F2 và enter vào ô H4 thì swf mới cập nhật. Và mình đang không biết viết mã như thế nào cho swf thứ 2 ở ô O4 để có 2 swf chạy 1 lúc. Mong bạn giúp đỡ nha!

https://www.dropbox.com/s/d9nxdszv2uxi688/HanNomMo.xls

Xem file thì thấy rằng cell mà bạn thay đổi bằng tay chính là cell B5, còn lại những cell khác chỉ là những công thức tham chiếu đến B5
Vậy sự kiện Worksheet_Change phải lấy Target = B5 mới đúng chứ
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Rng As Range
  Dim SWF_File1 As String, SWF_File2 As String
  Dim sFind1 As String, sFind2 As String
  On Error Resume Next
  If Not Intersect([COLOR=#ff0000][B5][/COLOR], Target) Is Nothing Then
    sFind1 = Range("B8").Value
    sFind2 = Range("C8").Value
    Set Rng = Sheet15.Range(Sheet15.[C1], Sheet15.[C65536].End(xlUp))
    SWF_File1 = Rng.Find(sFind1, , xlValues, xlWhole).Offset(, 3).Value
    SWF_File2 = Rng.Offset(, 4).Find(sFind2, , xlValues, xlWhole).Offset(, 3).Value
    Sheet1.ShockwaveFlash1.Movie = ThisWorkbook.Path & "\" & SWF_File1
    Sheet1.ShockwaveFlash2.Movie = ThisWorkbook.Path & "\" & SWF_File2
  End If
End Sub
Kiểm tra lại xem
 
Upvote 0
Nhân tiện cho hỏi tôi muốn không hiện thong báo này khi chạy file excel có nhúng swf
 

File đính kèm

  • untitled.png
    untitled.png
    7 KB · Đọc: 36
Upvote 0
Nhân tiện cho hỏi tôi muốn không hiện thong báo này khi chạy file excel có nhúng swf
Hỏi ngược lại bạn 1 câu thế này. Nếu tôi cho 1 con virus dùng phương pháp nhúng kiểu này. và tôi để mất cảnh báo này vậy nên bạn cứ mở là ăn đống vi rút vào mặt. Vậy bạn có nên để cho nó tồn tại hay k?
Vì không phải ai cũng tử tế chỉ nhúng 1 cái hình đẹp đẹp, mà thay vào đó họ muốn nhúng 1 con virus cỡ bự chảng vào. vậy nên cảnh báo và cấp phép chạy là việc cần thiết.

Còn dù gì cũng phải tắt nó bằng được thì vào option của excel trong trustcenter cho phép mở mọi control mà k cần cảnh báo của con activeX settings. (chỉ máy bạn chứ k phải máy của người mở đều bị tắt)
 
Upvote 0
Web KT

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

Back
Top Bottom