2008-10-06 34 views

Trả lời

8

Dưới đây là một thói quen mà sẽ chuyển đổi tất cả các file trong một thư mục có phần mở rộng .xls.

Phương pháp tiếp cận thẳng về phía trước. Bất kỳ mã VBA nào trong sổ làm việc bị loại bỏ, sổ làm việc không được lưu với phần mở rộng .xlsm. Bất kỳ cảnh báo không tương thích nào không bị thay đổi, thay vào đó các thay đổi sẽ tự động được chấp nhận.

Sub Convert_xls_Files() 

Dim strFile As String 
Dim strPath As String 

    With Application 
     .EnableEvents = False 
     .DisplayAlerts = False 
     .ScreenUpdating = False 
    End With 
'Turn off events, alerts & screen updating 

     strPath = "C:\temp\excel\" 
     strFile = Dir(strPath & "*.xls") 
'Change the path as required 

    Do While strFile <> "" 
     Workbooks.Open (strPath & strFile) 
     strFile = Mid(strFile, 1, Len(strFile) - 4) & ".xlsx" 
     ActiveWorkbook.SaveAs Filename:=strPath & strFile, FileFormat:=xlOpenXMLWorkbook 
     ActiveWorkbook.Close True 
     strFile = Dir 
    Loop 
'Opens the Workbook, set the file name, save in new format and close workbook 

    With Application 
     .EnableEvents = True 
     .DisplayAlerts = True 
     .ScreenUpdating = True 
    End With 
'Turn on events, alerts & screen updating 

End Sub 
+1

Cảm ơn Robert, nó đã làm việc rất tốt. Điều duy nhất tôi thay đổi là FileFormat: = XlFileFormat.xlXMLSpreadsheet (Tôi đang sử dụng Excel 2003) – kristof

+0

Đoạn mã trên có thể được viết bằng php không? – chupinette

3

Bạn có thể sửa lại mã tôi được đăng ở đây:

http://www.atalasoft.com/cs/blogs/loufranco/archive/2008/04/01/loading-office-documents-in-net.aspx

Nó cho thấy làm thế nào để save as PDF (Word được hiển thị trong blog, nhưng nếu bạn tải về giải pháp, nó có mã cho Excel và PPT).

Bạn cần tìm hàm để lưu làm định dạng mới thay vì xuất (có lẽ cách dễ nhất là ghi lại macro của chính bạn đang thực hiện trong Excel và sau đó xem mã).

+0

Cảm ơn bạn Lou cho cả các câu trả lời và cho sửa tên file mở rộng trong câu hỏi. Tôi có thể xem xét bạn khi tôi cần giải pháp toàn diện hơn. Đối với thời điểm này tôi OK với VBA – kristof

0

Cách đơn giản nhất là ghi lại macro cho một tệp và sau đó chỉnh sửa macro theo cách thủ công để thực hiện các tác vụ như vậy đối với tệp trong thư mục sử dụng vòng lặp. Trong macro, bạn có thể sử dụng các hàm VB standart để lấy tất cả các tệp trong thư mục và lọc chúng. Bạn có thể xem http://www.xtremevbtalk.com/archive/index.php/t-247211.html để biết thêm thông tin.

3

Mở tất cả chúng lên, và sau đó nhấn ALT + F11 để có được biên tập vĩ mô và nhập cái gì đó như:

Sub SaveAllAsXml() 
    Dim wbk As Workbook 
    For Each wbk In Application.Workbooks 
     wbk.SaveAs FileFormat:=XlFileFormat.xlXMLSpreadsheet 
    Next 
End Sub 

Và sau đó nhấn F5 để chạy nó. Có thể cần một số tinh chỉnh như tôi đã không thử nghiệm nó.

+0

Cảm ơn, nó đã được hữu ích – kristof

1

Có vẻ như là một công việc cho ngôn ngữ yêu thích nhất của tôi mọi thời đại: VBScript !!

Đặt điều này trong một tập tin văn bản, và làm cho các phần mở rộng ".vbs":

set xlapp = CreateObject("Excel.Application") 
set fso = CreateObject("scripting.filesystemobject") 
set myfolder = fso.GetFolder("YOURFOLDERPATHHERE") 
set myfiles = myfolder.Files 
for each f in myfiles 
    set mybook = xlapp.Workbooks.Open(f.Path) 
    mybook.SaveAs f.Name & ".xml", 47 
    mybook.Close 
next 

tôi đã không kiểm tra này, nhưng nó phải làm việc

0
Const xlXLSX = 51 

REM 51 = xlOpenXMLWorkbook (without macro's in 2007-2013, xlsx) 
REM 52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2013, xlsm) 
REM 50 = xlExcel12 (Excel Binary Workbook in 2007-2013 with or without macro's, xlsb) 
REM 56 = xlExcel8 (97-2003 format in Excel 2007-2013, xls) 

dim args 
dim file 
dim sFile 
set args=wscript.arguments 

dim wshell 
Set wshell = CreateObject("WScript.Shell") 

Set objExcel = CreateObject("Excel.Application") 

Set objWorkbook = objExcel.Workbooks.Open(wshell.CurrentDirectory&"\"&args(0)) 

objExcel.DisplayAlerts = FALSE 

objExcel.Visible = FALSE 

objWorkbook.SaveAs wshell.CurrentDirectory&"\"&args(1), xlXLSX 

objExcel.Quit 

Wscript.Quit 
Các vấn đề liên quan