精华内容
下载资源
问答
  • 用QT调用VBA函数实现文件导出Excel功能
  • Excel VBA数据导出

    千次阅读 2017-08-14 18:12:09
    基于此需求,学习了ExcelVBA导出数据到文件中。 开启VBA Excel中的开发工具默认都没有打开,此处需要百度一下如何打开对应版本的Excel。(注:高版本的开发工具需要专业版或商业版才能使用,最好不要使用过高...

    游戏中很多配置文件都采用Excel保存数据。但实际使用时,可能需要对Excel数据再处理成我们需要的格式。基于此需求,学习了Excel的VBA来导出数据到文件中。

    开启VBA

    Excel中的开发工具默认都没有打开,此处需要百度一下如何打开对应版本的Excel。(注:高版本的开发工具需要专业版或商业版才能使用,最好不要使用过高版本,最低office excel 2007版)

    宏设置

    Excel默认禁用所有宏,在宏安全中可以设启用所有宏

    新建模块

    打开Visual Basic面板,选中工程面板下任意选项右键-插入-模块。

    代码示例

    Option Explicit
    Sub parseAndOutputData()
        Dim result As String
        Dim file_name As String
        Dim file_path As String
        Dim info_row As Integer
        Dim sheets_count As Integer
        
        If Len(Worksheets(1).Cells(2, 1).Value) > 0 Then
            file_name = Worksheets(1).Cells(2, 1)
        End If
        If Len(Worksheets(1).Cells(2, 2).Value) > 0 Then
            file_path = Worksheets(1).Cells(2, 2)
        End If
        If Len(Worksheets(1).Cells(2, 3).Value) > 0 Then
            info_row = Worksheets(1).Cells(2, 3)
        End If
        sheets_count = Worksheets.Count
        sheets_count = 0
        While Len(Worksheets(1).Cells(2, sheets_count + 4)) > 0
                sheets_count = sheets_count + 1
        Wend
    
        If MsgBox("It will Clear File!",VbOKCancel,"提示") = vbCancel Then
            Exit Sub
        End If
    
        Open ThisWorkbook.Path & "\" & file_name & ".txt" For Output As #1
            Write #1, ""
        Close #1
        
        
        Dim i As Integer
        Dim j As Integer
        Dim k As Integer
        Dim max_row As Integer
        Dim max_col As Integer
    
        Open ThisWorkbook.Path & "\" & file_name & ".txt" For Binary As #1
        result = "return {"
        For i = 2 To sheets_count
            max_col = 0
            While Len(Worksheets(i).Cells(info_row, (max_col + 1)).Value) > 0
                max_col = max_col + 1
            Wend
    
            max_row = info_row
            While Len(Worksheets(i).Cells((max_row + 1), 1).Value) > 0
                max_row = max_row + 1
            Wend
    
            If i <> 2 Then
                result = result & "," & Chr(10)
            Else
                result = result & Chr(10)
            End If
            result = result & Chr(9) & Worksheets(1).Cells(2, (i + 2)).Value & " = {"
    
            For j = (info_row + 1) To max_row
                If j <> (info_row + 1) Then
                    result = result & "," & Chr(10) & Chr(9) & Chr(9) & "{"
                Else
                    result = result & Chr(10) & Chr(9) & Chr(9) & "{"
                End If
                For k = 1 To max_col
                    If Len(Worksheets(i).Cells(j, k).Value) > 0 Then
                        If k <> 1 Then
                            result = result & ","
                        End If
                        result = result & Chr(10) & Chr(9) & Chr(9) & Chr(9) & Worksheets(i).Cells(info_row, k) & "=" & Worksheets(i).Cells(j, k).Value
                    End If
                Next
                result = result & Chr(10) & Chr(9) & Chr(9) & "}"
    
                Put #1, , result
                result = ""
            Next
            result = result & Chr(10) & Chr(9) & "}"
        Next
        
        result = result & Chr(10) & "}"
        
        Put #1, , result    
        Close #1
        MsgBox "OutPut Success!"
    End Sub

    Worksheets(1).Cells(2, 3)代表第一个表的第2行第3列单元格   其中Worksheets(1)代表第一个表,其指多个表中排最前面的表,只与位置有关

    Worksheets.Count代表当前xls文件中表的个数

    <> 表示不等于 &  表示连接         Chr(9)表示转义字符Tab

    在条件语句中 = 表示判断是否相等

    ThisWorkbook.Path代表当前文件路径  Output 和 Binary 代表文件打开模式

    其中Output 对应用Write写入数据  其会覆盖到文件所有内容。

    Binary对应用Put写入数据  其有三个参数,第二个代表可选字节数 ,第三个代表内容

    Binary其会覆盖掉最初写入的部分,不会修改其他数据。所以采用Output清除文件内容。

    Binary一次最多读写32kb,可以不关闭文件多次顺序写入数据。

    #1代表文件号  类似文件句柄吧

    MsgBox 弹出框控件   具体使用细节可根据需求百度


    本示例代码主要是读取第一个表,获取一些配置信息,比如需要读取多少个表,从第几行开始读取。之后的逻辑主要是为了组织数据的布局

    最后在Excel中的开发者面板中点击宏,选择模块再执行。导出文件成功

    新建一个空xlsx文件,为其开启宏并添加模块。只要与该xlsx文件在同一文件夹的,其它xlsx文件就可以直接调用其模块导出数据


    中文显示问题:

    二进制文本输出后的编码格式是ANSI

    一般代码文件都采用的是UTF-8    无BOM格式

    最简单的方法:

    Notepad++可以显示ANSI的中文,但直接将其转换编码格式,其新的格式不能显示原有中文

    使用Notepad++新建文件将其编码格式修改为UTF-8    无BOM格式   在将原来的内容拷贝到新文件中即可显示原有中文

    展开全文
  • VBAExcel导出为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
    Sub csv()
        Dim Fs, myFile As Object
        Dim myfileline As String 'txtfile的行数据
        Dim sht As Worksheet
        Dim csvFileName As String 'csv文件名
        Dim totalRows As Integer ' 总的行数
        Dim totalColumns As Integer '总的列数
        Dim sheetNumber As Integer '工作表号
        Dim strAll As String '整个工作表的文本
        
        csvFileName = InputBox("请输入文件名:", "CSV", "export_csv")
        totalRows = 17 ' 总的行数
        totalColumns = 10 '总的列数
        sheetNumber = 1 '工作表号
       
        For Each sht In ThisWorkbook.Sheets
           
            Set Fs = CreateObject("Scripting.FileSystemObject")   '建立filesytemobject
            Set myFile = Fs.createtextfile(ActiveWorkbook.Path & "\" + csvFileName & "_Sheet" + CStr(sheetNumber) + ".csv") '通过filesystemobject新建一个csv文件
            
            For i = 1 To totalRows  '从第1行开始
                ra = CStr(sht.Cells(i, 1).Value)    '从第一列开始
                If ra = "" Then Exit For
                rb = ""
                For j = 1 To 10
                    ca = CStr(sht.Cells(1, j).Value)
                    If ca = "" Then Exit For
                    If rb = "" Then
                        rb = CStr(sht.Cells(i, j).Value)
                    Else
                        rb = rb & "," & CStr(sht.Cells(i, j).Value)
                    End If
                Next j
                myFile.writeline (rb)
                strAll = strAll + rb + vbCrLf
                
            Next i
            Set myFile = Nothing
            Set Fs = Nothing                   '关闭文件和filesystemobject对象
             
             SaveSetting AppName:="MyApp201912", Section:="MySection", Key:="Sheet" & CStr(sheetNumber), Setting:=strAll '保存所有文本到注册表
             
             sheetNumber = sheetNumber + 1 '下一个工作表
             
        Next
        
        MsgBox ("已保存了" + CStr(sheetNumber - 1) + "个CSV文件!")
        
        MsgBox "已保存工作表内容到注册表:HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApp201912\MySection"
    End Sub
    

     

    展开全文
  • Excel VBA导出操作

    2021-01-26 10:08:03
    VBA初学: 1、 导出VBA开发工具 学习内容: 图操 1、第一步找到 文件——选项——自定义功能区 2、找到信任中心——点击信任中心设置 3、 导出完成标题栏就会出现开发工具选项 学习产出: 1、 通过按钮实现表格简单...

    VBA初学:

    1、 导出VBA开发工具

    学习内容:

    图操
    1、第一步找到 文件——选项——自定义功能区在这里插入图片描述

    2、找到信任中心——点击信任中心设置
    在这里插入图片描述

    3、 导出完成标题栏就会出现开发工具选项
    在这里插入图片描述

    学习产出:

    1、 通过按钮实现表格简单循环插入
    2、无操作前在这里插入图片描述

    3、 点击按钮后
    在这里插入图片描述
    4、非常简单的VBA代码
    Sub 宏5()

    ’ 宏5 宏


    Dim i As Integer
    Rows(“2:2”).Select

    For i = 1 To 50
    
    Selection.Copy
    ActiveCell.Offset(2, 0).Rows("1:1").EntireRow.Select
    Selection.Insert Shift:=xlDown
    
    Next
    

    End Sub

    展开全文
  • 使用VBA,20行代码 将Excel数据导出

    万次阅读 2013-08-15 21:28:38
    程序员免不了与策划或运维打交道。通常情况是有配置数据的更改。但是即便是程序员也有写错的时候。更改一个配置,使用更直观的excel,成为了单写配置工具的替代方案。这里介绍一个将Excel的数据导出生成文件的方法。

    1、满足需求


        程序员免不了与策划或运维打交道。通常情况是有配置数据的更改。但是即便是程序员也有写错的时候。更改一个配置,使用更直观的excel,成为了单写配置工具的替代方案。这里介绍一个将Excel的数据导出生成文件的方法。

    2、设计Excel

           我们以植物大战僵尸2为例。其中有植物图鉴,这些数据明显是配置的,而且描述部分可能会更改。 假设,我们有这样的一个Excel。
        
        

        数据直观也简单。假设这就是全部要输出的信息啦。

    3、VBA

        使用VBA,首先我们要打开VBA的编辑界面,找到Excel选项,进行设置,我使用的是Excel2010,在文件->excel选项中:
        

        勾选开发工具,这样上面的菜单栏中就会出现开发工具菜单。
      
      

        点击Visual Basic,就进入vba编辑界面了。

        右击Excel对象文件夹,添加一个模块:

        

        在右侧的模块编辑框中加入代码:
        
    Option Explicit
    Sub writeOutData()
        Dim result As String
        Dim i As Integer
        Dim j As Integer
        For i = 3 To 10
            For j = 2 To 10
                If Len(Sheet1.Cells(i, j).Value) > 0 Then
                    result = result & Sheet1.Cells(2, j) & " = " & Sheet1.Cells(i, j).Value & Chr(10)
                End If
            Next
        Next
        Open ThisWorkbook.Path & "\OutPut.txt" For Binary As #1
            Put #1, , result
            Close #1
        MsgBox "OutPut Success!"
    End Sub
    
    

        很清爽是吧。保存,遇到这个对话框:
        
        
        这里微软出于安全性的考虑默认excel是不加载宏的。因此这里我们选否,在接下来的界面里将其保存为.xlsm

        

        保存之后。我们vba的编辑就完成了。

    4、添加操作按钮

          接下来我们要在界面上放一个大按钮来调用这个宏方法。
        首先选取开发工具->插入->表单控件的第一个。拖动鼠标,绘制一个按钮。

        

        拖动后,在弹出的界面选择刚才我们写的宏

      
        点击确定。我们就能看到这个按钮啦,再右击,选择编辑名称,将其改为“导出”。
       

      好了,现在点击这个按钮,你会看到弹出的对话框,并且在次Excel同级目录会有一个名为output.txt的文件,记录我们的信息。 生成了文件是这样的:
      

    5、总结

        经过设计表格、编写vba脚本、添加界面操作这些步骤,我们就可以导出Excel的信息了。整个过程非常方便。如果用c++来实现这样一个需求,还是很麻烦的。而这种方法只需要不超过20行代码。当然我们也可以增加逻辑,定制化数据的处理与输出。

        Excel文件下载地址:http://download.csdn.net/detail/fansongy/5955971


    本篇博客出自阿修罗道,转载请注明出处:http://blog.csdn.net/fansongy/article/details/9988127
      
        
    展开全文
  • 如果用户自己的Excel文件中有一列是型号,该宏可以插入指定文件夹里以型号命名的JPG图片到另一列; 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前...
  • EXCEL VBA 导出高清图片方法

    千次阅读 2020-02-17 09:59:50
    EXCEL VBA 导出高清图片方法 将EXCEL表格内容另存为图片的方法有很多种,简单的比如“复制为图片格式并另存”,“打印成XPS”等等,本文着重的是利用VBA实现的方法。 该方法适合用于中大型图文表格输出为图片格式...
  • VBA导出方法:通过将图片转成chart对象,利用chart对象导出方法将图片批量导出。 这里主要记录一下使用VBA批量导出的方法。 例如:有如下一个工作表,需要将其中的图片批量导出 解决方案: 利用VBA遍历工作
  • excel导出文件插件.rar

    2020-04-28 16:07:33
    关于前端代码需要引入的css与js的插件,引用后即可使用,使用后方便,为各位道友提供方便,不需要再从其他的地方下载
  • 这里我就直接上源码:Sub 导出txt1() Dim file As String, arr, i '定义文本文件的名称 file = ThisWorkbook.Path & "\新工资表.txt" '判断是否存在同名文本文件,存在先行删除 If Dir(file) <> "" Then Kill file '...
  • 将工作薄每一个工作表导出为PDF文件。   Sub PDF() Dim asy As Worksheet Dim spath As String spath = Excel.ThisWorkbook.Path For Each asy In Excel.ThisWorkbook.Worksheets sName = spath &...
  • 主要功能包含:一是VBA连接SQL Server数据库查询的功能,二是根据自动获取的日期动态将结果数据导出为多个Excel文档的功能。导出文件命名为按机构编码和日期动态命名方法,格式:机构编码+主文件名+日期,生成的...
  • VBA导出Excel里的图表为JPG文件

    千次阅读 2015-05-26 16:01:06
    Sub ExportChart() Dim myChart As Chart Dim myFileName As String Set myChart = Sheet1.ChartObjects(1).Chart myFileName = "myChart.jpg" On Error Resume Next Kill ThisWorkbook.Pat
  • 本例简析通过ACCESS VBA查询语句导出所有数据库表到XLS文件。 2. 相关知识 2.1 导出数据查询代码 有四种方法,可选其中一种。其中D:\test.xls表示导入到D盘里,命名为test.xls;Sheet1是工...
  • DBC文件转EXCEL文件

    2019-04-10 16:33:02
    用于转换dbc文件为excle文件,便于查看,用于验证导入的dbc文件是否正确。
  • 工作所用到的TCL/TK及VBA Excel导出脚本,工作所需,供个人练习所用,附件也加密,非下载用的~
  • 将该文件与需要转换的Excel文件放在同一个文件夹中,打开该文件,点击开始转换,稍等片刻即可完成转换
  • Sub exportJosn() Dim s As String  Dim fullName As String  Dim Data1 As String  Dim rng As Range  Dim xLen As Integer  Dim yLen As Integer  Dim r1 As Integer ... Dim c1 As Int
  • 使用VBA导入导出csv文件

    千次阅读 2017-11-15 10:49:25
    '根据当前工作簿第二个sheet页的B1单元格,取出第一个sheet页对应的一行数据并出导出csv文件 Sub Export_Renkei_CSV_Click() '固定取出49列数据 Dim Xdata( 1 To 49 ) As Variant, XheadData As ...
  • 需求描述 一份工作簿里面有5个表 将工作表1导出来成为一个单独的工作簿,命名1.xlsx 将工作表2导出来成为一个单独的工作...VBA Sub outputSheetAsWorkbook() Dim Wkb As Workbook Dim Sht As Worksheet Dim strPath
  • 下面是利用VBA导出文件的例子,可以导出Excel内容等其他可以使用VBA的地方。 Sub export_file() Dim fs, ft As Object Dim txtname As String txtname = "export_file" Set fs = CreateObject(...
  • 压缩文件中包括一个包含宏代码的Excel文件Sheet Macros.xls以及其他四个测试文件工作表 1~4。 宏的功能为(1)选中Excel表格中的某些行或列,运行某个Macro,自动根据选中的cells创建新的worksheets,worksheets的...
  • 使用ExcelEasy与vba脚本结合,实现含多选框与单选框excel文件
  • excel类库 内置一个text 文本是导出代码, 做相应的调整就可以用了, 加载文件方法是tp5的 做你框架 或者原生的调整就可以了,
  • Sub Demo2() Dim objChart As ChartObject Dim i As Integer For Each objChart In ActiveSheet.ChartObjects objChart.Select ActiveChart.Export Filename:=ThisWorkbook.Path & "\" & _ objChart.Chart....
  • Private Sub Workbook_AfterSave(ByVal Success As Boolean) Dim fso Dim f Dim readText As String filepath = "C:\temp\FileName.txt" Set fso = CreateObject("Scripting.FileSystemObject"...
  • Excel 调用vba导出

    千次阅读 2019-06-14 14:12:34
     /// <param name="excelFilePath">Excel文件路径  /// 宏名称  /// 宏参数组  /// 执行时是否显示Excel  /// 返回结果  public object RunExcelMacro(string macroName, object[] parameters, bool ...
  • 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的...,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入...
  • 利用VBE的导入文件导出文件功能,可以方便地导入和导出代码以实现代码的迁移。 1.导出宏代码 步骤1 按组合键【Alt+FII]打开VBE。 步骤2 在“工程资源管理器”中用右键单击代码所在模块或对象,单击...
  • 生成的文件并不直观,看的话很不方便,就需要将生成的excel文件中的数据做一下处理,然后放到另一个模板excel文件中,如果一条数据一条数据去整理的话会累死人,所以领导让写一个宏程序,也就是用VBA写一个小程序,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,703
精华内容 1,081
关键字:

vba导出excel文件