Đăng ký học Excel và VBA cùng GPE tháng 11 - TPHCM

Mua sách "VBA trong Excel - Cải thiện và tăng tốc" tái bản

Có phần mềm nào mà chuyển đổi font cho toàn bộ các file excel trong Folder

Thảo luận trong 'Xây dựng ứng dụng.' bắt đầu bởi nguyenmanhnam, 16 Tháng sáu 2011.

  1. nguyenmanhnam

    nguyenmanhnam Thành viên tiêu biểu

    Em thấy trên diễn đàn GPE, có rất nhiều giải pháp, các hàm mà mọi người đã dày công xây dựng để chuyển đổi Font; gần đây ngành em để thống nhất quy định toàn bộ Font gửi trong nội bộ dùng Unicode. Các file em làm trước đây đa phần em sử dụng Vn.time (TCVN3), nay em muốn chuyển toàn bộ thư viện trước đây em làm sang Unicode để tận dụng (khoảng 200MB). Em thắc mắc là không biết có phần mềm nào chuyển toàn bộ cùng một lúc Font tư TCVN3 sang Unicode cho toàn bộ các file excel của 1 Folder không? (trong quá trình chuyển có thể không cần mở file ra), nhưng không mất đi công thức link vốn có của nó. (Vì em biết truớc đây có một số phần mềm sau khi chuyển liên kết công thức lại bị biến thành Text). Xin được giúp đỡ.
     
  2. haonlh

    haonlh Thành viên tích cực

    Không có nhưng bạn có thể tạo ra bằng macro
    1. Phải đảm bảo điều kiện là mọi file đều cùng dùng 1 font (nhất quán dữ liệu).
    2. Không có ô bị dồn.

    Cần chú ý không chuyển 2 lần trên 1 file.

    Mình cảm thấy có thể làm được, nhưng còn non gan, nên chưa dám. Ý tưởng là thể. Còn vật liệu có thể là
    - Có bài viết đọc danh sách các tên file có trong 1 thư mục nào đó của ổ đĩa vào cột A của Sheet (mới đọc gần đây). Dùng cái này để lấy các tên file vô.
    - lần lượt lấy các tên file trên ô A1, A2..., mởi nó ra, dùng FOR duyệt qua mọi Sheet, trên mỗi Sheets, chọn cả Sheet và dùng SENDKEYS để chuyển mã. Làm xong các sheet thì save làm lặp lại trên ô A2 tiếp

    Có thể một số định dạng bị mất., ví dụ chỉ số trên, dưới
    Xin lỗi vì không được hoàn thiện lắm.
     
    Lần chỉnh sửa cuối: 16 Tháng sáu 2011
  3. springclaim90

    springclaim90 Thành viên bị đình chỉ hoạt động

     

    Các file đính kèm:

  4. springclaim90

    springclaim90 Thành viên bị đình chỉ hoạt động

     

    Các file đính kèm:

  5. btvnm@yahoo.com

    btvnm@yahoo.com Thành viên mới

     
  6. btvnm@yahoo.com

    btvnm@yahoo.com Thành viên mới

    mình làm được rồi thanks ban springclaim90 nhiều nha. mấy bữa nay đau đầu vì cái font này rồi
     
  7. TrungChinhs

    TrungChinhs Thành viên tích cực

    Hôm nay mới đọc bài này. Nếu bạn chưa tìm được phần mềm nào ưng ý thì dùng thử File này xem (mới làm chưa test vì trong máy tôi không có file TCVN3).
    Cách sử dụng: Bạn tạo một thư mục mới để thử. Copy file này và những file bạn muốn chuyển Font TCVN3 -> Unicode thả vào. Mở file này và nhấn nút. Nếu có nhiều file dung lượng lớn thì pha cốc Cafe đợi... có gì trục trặc báo lại cho tôi biết.
    Chúc thành công !
     

    Các file đính kèm:

    Lần chỉnh sửa cuối: 30 Tháng chín 2011
  8. nguyenmanhnam

    nguyenmanhnam Thành viên tiêu biểu

    Em thử nhưng không được

    Sao em chạy nó cứ đứng im không chạy được ah.
    Em gửi fie lên bác thử giúp hộ em nhé.
     

    Các file đính kèm:

  9. ongtrungducmx25

    ongtrungducmx25 Thành viên gạo cội

    Hướng dẫn cài đặt và sử dụng tiện ích UCONVERT

    [​IMG]
    Phần mềm dùng để chuyển đổi bảng mã của font chữ dùng chuẩn hóa font sử dụng trong công ty trên Word, Excel,... Chuyển đổi báo cáo cho phần mềm Kế toán Effect.
    Cài đặt phầm mềm đối với máy tính cài bộ Office XP hoặc Office 2003
    Tải xuống và Copy bộ cài Uconvert 1.3 tại đây vào ổ đĩa D của máy tính.
    Hướng dẫn
    hoặc:
    http://www.mediafire.com/?hkyznkogzvz
     
  10. usagi90

    usagi90 Thành viên thường trực

    cài add in như springclaim90 ấy. chưa đầy 3 giây chuyển fiel của bn xong lun
     
  11. nguyenmanhnam

    nguyenmanhnam Thành viên tiêu biểu

    Phần mềm này nó chỉ chuyển được file Word thôi bác ah, em đã thử rồi file excel không chuyển được bác ah.
     
  12. nmhung49

    nmhung49 Thành viên tích cực

    Mình mới test thử thì thấy file của bạn có 2 font chữ .VnTime, .VnTimeH. Nếu bạn tạo file mới copy qua rồi chọn lại font .VnTime hết lưu lại thì không có vấn đề gì. Mà bạn dùng Add-in trến TVExcel01 của thấy PhamDuyLong đi chuyển với tốc độ khá nhanh đó. File này mình dùng add in chuyển
     

    Các file đính kèm:

  13. nguyenmanhnam

    nguyenmanhnam Thành viên tiêu biểu

    File của thày em đã dùng rồi, em vẫn để trong máy. Nhưng cái em cần là chuyển tất cả các file (nhiều file một lúc) trong 1 Folder chỉ bằng một động tác thôi.
     
  14. TrungChinhs

    TrungChinhs Thành viên tích cực

    Tôi dùng XP2003 khi Conver file của bạn sang file xls thì OK mà.
    File của tôi (file mở) thì đương nhiên nó đứng im nhưng tất cả các file khác (file "không mở") của bạn có trong cùng thư mục thì đã chuyển sang Unicode... theo đúng yêu cầu của bạn. Bạn thử kiểm tra lại xem có đúng như vậy không nha, chờ hồi âm của bạn ?

    Lưu ý: phải làm đúng như tôi hướng dẫn ở bài trên (File của tôi và file của bạn phải trong cùng thư mục con)
     
    Lần chỉnh sửa cuối: 1 Tháng mười 2011
  15. Dauthivan

    Dauthivan Thành viên tiêu biểu

    Cái của bác rất tiện. Tuy nhiên, em khi ứng dụng em thấy:

    1. Trường hợp nếu Font nguồn là Vn.TimeH thì khi chuyển chữ nó lại tự động chuyển sang chữ thường, nhưng mục đích của em là muốn nó chuyển sang CHỮ HOA, cái này em thấy tiện ích của chị Phan Ngọc Lan tại địa chỉ: http://www.giaiphapexcel.com/forum/...el-tổng-hợp-đây-bản-quyền-Free-và-mã-nguồn-mở! làm rât tốt,

    2. Font chữ sau khi chuyển đổi chuyển sang tahoma (em muốn chuyển sang Times New Roman).

    Nếu có thể sửa được xin bác giúp cho, vì em đang tập tọe chưa biết nhiều về những vấn đề này. Cảm ơn bác rất nhiều.
     
  16. Dauthivan

    Dauthivan Thành viên tiêu biểu

    Giúp em cách chuyển từ Vn.TimeH sang Times New Roman vẫn giữ được CHỮ HOA

    Từ Code của bác TrungChinh để sửa chuyển từ Vn.Time sang Times New Roman
    PHP:
    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 "¸µ¶·¹¨¾»¼½Æ©ÊÇÈÉËÐÌÎÏѪÕÒÓÔÖÝ×ØÜÞãßáâä«èåæçé¬íêëìîóïñòô­øõö÷ùýúûüþ®¸¸µµ¶¶··¹¹¡¡¾¾»»¼¼½½ÆÆ¢¢ÊÊÇÇÈÈÉÉËËÐÐÌÌÎÎÏÏÑÑ££ÕÕÒÒÓÓÔÔÖÖÝ×ØÜÞããßßááââä䤤èèååææççéé¥ííêêëëììîîóóïïññòòôô¦øøõõöö÷÷ùùýýúúûûüüþ§"
    Function Vn3Uni(chuoi As String) As String
        On Error Resume Next
        
    For 1 To Len(chuoi)
            
    kytu Mid(chuoii1)
            
    vitri InStr(1StrVn3kytu0)
            If 
    vitri 0 Then
                chuoimoi 
    chuoimoi ChrW(Mid(CodUnivitri 45))
            Else
                
    chuoimoi chuoimoi kytu
            End 
    If
        
    Next
        Vn3Uni 
    chuoimoi
    End 
    Function
    Sub Unicode()
        
    On Error Resume Next
        Application
    .ScreenUpdating False
        Dim myCell 
    As RangemyFont As String
        ActiveSheet
    .[a1].SpecialCells(22).Select
        
    For Each myCell In Selection
            
    If myCell.Value <> "" Then
                myFont 
    myCell.Font.Name
                
    If Left(myFont3) = ".Vn" Then
                    myCell 
    Vn3Uni(myCell.Value)
                
    End If
            
    End If
        
    Next
        Cells
    .Font.Name "tahoma"
    End Sub
    em đã mày mò và sửa đoạn Cells.Font.Name = "tahoma" thành Cells.Font.Name =Times New Roman và đã được.

    Nhưng em thắc mắc là để chuyển từ Font Vn.TimeH sang Times New Roman mà vẫn giữ được chữ HOA mà không phải chữ thường thì phải làm sao ah?
     
  17. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Nếu là font .Vn....H thì sẽ có dạng ".Vn*H", đúng không? (có chữ H ở cuối)
    Vậy thì giải thuật sẽ là: Nếu font name có dạng ".Vn*H" thì UCase(Cell)
    PHP:
    If myCell.Value <> "" Then
      myFont 
    myCell.Font.Name
      
    If Left(myFont3) = ".Vn" Then
        
    If myFont Like ".Vn*H" Then
          myCell 
    UCase(Vn3Uni(myCell.Value))
        Else
          
    myCell Vn3Uni(myCell.Value)
        
    End If
      
    End If
    End If
    Tôi chưa thử nhưng nghĩ như vậy đấy ---> Bạn test xem thế nào nhé
     
  18. Dauthivan

    Dauthivan Thành viên tiêu biểu

    File gần như hoàn thiện rồi, chỉ còn Font chữ nằm ở trong công thức là không chuyển

    Em chạy về cơ bản là chuẩn thày ah, cụ thể Code sau khi em sửa như sau:

    1. Module_Open_Close

    PHP:
    Sub Open_Close_File()
    Application.ScreenUpdating False
    Application
    .DisplayAlerts False
    On Error Resume Next
        MyPath 
    ThisWorkbook.Path
        Set MyFoldres 
    CreateObject("Scripting.FileSystemObject").GetFolder(MyPath).Files
        
    For Each MyFile In MyFoldres
            Workbooks
    .Open MyFile
            Call Unicode
            With ActiveWorkbook
                
    .Save
                
    .Close
            End With
        Next
    End Sub
    2. Module_Unicode: sau khi cập nhật phần sửa của thày:

    PHP:
    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 "¸µ¶·¹¨¾»¼½Æ©ÊÇÈÉËÐÌÎÏѪÕÒÓÔÖÝ×ØÜÞãßáâä«èåæçé¬íêëìîóïñòô­øõö÷ùýúûüþ®¸¸µµ¶¶··¹¹¡¡¾¾»»¼¼½½ÆÆ¢¢ÊÊÇÇÈÈÉÉËËÐÐÌÌÎÎÏÏÑÑ££ÕÕÒÒÓÓÔÔÖÖÝ×ØÜÞããßßááââä䤤èèååææççéé¥ííêêëëììîîóóïïññòòôô¦øøõõöö÷÷ùùýýúúûûüüþ§"
    Function Vn3Uni(chuoi As String) As String
        On Error Resume Next
        
    For 1 To Len(chuoi)
            
    kytu Mid(chuoii1)
            
    vitri InStr(1StrVn3kytu0)
            If 
    vitri 0 Then
                chuoimoi 
    chuoimoi ChrW(Mid(CodUnivitri 45))
            Else
                
    chuoimoi chuoimoi kytu
            End 
    If
        
    Next
        Vn3Uni 
    chuoimoi
    End 
    Function
    Sub Unicode()
        
    On Error Resume Next
        Application
    .ScreenUpdating False
        Dim myCell 
    As RangemyFont As String
        ActiveSheet
    .[a1].SpecialCells(22).Select
        
    For Each myCell In Selection
            
    If myCell.Value <> "" Then
      myFont 
    myCell.Font.Name
      
    If Left(myFont3) = ".Vn" Then
        
    If myFont Like ".Vn*H" Then
          myCell 
    UCase(Vn3Uni(myCell.Value))
        Else
          
    myCell Vn3Uni(myCell.Value)
        
    End If
      
    End If
    End If
        
    Next
        Cells
    .Font.Name "Times New Roman"
    End Sub
    Tuy nhiên, nó còn chưa hoàn thiện khi font chữ nằm trong công thức là chưa được:
    Ví dụ: Công thức tại ô C277 của em viết dưới font TCVN là:

    IF(C272=C276;"Qu¸ chuÈn"; "H·y xem l¹i nghiÖp vô b¹n ®· nhËp")
    Sau khi chạy nó không chuyển Font phần em bôi đậm màu đỏ ở trên. Vậy mình sẽ phải hoàn thiện thế nào ah.
     
    Lần chỉnh sửa cuối: 28 Tháng mười hai 2011
  19. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Chổ nào là myCell.Value hãy sửa thành myCell.Formula xem thế nào nhé
    Ngoài ra, đoạn ActiveSheet.[a1].SpecialCells(2, 2).Select là chỉ chọn cell không chứa công thức, bạn nên sửa thành ActiveSheet.UsedRange.Select
     
    Lần chỉnh sửa cuối: 28 Tháng mười hai 2011
  20. Dauthivan

    Dauthivan Thành viên tiêu biểu

    Rất chuẩn rồi thày ah, tối em sẽ Test thêm một số ví dụ nữa để kiểm tra độ an toàn của nó 1 lần nữa. Code sau khi em sửa là:
    PHP:
    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 "¸µ¶·¹¨¾»¼½Æ©ÊÇÈÉËÐÌÎÏѪÕÒÓÔÖÝ×ØÜÞãßáâä«èåæçé¬íêëìîóïñòô­øõö÷ùýúûüþ®¸¸µµ¶¶··¹¹¡¡¾¾»»¼¼½½ÆÆ¢¢ÊÊÇÇÈÈÉÉËËÐÐÌÌÎÎÏÏÑÑ££ÕÕÒÒÓÓÔÔÖÖÝ×ØÜÞããßßááââä䤤èèååææççéé¥ííêêëëììîîóóïïññòòôô¦øøõõöö÷÷ùùýýúúûûüüþ§"
    Function Vn3Uni(chuoi As String) As String
        On Error Resume Next
        
    For 1 To Len(chuoi)
            
    kytu Mid(chuoii1)
            
    vitri InStr(1StrVn3kytu0)
            If 
    vitri 0 Then
                chuoimoi 
    chuoimoi ChrW(Mid(CodUnivitri 45))
            Else
                
    chuoimoi chuoimoi kytu
            End 
    If
        
    Next
        Vn3Uni 
    chuoimoi
    End 
    Function
    Sub Unicode()
        
    On Error Resume Next
        Application
    .ScreenUpdating False
        Dim myCell 
    As RangemyFont As String
        ActiveSheet
    .UsedRange.Select
        
    For Each myCell In Selection
            
    If myCell.Formula <> "" Then
      myFont 
    myCell.Font.Name
      
    If Left(myFont3) = ".Vn" Then
        
    If myFont Like ".Vn*H" Then
          myCell 
    UCase(Vn3Uni(myCell.Formula))
        Else
          
    myCell Vn3Uni(myCell.Formula)
        
    End If
      
    End If
    End If
        
    Next
        Cells
    .Font.Name "Times New Roman"
    End Sub

    Em xin được hỏi ra khỏi chủ đề một chút, sao file em thử nghiệm em đặt tên nó là "Test thu" thì nó không chuyển là sao hả thày?
     

    Các file đính kèm:

    Lần chỉnh sửa cuối: 28 Tháng mười hai 2011

Chia sẻ trang này