-
2021-02-22 18:16:57
Sub CVS另存为xlsx() Application.DisplayAlerts = False '先禁用excel的告警 Dim i As Integer Dim wb As Workbook Dim SaveAsExcelName As String Dim str() On Error Resume Next '加上以后防止点了取消发生的错误 '打开需要转换的csv文件,可以转换多个 str = Application.GetOpenFilename("Excel数据文件,*.csv", , , , True) '遍历选择的文件 For i = LBound(str) To UBound(str) Set wb = Workbooks.Open(str(i)) '获取文件名 SaveAsExcelName = Left(wb.Name, InStrRev(wb.Name, ".") - 1) '另存为xlsx操作 wb.SaveAs Filename:=wb.Path & "\" & SaveAsExcelName & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False '关闭excel wb.close Next Application.DisplayAlerts = True '恢复excel的告警 End Sub
更多相关内容 -
使用VBA打开制表符分隔的.txt文件以保存为.xlsx格式
2021-02-04 23:22:30我正在尝试在Excel中使用VBA来自动将.txt文件(制表符分隔)转换为.xlsx文件 . 这就是我所拥有的:Set WB = Workbooks.Open(folder + file, , , 1)If Right(file, 3) = "txt" Or Right(file, 3) = "xls" ...我正在尝试在Excel中使用VBA来自动将.txt文件(制表符分隔)转换为.xlsx文件 . 这就是我所拥有的:
Set WB = Workbooks.Open(folder + file, , , 1)
If Right(file, 3) = "txt" Or Right(file, 3) = "xls" Then
Application.DisplayAlerts = False
WB.SaveAs filename:=folder + milestone + "_" + loadtype + "_" + Left(file, Len(file) - 4) + "_" + metricDate + "_.xlsx", _
FileFormat:=51
Application.DisplayAlerts = True
Else
Application.DisplayAlerts = False
WB.SaveAs filename:=folder + milestone + "_" + loadtype + "_" + Left(file, Len(file) - 5) + "_" + metricDate + "_.xlsx", _
FileFormat:=51
Application.DisplayAlerts = True
End If
WB.Close
当然,这只是一段代码,我认为代码的第一部分是最相关的 . 我只是开始检查转换后的.txt文件,因为它们是保存后应该是10%的大小 . 事实证明,二十列被压成三列,所有空格和标签都被删除了 . 不知道发生了什么,因为我不经常使用VBA .
我在想钥匙在这里:
Set WB = Workbooks.Open(folder + file, , , 1)
最后的1表示制表符分隔 . 不知道它会对它打开的.xls文件做什么,但我会担心下一步 .
感谢您提供的任何指示 .
编辑 .
我改变了代码来区别对待.txt和.xls,就像我本来应该做的那样 . 这是当前的代码:
Dim WB As Workbook
'Dim WBS As Workbooks
If Right(file, 3) = "txt" Then
Set WB = Workbooks.OpenText Filename:=folder + file, DataType:=xlDelimited, Tab:=True
Application.DisplayAlerts = False
WB(1).SaveAs filename:=folder + milestone + "_" + loadtype + "_" + Left(file, Len(file) - 4) + "_" + metricDate + "_.xlsx", _
FileFormat:=51
Application.DisplayAlerts = True
WB.Close
ElseIf Right(file, 3) = "xls" Then
Set WB = Workbooks.Open(folder + file)
Application.DisplayAlerts = False
WB.SaveAs filename:=folder + milestone + "_" + loadtype + "_" + Left(file, Len(file) - 4) + "_" + metricDate + "_.xlsx", _
FileFormat:=51
Application.DisplayAlerts = True
WB.Close
Else
Set WB = Workbooks.Open(folder + file)
Application.DisplayAlerts = False
WB.SaveAs filename:=folder + milestone + "_" + loadtype + "_" + Left(file, Len(file) - 5) + "_" + metricDate + "_.xlsx", _
FileFormat:=51
Application.DisplayAlerts = True
WB.Close
End If
-
VBA程序--文件夹内所有文件_文件类型csv另存为xlsx
2021-10-24 16:39:33Function 文件类型csv另存为xlsx() '请记得先改一下路径,做好备份,最好不要另存为原路径 'ActiveWorkbook.SaveAs Filename:=Replace(ActiveWorkbook.Path, "新数据", "新数据-新") & "/" & Replace...Function 文件类型csv另存为xlsx() '请记得先改一下路径,做好备份,最好不要另存为原路径 'ActiveWorkbook.SaveAs Filename:=Replace(ActiveWorkbook.Path, "新数据", "新数据-新") & "/" & Replace(ActiveWorkbook.name, "csv", "xlsx"), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False '这里是原路径,如果非要存原路径,也行,就用下面这行代码,把上面的注释掉 ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "/" & Replace(ActiveWorkbook.name, "csv", "xlsx"), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False End Function Sub VBA打开文件夹内所有Excel表格_升级版_采用用户点选文件夹路径_而无须修改源代码() Dim myPath$, myFile$, WB As Workbook '这个$ 是相当于定义字符串 '调用函数,获取用户选择的文件夹,并且在最后加上一个反斜杠,用于下面的文件列表获取 myPath = ChooseFolder & "\" myFile = Dir(myPath & "*.*") '依次找寻指定路径中所有文件(所以文件夹里里面不要乱放其他文件) Do While myFile <> "" '当指定路径中有文件时进行循环 If myFile <> ThisWorkbook.name Then '如果我们这个宏文件在需要处理的文件夹之中,这个判断就会跳过下面的操作 Set WB = Workbooks.Open(myPath & myFile) '打开符合要求的文件 Call 文件类型csv另存为xlsx WB.Close 0 '不保存文件直接关闭 End If myFile = Dir '找寻下一个*.xls,或者xlsx文件 Loop Set WB = Nothing '释放变量内存 End Sub Public Function ChooseFolder() As String '定义并新建一个对话框对象 Dim dlgOpen As FileDialog Set dlgOpen = Application.FileDialog(msoFileDialogFolderPicker) '如果当前没有对话框显示,就让他弹出对话框 If dlgOpen.Show = -1 Then ChooseFolder = dlgOpen.SelectedItems(1) Set dlgOpen = Nothing End Function
-
用VBA将xml格式的excel另存为xlsx
2019-06-15 01:46:26需要将从数据库提取的数据交给用户,由于数据量较大(好几十万行),若导出为有固定分隔符的文本文件给用户,一来体验上不太好,二来若文本字符和分隔符号相同可能会出问题。于是想导出为Excel,若行数超出Excel行数...需求背景
需要将从数据库提取的数据交给用户,由于数据量较大(好几十万行),若导出为有固定分隔符的文本文件给用户,一来体验上不太好,二来若文本字符和分隔符号相同可能会出问题。于是想导出为Excel,若行数超出Excel行数限制,可拆分为多份再导出。
但由于工具限制,软件无法直接导出为Excel格式,但可导出Excel XML Spreadsheet,后缀名为xml,Excel可直接打开。
后面想更进一步,将导出的xml文件打开后另存为正常的xlsx格式再给用户,但如果导出的文件很多,一个个打开再另存,比较繁琐,于是想有无办法自动将那些xml批量另存为xlsx。
解决办法
本来想用python解决,但网上找资料发现很多都是去解析xml再写到excel,代码量大而且消耗太多内存,速度也不快。理想方案应该是充分利用excel本身的功能,模拟直接打开xml后再另存为xlsx的这个过程。最后发现还是VBA合适,毕竟专为office而生,具体参考代码如下:
Public Sub ConvertXmlToXlsx() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim objFSO As Object Dim objFolder As Object Dim objFile As Object xmlFolder = "D:\Users\Documents\Temp\Working\xml\" convFolder = "D:\Users\Documents\Temp\Working\xls\" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(xmlFolder) For Each objFile In objFolder.Files If UCase(Right(objFile.Name, Len(XML))) = UCase(XML) Then NewFileName = convFolder & Left(objFile.Name, Len(objFile.Name) - 4) & ".xlsx" Set ConvertThis = Workbooks.Open(objFolder & "\" & objFile.Name) ConvertThis.SaveAs Filename:=NewFileName, FileFormat:=xlOpenXMLWorkbook ConvertThis.Close End If Next objFile End Sub
VBA运行方法
新建一个Excel,按ALT+F11调出 VBA编辑器,菜单:插入->模块,然后贴上脚本,修改相关路径等,然后运行即可。
另外,上述脚本将xml改为xls后,应该还可以实现批量将xls转为xlsx的功能。参考资料:https://stackoverflow.com/questions/38587755/convert-xml-file-to-xlsx-file-with-vba
-
VBA一键sheet页另存为Excel
2018-07-03 18:06:16VBA一键sheet页另存为Excel,批量拆分Excel sheet页为单个文档。 -
使用VBA批量转换Excel格式,由.xls转换成.xlsx(示例代码)
2021-06-16 13:40:19打开单独的一个Excel文档,使用“另存为”功能,可以很轻松的转换格式。但是面对几百个Excel表这样就太累了,搜索很久,也没发现一个工具可以直接批量进行格式转换。最终发现可以使用VBA来实现批量转换Excel格式的... -
VBA程序xlsm文件另存xlsx不能保存的问题
2016-09-26 14:50:42表达式.SaveAs(FileName, FileFormat, Password, ...2.根据文件需要选择文件类型,excel的xlsm是包含了宏的文件,xlsx是不能运行宏的,2013之后选择 xlWorkbookDefault 就可以保存,但是宏(VBA程序)依旧存在。 -
另存为xlsx格式疑问
2021-02-04 23:22:31我想要excel另存为xlsx格式的文件,这个文件所有的东西选择性粘贴、去掉个人信息、取消隐藏、以显示精度为准,而不改变原来的excel文件,下面代码当excel sheet少的时候没问题,但当表格多的时候就卡死,一直转圈 求... -
vba 编写的Excel 批量另存为xls(2003)、xlsx、pdf、csv 工具
2020-09-28 11:27:57vba编写的excel批量转换为 ,xls格式、xlsx格式 、csv格式、或pdf格式。 使用界面如下: 解压缩,用office的Excel打开《vba批量另存为工具.xlsm》文件,启用宏 选择转换文件,ctrl A 本目录下文件全选,... -
将Xlsm文件保存为xlsx
2021-07-16 15:25:29I want to save the current xlsm file as xlsx, so i wrote a code as below. This code really done it job and i able to see the file saved as Myfile.xlsx as what i've defined in the code, however there i... -
Vba把Excel某个范围保存为XLS工作薄文件
2021-01-13 08:48:58Dim wn$, shp As Shape, arrApplication.ScreenUpdating = FalseApplication.DisplayAlerts = Falsewn = [a1]arr = Range("o3:o" & Range("o65536").End(xlUp).Row)Sheets("报表").CopyWith ActiveWorkbookWith ... -
利用VBA将xls文件批量转为xlsx 2020-12-11
2020-12-11 10:29:48对于单个xls文件,只需要利用“另存为"操作来更改文件格式就能够简单地完成,但是对于多个xls甚至是几十个xls文件时,这个工作量就比较麻烦了,因此需要借助exel开发工具中带有的VBA (Visual Basic宏语言),... -
将xlsx中的每个sheet单独另存为一个xlsx文件。
2022-01-13 17:02:323、alt+F11快捷键打开vba编码界面。 4、new一个模块。 5、如下代码。 Sub SaveSheetAsWorkbook() Dim theName As String On Error GoTo Line1 For Each sht In ActiveWindow.SelectedSheets sht.... -
使用VBA批量转换Excel格式,由.xls转换成.xlsx
2021-06-16 13:42:06打开单独的一个Excel文档,使用“另存为”功能,可以很轻松的转换格式。但是面对几百个Excel表这样就太累了,搜索很久,也没发现一个工具可以直接批量进行格式转换。最终发现可以使用VBA来实现批量转换Excel格式的... -
Excel VBA将工作表另存为Excel文件并覆盖文件
2021-07-08 16:51:34Export Worksheet Option Explicit Sub exportSheet() ... Const FileName As String = "ART.xlsx" Const SheetName As String = "Master List" On Error Resume Next Workbooks(FileName).Close O -
ExcelVBA函数.xlsm
2020-06-04 19:54:44该文件为学习ExcelVBA过程中过于函数的运用以及书写,函数的具体参数调用,地址参数调用以及相应不同参数数量的可选择调用。主要用于相应的EXcel VBA博文系列的应用。 -
Python 批量将.xlsx文件转为.xls文件
2021-05-12 14:10:10由于xlrd\xlwt写入的数据不带格式,只好先把xls模板先转为xlsx,用openpyxl批量写完后再批量转为xls。 百度找的转换实例,实际应用时生成的xls文件打开总提示格式不一致。 为了解决这个问题,翻了半天资料。最终... -
Excel VBA小程序01-将多个sheet表另存为单独的工作薄文件并清除原表数据
2020-08-06 11:14:11另存为xlsx文件的具体步骤 按Alt+F11,打开VBA编辑器,在代码窗口中粘贴下列代码,代码大同小异。 1、保存全部表格,不保留分表格式 Sub 复制() Dim Sh As Worksheet Dim wb As Workbook Dim cPath$, cFile$,... -
巧用VBA,只需2分钟1000个xls批量转换成xlsx
2021-06-16 13:41:30下面是单个xls转换成xlsx的步骤,相信大家都知道1....答:当然可以,只要用VBA代码就能按上面的操作自动执行100次,帮你批量将.xls转化成.xlsx。具体操作请看下方动图[图片上传失败...(image-17d23e-15370... -
文件另存为_导出为xls和xlsx格式可任选
2012-11-15 17:19:43'------------------------------------- '窗口环境初始化设置 '------------------------------------- Private Sub Workbook_Open() Rem 加快计算速度 Call Mod_Environment Rem 打开窗口默认最大化显示 ... -
Excel VBA批量格式转换:xlsx转pdf、xls、csv以及反向转换
2019-01-06 18:06:47有时候需要把大量的xlsx文件另存为其它格式,比如pdf、xls、csv,或者反向转换,可以用VBA批量处理。启动Excel,按下Alt+F11,打开Microsoft Visual Basic for Applications,点击 插入>模块,将下面的代码粘贴... -
用VBA代码打开xls文件时,判断被打开的xls文件是否含VBA代码并禁止其运行
2021-10-01 12:02:05用VBA代码打开xls文件时,判断被打开的xls文件是否含VBA代码并禁止...公司在迁移质控体统的文件控件系统,新文控系统不支持老版的office文件(xls, doc, ppt等), 需要将其升版成新的xlsx, docx, pptx格式。 显然,用vba -
Excel怎么批量将CSV格式转换为xlsx或xls格式?VBA、宏、软件?
2021-05-26 02:19:54# 怎么批量将CSV格式转换为xlsx或xls格式?下面给大家介绍几种方法:## 1、原始方法如果是少量的Excel文件可以采用打开——另存为。。,选择想要转换的格式就OK了!## 2、利用Excel的VBA在你要转换的CSV文件夹中新建... -
WPS VBA 7.0.1590.rar
2020-05-06 17:13:41因为有些程序不能处理excel2007版,所以我们要将xlsx格式另存为2003版xls格式。如果是一大堆文件需要转换,则可以使用宏来实现将xlsx文件批量另存为xls文件。 -
VBA将Excel导出为CSV文件
2020-08-08 19:34:44Sub csv() Dim Fs, myFile As Object Dim myfileline As String 'txtfile的行数据 ...") MsgBox "已保存工作表内容到注册表:HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApp201912\MySection" End Sub -
【我sap这导出数据表格export.mhtml怎么转换为 excel 工作表.xlsx】excel生成html表格数据
2021-07-03 06:11:052、勾选我可以此内容,允许播放,单击继续按钮。3、在地址栏输入网站地址,转到此网站里面。...我sap这导出数据表格export.mhtml怎么转换为 excel 工作表.xlsx把导出的html文件改名为.xls就可以... -
Vba批量删除工作表,批量另存工作表为excel文件
2020-07-10 10:46:08工作表和工作簿有什么区别呢? 一个excel文件就是一个excel工作簿例如abc.xls,一个工作簿中包含1个到若干个工作表例如sheet1,也就是说工作簿是由工作表组成的。 下面我们就来了解一下工作簿的操作 打开工作... -
R语言︱用excel VBA把xlsx批量转化为csv格式
2016-04-08 23:56:55笔者寄语:批量读取目前看到有以下几种方法:xlsx包、RODBC包、批量转化成csv后读入。本章来自博客:http://www.cnblogs.com/weibaar/p/4506144.html 在上面的尝试已经发现,xlsx本身就是这个复杂问题的最...