Chạy chữ trên Excel bằng phương pháp lập trình html

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,905
Đã có nhiều bài viết về chạy chữ trên Excel, hầu hết đều dùng phương pháp cắt chuổi, ráp nối (vòng lập)
Xin giới thiệu các bạn 1 cách chạy chữ khác, 1 phong cách hoàn toàn mới dựa vào ngôn ngữ lập trình html
Ai đã từng dùng FrontPage để lập trình web thì không lạ gì cách thiết kế marquee, chỉ khoảng 10s là có thể cho ra sản phẩm
Chúng ta hãy cũng thử nhé
- Mở FrontPage
- Gõ gì đó vào khung soạn thảo, chẳng hạn tôi gõ chữ: Giải pháp Excel - Công cụ tuyệt vời của bạn
- Bôi đen chuổi, chỉnh font size và color cho chuổi vào menu Insert\Web Component... Khung trái chọn Dynamic Effect, khung phải chọn Marquee

untitled1.JPG
untitled3.JPG


- Nhìn bên dưới khung soạn thảo, chuyển sang tab Code, sẽ thấy code có dạng thế này:


untitled2.JPG


- Hãy để nguyên đó, khởi động Excel. Trên thanh Control ToolBox, bấm More Controls và chọn mục "Microsoft Web Brower" rồi vẽ lên bảng tính
- Bấm Alt + F11, chèn 1 Module
PHP:
Sub Test
  Dim htmCode As String
End Sub
- Copy code ở FrontPage rồi paste vào cửa sổ lập trình của Excel, đồng thời chỉnh lại đôi chút như sau:
PHP:
Sub Test()
  Dim htmCode As String, intUnit As Long
  htmCode = "<html>" & _
              "<head>" & _
                 "<script language=""javascript"">function noScroll(){document.body.scroll=""no"";}</script>" & _
              "</head>" & _
              "<body onload=javascript:noScroll(); topmargin=""0"" leftmargin=""0"">" & _
                 "<p>" & _
                   "<font color=""#FF0000"" style=""font-size: 45"">" & _
                     "<span style=""font-style: italic; font-weight: 700; background-color: #00FFFF"">" & _
                       "<marquee scrollamount=""15"" direction=""left"" height=""129"" width=""809"">" & _
                         "Giải pháp Excel - Công cụ tuyệt vời của bạn" & _
                       "</marquee>" & _
                     "</span>" & _
                   "</font>" & _
                 "</p>" & _
              "</body>" & _
            "</html>"
End Sub



- Thêm chiêu hiển thị nội dung web vào Web Browser Object
PHP:
[Sub Test()
  Dim htmCode As String, intUnit As Long
  htmCode = "<html>" & _
              "<head>" & _
                 "<script language=""javascript"">function noScroll(){document.body.scroll=""no"";}</script>" & _
              "</head>" & _
              "<body onload=javascript:noScroll(); topmargin=""0"" leftmargin=""0"">" & _
                 "<p>" & _
                   "<font color=""#FF0000"" style=""font-size: 45"">" & _
                     "<span style=""font-style: italic; font-weight: 700; background-color: #00FFFF"">" & _
                       "<marquee scrollamount=""15"" direction=""left"" height=""129"" width=""809"">" & _
                         "Giải pháp Excel - Công cụ tuyệt vời của bạn" & _
                       "</marquee>" & _
                     "</span>" & _
                   "</font>" & _
                 "</p>" & _
              "</body>" & _
            "</html>"
  intUnit = FreeFile
  Open ThisWorkbook.Path & "\TempFile.htm" For Output As intUnit
  Print #intUnit, htmCode
  Close intUnit
  With Sheet1.WebBrowser1
    .Navigate2 ThisWorkbook.Path & "\TempFile.htm"
    .Visible = True
  End With
End Sub

Vậy là xong! Alt + F8 gọi code và xem kết quả

---------------------------------------------
Làm sẳn cho các bạn 1 file chạy chữ trên bảng tính và trên UserForm, dựa trên cơ sở đã làm từ nảy giờ
--------------------------------------------
Ưu điểm tuyệt vời của phương pháp này là:
- Chữ chạy mà không ảnh hưởng gì đến công việc của chúng ta đang làm cả!
- Code có thể dài nhưng dễ thực hiện (chỉ khó ở công đoạn copy html code và sửa lại trong cửa sổ VBA... phải kiên nhẫn)
-------------------------------------------
Rõ ràng gõ

untitled.JPG
mà post lên nó lại thành
Giải pháp Excel - Công cụ tuyệt vời của bạn
 

File đính kèm

  • WebBrowser_Marquee.xls
    57.5 KB · Đọc: 354
Lần chỉnh sửa cuối:
Đồng hồ trên WebBrowser

Cũng dựa trên cơ sở lập trình html, ta làm 1 cái đồng hồ chạy trên Form và trên bảng tính! Tin chắc ngon lành hơn rất nhiều sơ với những cái đồng hồ mà ta đã từng làm


untitled.JPG



1> Code trong Module
PHP:
Sub WbClock(WbObj)
  Dim intUnit As Long, htmCode1 As String, htmCode2 As String, htmCode As String
  htmCode1 = "<html>" & _
               "<head>" & _
                 "<style type=""text/css"" media=""all"">" & _
                   ".frm {" & _
                     "font-family: Verdana;" & _
                     "font-size: 30px;" & _
                     "font-weight: bold;" & _
                     "color: #164BA0;" & _
                     "background-color: #CCFFCC;" & _
                   "}" & _
                 "</style>" & _
               "</head>"
  htmCode2 = "<body topmargin=""0"" leftmargin=""0"">" & _
               "<FORM NAME = ""clockForm"">" & _
                 "<span style=""font-size: 15pt; background-color: #00FFFF"">" & _
                   "<INPUT TYPE=""text"" NAME = ""clock"" SIZE = ""10"" class=""frm"" style=""color: #0000FF"">" & _
                 "</span>" & _
               "</FORM>" & _
               "<SCRIPT LANGUAGE=""JavaScript"">" & _
                 "function display() {" & _
                   "var Today = new Date();" & _
                   "var hours = Today.getHours();" & _
                   "var min = Today.getMinutes();" & _
                   "var sec = Today.getSeconds();" & _
                   "var Time = ((hours > 12) ? hours - 12 :(hours == 0) ? 12 :hours);" & _
                   "Time += ((min < 10) ? "":0"" : "":"") + min;" & _
                   "Time += ((sec < 10) ? "":0"" : "":"") + sec;" & _
                   "Time += (hours >= 12) ? "" PM"" : "" AM"";" & _
                   "this.clockForm.clock.value = Time;" & _
                   "setTimeout(""display()"",1000);" & _
                 "}" & _
                 "display();" & _
               "</SCRIPT>" & _
             "</body>" & _
           "</html>"
  htmCode = htmCode1 & htmCode2
  intUnit = FreeFile
  Open ThisWorkbook.Path & "\TempFile.htm" For Output As intUnit
  Print #intUnit, htmCode
  Close intUnit
  With WbObj
    .Navigate2 ThisWorkbook.Path & "\TempFile.htm"
    .Visible = True
  End With
End Sub

2> Code trong Workbook
PHP:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With ThisWorkbook
    .Save
    Kill .Path & "\TempFile.htm"
  End With
End Sub
PHP:
Private Sub Workbook_Open()
  Dim Obj
  Set Obj = ActiveSheet.WebBrowser1
  WbClock Obj
End Sub

3> Trong UserForm
PHP:
Private Sub UserForm_Initialize()
  Dim Obj
  Set Obj = Me.WebBrowser1
  WbClock Obj
End Sub
Font Size, Font Color Background Color các bạn có thể tùy chỉnh thoải mái
 

File đính kèm

  • WebBrowser_Clock.xls
    46 KB · Đọc: 187
Đúng là quá hay, đồng hồ chạy ngon lành không bị giật
 
Để loại bỏ cái sroll bar cho nó đẹp mình thêm dòng sau vào:

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
WebBrowser1.Document.Body.Scroll = "no"
End Sub
 
Để loại bỏ cái sroll bar cho nó đẹp mình thêm dòng sau vào:
Cũng không cần phải làm thế đâu Doom à!
Muốn gì thì cứ ghi vào html code là được!
Ví dụ:
1> Muốn bỏ ScrollBar thì thay:
PHP:
"<body topmargin=""0"" leftmargin=""0"">"
thành:
PHP:
"<body topmargin=""0"" leftmargin=""0"" scroll=no>"
2> Muốn canh giữa cho đồng hồ thì thay:
PHP:
"<INPUT TYPE=""text"" NAME = ""clock"" SIZE = ""10"" class=""frm"" style=""color: #0000FF"">"
thành:
PHP:
"<INPUT TYPE=""text"" NAME = ""clock"" SIZE = ""10"" class=""frm"" style=""color: #0000FF; text-align:center"">"
vân vân...
 

File đính kèm

  • WebBrowser_Clock.xls
    40.5 KB · Đọc: 104
Nếu chữ chạy được thanh tiêu đề của fỏm thì quá tuyệt vời anh Tuấn ơi
 
Hay quá Thầy ui, mà xin Thầy cho em hỏi WebRrowser này không thể dùng Unicode được phải không Thầy?
Bạn cũng thấy ở bài 1 tôi dùng tiếng Việt Unicode đấy thôi! Có điều ta không thể đưa chuổi Unicode trực tiếp vào được mà phải thông qua 1 hàm chuyển mã
Trong file tôi cũng có viết sẳn hàm này + hàm chuyển vbColor thành htmlColor. Bạn tải về xem sẽ biết ngay!
 
Nhờ bác anhtuan1066 chỉ bảo cho

Em đã copy nguyên đoạn code nhưng khi sang file excel khác chay thì nó lại bị lỗi phông chữ. Nhờ bác chi cho cách làm, hay khác phục (có file đính kèm)
 

File đính kèm

  • chu thi chay nhưng phong chu bị pha.xls
    26 KB · Đọc: 47
Em đã copy nguyên đoạn code nhưng khi sang file excel khác chay thì nó lại bị lỗi phông chữ. Nhờ bác chi cho cách làm, hay khác phục (có file đính kèm)
Tải file ở bài 1 về xem kỹ lại nhé! Code của bạn có đoạn không giống đấy
Tôi đã sửa lại
 

File đính kèm

  • Loi font_Da sua.xls
    26.5 KB · Đọc: 73
Lần chỉnh sửa cuối:
Rất cám ơn sản phẩm của anh anhtuan1066, thấy hay tôi mạo muội cắt, dán, chỉnh sửa áp dụng cho công việc chạy số thứ tự và phân bệnh cho từng phòng khám. Khi chưa có công thức máy chạy nhanh, sau khi thêm một số công thức tính toán files này chạy chậm quá. Xin quí anh, chị GPE chỉnh giúp công thức chạy nhanh hơn, nếu được thay bằng code thì càng tốt (xem files đính kèm). Cám ơn nhiều.
 

File đính kèm

  • CHIA BENH.xls
    52 KB · Đọc: 49
Rất cám ơn sản phẩm của anh anhtuan1066, thấy hay tôi mạo muội cắt, dán, chỉnh sửa áp dụng cho công việc chạy số thứ tự và phân bệnh cho từng phòng khám. Khi chưa có công thức máy chạy nhanh, sau khi thêm một số công thức tính toán files này chạy chậm quá. Xin quí anh, chị GPE chỉnh giúp công thức chạy nhanh hơn, nếu được thay bằng code thì càng tốt (xem files đính kèm). Cám ơn nhiều.
SUMPRODUCT với nhiều điều kiện luôn làm cho file bị chậm, đó là điều đương nhiên. Dù dùng code thì tôi nghĩ chẳng cải thiện được gì đâu
Có chăng bạn nên nghiên cứu phương pháp tổng hợp bằng PivotTable, đó là cách tốt nhất để cho file chạy nhanh hơn
 
Vậy để khi mở file ra thì chữa tự động chạy mà không phải bấm start cần thêm code nào nữa không
 
Web KT
Back
Top Bottom