Xuất file xlsm sang xlsx không chứa code Macros

Liên hệ QC

Thanh Bình PV

Thành viên hoạt động
Tham gia
30/10/19
Bài viết
151
Được thích
19
Xin chào mọi người,

Em có 1 file làm việc có 1 ribbon tự tạo và 1 số code trong đó. Em cần xuất file xlsx để gửi khách hàng.
Nhờ anh chị giúp em viết code với ạ.

1. Xuất file xlsm sang xlsx không chứa code trong file. Và không đóng file xlsm ạ.
(Em có viết 1 sub nhưng mỗi lần xuất thì sẽ hiện thông báo hỏi để xóa VB project. Có cách nào để bỏ qua thông báo luôn không ạ)

1618374727267.png
2. Tại vì trong file có ribbon nên khi em xuất sang file xlsx thì mở lên sẽ hiện thông báo bên dưới. Em muốn xóa CustomUI trong file để không hiện lên nữa ạ.

1618374786291.png

Em cảm ơn.
Mã:
Sub test()
    ' bat buoc phai nhan ok de xoa vbproject
    Dim savename As Variant
    Dim filename As String, temp$
    Application.DisplayAlerts = False ' Mac dinh nhan Yes
    temp = Environ("temp") & "\" & ThisWorkbook.Name
    filename = Replace(ThisWorkbook.Name, ".xlsm", "")
    ThisWorkbook.SaveCopyAs filename:=temp
    
    Dim filename1 As String
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    
    savename = Application.GetSaveAsFilename(InitialFileName:=filename, fileFilter:="Exel Files (*.xlsx), *.xlsx", Title:="Export Excel !!!")
    If savename = False Then Application.DisplayAlerts = True: Exit Sub
    
    filename1 = ThisWorkbook.path & "\" & ThisWorkbook.Name
    Set xlApp = CreateObject("Excel.Application")
    'xlApp.Visible = False
    'xlApp.DisplayAlerts = False
    Set xlBook = xlApp.Workbooks.add(temp)
    xlBook.SaveAs filename:=savename, FileFormat:=51
    xlApp.Quit
    Set xlApp = Nothing

    Kill temp

    Application.DisplayAlerts = True
    
End Sub
 
Chuyển code hiện có thành Addins. Còn file dữ liệu ở dạng *.xlsx. Vậy khỏi cần chuyển gì cả. Xong phim 15 ký tự.
 
Upvote 0
Chuyển code hiện có thành Addins. Còn file dữ liệu ở dạng *.xlsx. Vậy khỏi cần chuyển gì cả. Xong phim 15 ký tự.
Em cũng muốn thế. Mà file này đưa ra cả công trường và các phòng ban để làm việc nữa. Họ cũng sẽ dùng 1 số tính năng của code trong file vậy nên em mới không chuyển sang thành Addin.
 
Upvote 0
(Em có viết 1 sub nhưng mỗi lần xuất thì sẽ hiện thông báo hỏi để xóa VB project. Có cách nào để bỏ qua thông báo luôn không ạ)
DisplayAlerts = False là đúng rồi nhưng làm chưa chuẩn. Bạn thiết lập DisplayAlerts = False cho server Excel hiện hành (Application.DisplayAlerts = False ' Mac dinh nhan Yes), sau đó bạn khởi động server Excel mới (instance thứ 2)
Mã:
Set xlApp = CreateObject("Excel.Application")

và thao tác ở đó. Server thứ 2 vẫn có DisplayAlerts = True.

Sửa:
- xóa Application.DisplayAlerts = False ' Mac dinh nhan tâp tin
- bỏ chú thích ở dòng xlApp.DisplayAlerts = False, tức biến nó trở lại thành dòng code.
---------
Theo tôi nên đặt code ở một tập tin khác. Chả nhẽ khi bạn muốn chuyển 10 XLSM thành 10 XLSX thì bạn đặt code ở 10 tập tin?

Code trong tập tin khác
Mã:
Sub saveAsXlsx()
Dim k As Long, filename, fName As String, wb As Workbook
    filename = Application.GetOpenFilename("Excel files (*.xls*),*.xls*", , "Hay chon tap tin Excel", , True)
    If Not IsArray(filename) Then Exit Sub
    Application.DisplayAlerts = False
    For k = 1 To UBound(filename)
        fName = filename(k)
        Set wb = Application.Workbooks.Open(fName)
        fName = Left(fName, InStrRev(fName, ".") - 1) & "_" & Format(Date, "ddmmyyyy") & ".xlsx"
        wb.SaveAs fName, xlOpenXMLWorkbook
        wb.Close
    Next k
    Application.DisplayAlerts = True
End Sub
Chạy code -> chọn 1 hoặc 10 tập tin XLSM
2. Tại vì trong file có ribbon nên khi em xuất sang file xlsx thì mở lên sẽ hiện thông báo bên dưới. Em muốn xóa CustomUI trong file để không hiện lên nữa ạ.

Cũng không cần code đâu vì làm tay không mất nhiều thời gian.

Tôi thường dùng WinRAR, nhưng cũng có thể dùng 7-Zip.

Thao tác: phải chuột trên tập tin XLSX (không cần đổi tên thành ZIP đâu) -> chọn Open With -> duyệt tới và chọn WinRAR -> click để chọn thư mục customUI (bước 1 - xem hình) -> nhấn nút Delete (bước 2) để loại bỏ thư mục customUI -> nhấn nút X (bước 3) để đóng cửa sổ của WinRAR -> đã xong phim.

Nếu thao tác quen thì mất cùng lắm 30 s. Mở tập tin XLSX bằng Excel có khi còn lâu hơn, chưa nói tới chạy code.

customui.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom