将xlsx文件转换为Excel VBA或Python中文件夹和子文件夹中的xlsx文件

2024-09-28 17:16:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用vba宏或python将xlsx文件转换为xls代码。所以到目前为止,我可以使用以下代码获得有关在单个文件夹中转换文件的帮助:

Sub ProcessFiles()
Dim Filename, Pathname, saveFileName As String
Dim wb As Workbook
Dim initialDisplayAlerts As Boolean

Pathname = ""  
Filename = Dir(Pathname & "*.xlsx")
initialDisplayAlerts = Application.DisplayAlerts
Application.DisplayAlerts = False
Do While Filename <> ""
    Set wb = Workbooks.Open(Filename:=Pathname & Filename, _
                            UpdateLinks:=False)
    wb.CheckCompatibility = False
    saveFileName = Replace(Filename, ".xlsx", ".xls")

    wb.SaveAs Filename:=Pathname & saveFileName, _
              FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
              ReadOnlyRecommended:=False, CreateBackup:=False

    wb.Close SaveChanges:=False
    Filename = Dir()
Loop
Application.DisplayAlerts = initialDisplayAlerts
End Sub

我现在正在尝试将其推广到给定文件夹中的所有子文件夹。在

更重要的是,我试图构建一个宏,它执行以下操作:

  1. 在父文件夹为常量的批处理模式下运行。在
  2. 在后台处理代码,并将所有转换后的文件放入各自的文件夹中。在

例如,Max是我的主文件夹,里面可能有Med,Det,Vis,Liv sub-文件夹。里面每个子文件夹中,都会有数千个xlsx文件需要转换并放置在父文件存储的同一位置。在

请帮忙。在

谢谢, 曼迪


Tags: 文件代码文件夹falseapplicationasfilenamexlsx
1条回答
网友
1楼 · 发布于 2024-09-28 17:16:22

在Python中可以这样做,如下所示。这将从单个文件夹中获取所有xlsx文件,并使用相同的名称以xls格式写入它们:

import win32com.client as win32
import glob
import os

excel = win32.gencache.EnsureDispatch('Excel.Application')

for excel_filename in glob.glob(r'c:\excel_files_folder\*.xlsx'):
    print excel_filename
    wb = excel.Workbooks.Open(excel_filename)
    wb.SaveAs(os.path.splitext(excel_filename)[0] + '.xls', FileFormat=56, ConflictResolution=2) 

excel.Application.Quit()

其中56是要使用的格式号,它们列在Microsoft website上。在


要在整个目录结构上执行此操作,可以使用os.walk,如下所示:

^{pr2}$

相关问题 更多 >