Chuyển mã cho bảng tính có nhiều loại font chữ?

Liên hệ QC

0904223800

Thành viên mới
Tham gia
2/12/07
Bài viết
13
Được thích
4
Chuyển mã bảng tính từ unicode ->tcvn hay ngược lại thì em biết rồi, nhưng hiện nay em có một số bảng tính lẫn lộn cả unicode và TCVN3, thậm chí có cả vni vậy có cách nào chuyển bảng tính này về cùng một loại bảng mã được không?
 
Bạn tìm trong diễn đàn có phần add-in convertfont 3.1 về sử dụng. Nếu tìm không thấy bạn pm lại để mình gửi lên cho bạn.
 
Có lẽ bác chưa hiểu ý của em. Trước đây các bảng tính cũ của cơ quan em được làm trên font TCVN, hiện nay đều dùng unicode nhưng không chuyển đổi sang unicode vì vậy trong cùng một sheet có một số vùng là unicode, một số vùng là TCVN 3
Bây giờ muốn chuyển đổi tất cả về unicode thì làm thế nào nhờ?
Khó phết
 
Theo tớ thấy thì chưa có công cụ nào chuyển được mớ hỗn tạp như thế cả ! Chọn từng vùng thôi
 
Trời ơi, cái đó dùng Unikey chuyển phát xong ngay mà. wá dễ lun!
 
Trời ơi, cái đó dùng Unikey chuyển phát xong ngay mà. wá dễ lun!

Bạn hướng dẫn giúp mình chuyển đổi font chữ bằng Unikey trong trường hợp này với! Mình cũng bị tình trạng tương tự. File excel có chỗ thì font Arial, chỗ thì font .VniArial, chỗ thì font VNI-Times, khổ quá. Không biết đường mà lần. Cứ click chuột vào ô này thì thấy font này, click chuột vào ô kia thì thấy font kia! -+*/

Sửa từng ô thì chắc ......... tới mai không biết xong chưa nữa, hic.
 
Theo mình biết, hiện nay có khá nhiều chương trình chuyển mã fontTV. Có chương trình tự động nhận font nguồn nhưng với điều kiện bảng tính hoặc vùng chọn chỉ có 1 loại font. Nếu bảng tính chứa nhiều loại font đến nỗi không thể chọn thủ công để chuyển đổi, ta viết code để lần lượt chọn ô, vùng chứa từng loại font rồi dùng 1 công cụ để chuyển đổi.
 
Bạn hướng dẫn giúp mình chuyển đổi font chữ bằng Unikey trong trường hợp này với! Mình cũng bị tình trạng tương tự. File excel có chỗ thì font Arial, chỗ thì font .VniArial, chỗ thì font VNI-Times, khổ quá. Không biết đường mà lần. Cứ click chuột vào ô này thì thấy font này, click chuột vào ô kia thì thấy font kia! -+*/

Sửa từng ô thì chắc ......... tới mai không biết xong chưa nữa, hic.
Sao không dùng VBA:
-Chọn tất cả các cell nếu nó dùng font Arial
-Chọn tất cả các cell nếu nó dùng font VNI-Times
-Chọn tất cả các cell nếu nó dùng font .VNAral
vân vân...
Tôi nghĩ khả thi lắm chứ!
Đương nhiên dử liệu đang dùng 3 loại font, sau 2 lần chọn và Convert ta đưa về 1 loại font duy nhất
 
Chuyển đổi font chữ bằng Unikey trong nhiều trường hợp

Cái này mình xin được cũng rất thú vị vì không những chuyển đổi font mà còn nhiều chức năng khác nữa.
 

File đính kèm

  • vnTools114.rar
    548 KB · Đọc: 403
Bạn hướng dẫn giúp mình chuyển đổi font chữ bằng Unikey trong trường hợp này với! Mình cũng bị tình trạng tương tự. File excel có chỗ thì font Arial, chỗ thì font .VniArial, chỗ thì font VNI-Times, khổ quá. Không biết đường mà lần. Cứ click chuột vào ô này thì thấy font này, click chuột vào ô kia thì thấy font kia! -+*/

Sửa từng ô thì chắc ......... tới mai không biết xong chưa nữa, hic.

Nếu nó đang là các Font như thế thì cũng dễ, chỉ cần duyệt qua các ô, sau đó dựa vào
PHP:
   Range.Font.Name
để biết loại Font, dùng với UDF tương ứng ta sẽ convert sang cái ta cần.

Tuy nhiên chỉ sợ rằng các ô không thể hiện đúng Font của nó thì lại sai hết.

VD đúng ra phải là Font Unicode, nhưng hiện tại nó đang là Font VNI, vì vậy cũng khó chuyển.

Thân!
 
Biết được tên font thì dể! Không biết có code nào xác định được mã font không nhỉ? Hoặc tối thiểu biết được chúng là cùng 1 loại mã
 
Biết được tên font thì dể! Không biết có code nào xác định được mã font không nhỉ? Hoặc tối thiểu biết được chúng là cùng 1 loại mã

Cái này thật khó, vì dùng hàm code chúng sẽ cho giá trị như nhau.

Bác xem nhé :


Thân!
 

File đính kèm

  • Font.xls
    31 KB · Đọc: 41
Chuyển mã bảng tính từ unicode ->tcvn hay ngược lại thì em biết rồi, nhưng hiện nay em có một số bảng tính lẫn lộn cả unicode và TCVN3, thậm chí có cả vni vậy có cách nào chuyển bảng tính này về cùng một loại bảng mã được không?
Chuyển mã bảng tính có nhiều font thì phải duyệt từng ô, xem nó thuộc bảng mã nào rồi dùng hàm chuyển mã tương ứng nên tốc độ chuyển chậm.
Sub CovUni này viết để chuyển các mã VNI Windows và TCVN3-ABC về Unicode (không chuyển ngược lại vì thời bây giờ là của Unicode). Nó nhận dạng bảng mã bằng cách kiểm tra các ký tự bên trái tên font:
4 ký tự trái VNI- là VNI Windows dùng hàm VniUni chuyển
3 ký tự trái .Vn là TCNV3 dùng hàm Vn3Uni chuyển
Các trường hợp khác kể là Unicode, không chuyển (có thể không đúng nếu bảng tính có sử dụng các bảng mã khác)
Mã:
'Khai báo các hằng chuỗi cho 3 bảng mã Uni, TCVN3 và Vni
Const CodUni = "225  224  7843 227  7841 259  7855 7857 7859 7861 7863 226  7845 7847 7849 7851 7853 233  232  7867 7869 7865 234  7871 7873 7875 7877 7879 237  236  7881 297  7883 243  242  7887 245  7885 244  7889 7891 7893 7895 7897 417  7899 7901 7903 7905 7907 250  249  7911 361  7909 432  7913 7915 7917 7919 7921 253  7923 7927 7929 7925 273  193  193  192  192  7842 7842 195  195  7840 7840 258  258  7854 7854 7856 7856 7858 7858 7860 7860 7862 7862 194  194  7844 7844 7846 7846 7848 7848 7850 7850 7852 7852 201  201  200  200  7866 7866 7868 7868 7864 7864 202  202  7870 7870 7872 7872 7874 7874 7876 7876 7878 7878 205  204  7880 296  7882 211  211  210  210  7886 7886 213  213  7884 7884 212  212  7888 7888 7890 7890 7892 7892 7894 7894 7896 7896 416  7898 7898 7900 7900 7902 7902 7904 7904 7906 7906 218  218  217  217  7910 7910 360  360  7908 7908 431  7912 7912 7914 7914 7916 7916 7918 7918 7920 7920 221  221  7922 7922 7926 7926 7928 7928 7924 272  "
Const StrVn3 = "¸µ¶·¹¨¾»¼½Æ©ÊÇÈÉËÐÌÎÏѪÕÒÓÔÖÝ×ØÜÞãßáâä«èåæçé¬íêëìîóïñòô­øõö÷ùýúûüþ®¸¸µµ¶¶··¹¹¡¡¾¾»»¼¼½½ÆÆ¢¢ÊÊÇÇÈÈÉÉËËÐÐÌÌÎÎÏÏÑÑ££ÕÕÒÒÓÓÔÔÖÖÝ×ØÜÞããßßááââä䤤èèååææççéé¥ííêêëëììîîóóïïññòòôô¦øøõõöö÷÷ùùýýúúûûüüþ§"
Const StrVni = "aùaøaûaõaïaêaéaèaúaüaëaâaáaàaåaãaäeùeøeûeõeïeâeáeàeåeãeäí ì æ ó ò oùoøoûoõoïoâoáoàoåoãoäô ôùôøôûôõôïuùuøuûuõuïö öùöøöûöõöïyùyøyûyõî ñ AÙAùAØAøAÛAûAÕAõAÏAïAÊAêAÉAéAÈAèAÚAúAÜAüAËAëAÂAâAÁAáAÀAàAÅAåAÃAãAÄAäEÙEùEØEøEÛEûEÕEõEÏEïEÂEâEÁEáEÀEàEÅEåEÃEãEÄEäÍ Ì Æ Ó Ò OÙOùOØOøOÛOûOÕOõOÏOïOÂOâOÁOáOÀOàOÅOåOÃOãOÄOäÔ ÔÙÔùÔØÔøÔÛÔûÔÕÔõÔÏÔïUÙUùUØUøUÛUûUÕUõUÏUïÖ ÖÙÖùÖØÖøÖÛÖûÖÕÖõÖÏÖïYÙYùYØYøYÛYûYÕYõÎ Ñ"

Mã:
Function Vn3Uni(chuoi As String) As String
For i = 1 To Len(chuoi)
  kytu = Mid(chuoi, i, 1)
  vitri = InStr(1, StrVn3, kytu, 0)
  If vitri > 0 Then
    chuoimoi = chuoimoi & ChrW(Mid(CodUni, vitri * 5 - 4, 5))
  Else
    chuoimoi = chuoimoi & kytu
  End If
Next
Vn3Uni = chuoimoi
End Function
Mã:
Function VniUni(chuoi As String) As String
chuoi = chuoi & " "
For i = 1 To Len(chuoi)
  If Mid(chuoi, i, 1) = " " Then
    chuoimoi = chuoimoi & " "
  Else
    kytu = Mid(chuoi, i, 2)
    vitri = InStr(1, StrVni, kytu, 0)
    If vitri = 0 Or Right(kytu, 1) = " " Or Len(kytu) = 1 Then
      kytu = Mid(chuoi, i, 1)
      vitri = InStr(1, StrVni, kytu, 0)
      If (Asc(kytu) >= 65 And Asc(kytu) <= 122) Then
        vitri = 0
      End If
    Else
      i = i + 1
    End If
    If vitri > 0 Then kytu = ChrW(Mid(CodUni, (vitri + 1) * 5 / 2 - 4, 5))
    chuoimoi = chuoimoi & kytu
  End If
Next
VniUni = Left(chuoimoi, Len(chuoimoi) - 1)
End Function
Mã:
Sub CovUni()
Dim myCell As Range, myFont As String
For Each myCell In Selection
  If myCell.Value <> "" Then
    myFont = myCell.font.Name
    If Left(myFont, 4) = "VNI-" Then
      myCell = VniUni(myCell.Value)
    ElseIf Left(myFont, 3) = ".Vn" Then
      myCell = Vn3Uni(myCell.Value)
    End If
  End If
Next
End Sub
Để chuyển mã, các bạn chỉ chọn các ô cần chuyển và chạy CovUni (không nên chọn hết bảng tính vì nó duyệt qua 256 cột và 65536 dòng thì ráng mà ngồi chờ). Cuối cùng nhớ chuyển các ô đang chọn sang Unicode.
 

File đính kèm

  • CovFont.zip
    62.2 KB · Đọc: 151
Web KT
Back
Top Bottom