精华内容
下载资源
问答
  • VBA CVS另存为xlsx
    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
    
    更多相关内容
  • 我正在尝试在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

    展开全文
  • Function 文件类型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,批量拆分Excel sheet页单个文档。
  • 打开单独的一个Excel文档,使用“另存为”功能,可以很轻松的转换格式。但是面对几百个Excel表这样就太累了,搜索很久,也没发现一个工具可以直接批量进行格式转换。最终发现可以使用VBA来实现批量转换Excel格式的...
  • 表达式.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格式、xlsx格式 、csv格式、或pdf格式。 使用界面如下: 解压缩,用office的Excel打开《vba批量另存为工具.xlsm》文件,启用宏 选择转换文件,ctrl A 本目录下文件全选,...
  • 将Xlsm文件保存为xlsx

    2021-07-16 15:25:29
    I 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...
  • Dim wn$, shp As Shape, arrApplication.ScreenUpdating = FalseApplication.DisplayAlerts = Falsewn = [a1]arr = Range("o3:o" & Range("o65536").End(xlUp).Row)Sheets("报表").CopyWith ActiveWorkbookWith ...
  •    对于单个xls文件,只需要利用“另存为"操作来更改文件格式就能够简单地完成,但是对于多个xls甚至是几十个xls文件时,这个工作量就比较麻烦了,因此需要借助exel开发工具中带有的VBA (Visual Basic宏语言),...
  • 3、alt+F11快捷键打开vba编码界面。 4、new一个模块。 5、如下代码。 Sub SaveSheetAsWorkbook() Dim theName As String On Error GoTo Line1 For Each sht In ActiveWindow.SelectedSheets sht....
  • 打开单独的一个Excel文档,使用“另存为”功能,可以很轻松的转换格式。但是面对几百个Excel表这样就太累了,搜索很久,也没发现一个工具可以直接批量进行格式转换。最终发现可以使用VBA来实现批量转换Excel格式的...
  • Export 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文件打开总提示格式一致。 为了解决这个问题,翻了半天资料。最终...
  • 另存为xlsx文件的具体步骤 按Alt+F11,打开VBA编辑器,在代码窗口中粘贴下列代码,代码大同小异。 1、保存全部表格,保留分表格式 Sub 复制() Dim Sh As Worksheet Dim wb As Workbook Dim cPath$, cFile$,...
  • 下面是单个xls转换成xlsx的步骤,相信大家都知道1....答:当然可以,只要用VBA代码就能按上面的操作自动执行100次,帮你批量将.xls转化成.xlsx。具体操作请看下方动图[图片上传失败...(image-17d23e-15370...
  • '------------------------------------- '窗口环境初始化设置 '------------------------------------- Private Sub Workbook_Open() Rem 加快计算速度 Call Mod_Environment Rem 打开窗口默认最大化显示 ...
  • 有时候需要把大量的xlsx文件另存为其它格式,比如pdf、xls、csv,或者反向转换,可以用VBA批量处理。启动Excel,按下Alt+F11,打开Microsoft Visual Basic for Applications,点击 插入>模块,将下面的代码粘贴...
  • VBA代码打开xls文件时,判断被打开的xls文件是否含VBA代码并禁止...公司在迁移质控体统的文件控件系统,新文控系统支持老版的office文件(xls, doc, ppt等), 需要将其升版成新的xlsx, docx, pptx格式。 显然,用vba
  • # 怎么批量将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:44
    Sub 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
  • 2、勾选我可以此内容,允许播放,单击继续按钮。3、在地址栏输入网站地址,转到此网站里面。...我sap这导出数据表格export.mhtml怎么转换 excel 工作表.xlsx把导出的html文件改名.xls就可以...
  • 工作表和工作簿有什么区别呢? 一个excel文件就是一个excel工作簿例如abc.xls,一个工作簿中包含1个到若干个工作表例如sheet1,也就是说工作簿是由工作表组成的。 下面我们就来了解一下工作簿的操作 打开工作...
  • 笔者寄语:批量读取目前看到有以下几种方法:xlsx包、RODBC包、批量转化成csv读入。本章来自博客:http://www.cnblogs.com/weibaar/p/4506144.html 在上面的尝试已经发现,xlsx本身就是这个复杂问题的最...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 654
精华内容 261
关键字:

vba为什么另存为.xlsx后打不开