Excel,VBA求教表格和TXT文本互转。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel,VBA求教表格和TXT文本互转。相关的知识,希望对你有一定的参考价值。

Excel,VBA求教表格和TXT文本互转。想学习VBA对txt的读取和写入。先简单点的。
1,对当前子表使用区域进行复制粘贴到txt中(有分列空格)。
2,对特定txt文档读取,粘贴到当前子表指定单元格(开始)。
3,实现txt,隐藏打开、保存及关闭。
先谢谢知道。(´-ω-`)

Const Filename = "d:\\1.txt"
Sub 复制Excel表格到Text文件()
On Error Resume Next
    Dim srcRng As Range, destRng As Range, textWorkBook As Workbook, wb As Workbook
    Application.DisplayAlerts = False
    
    '打开Text文件前,保存当前活动的工作薄对象
    Set wb = ActiveWorkbook
    Set srcRng = wb.ActiveSheet.UsedRange
    If Dir(Filename) = "" Then
        '如果Text文件不存在,新建一个工作薄,粘贴区域从A1开始
        Set textWorkBook = Workbooks.Add
        Set destRng = textWorkBook.Sheets(1).Range("A1")
    Else
        '通过Workbooks的OpenText方法,打开Text文件
        Workbooks.OpenText Filename:=Filename
        If Err Then
            MsgBox "打开文件 " & Filename & "出错。错误信息如下:" & vbCrLf & vbcrlr & Err.Description
            Exit Sub
        End If
        
        Set textWorkBook = ActiveWorkbook
        '查找粘贴开始位置,即现有数据的最后一行的下一行
        '为了防止是空表时,end操作会定位到最后一行
        Set destRng = textWorkBook.Sheets(1).Range("A1").End(xlDown).Offset(1)
        If Err Then
            Set destRng = textWorkBook.Sheets(1).Range("A1")
        End If
    End If
    
    textWorkBook.Windows(1).Visible = False '隐藏Text文件的窗口,既可以达到隐藏打开,保存和关闭。
    srcRng.Copy destRng  '表的使用区域复制到Text文件的工作薄,指定位置
    
    '使用Workbook的SaveAs方法,通过指定FileFormat参数为xlText,将工作薄另存为Text文件。
    textWorkBook.SaveAs Filename:=Filename, FileFormat:=xlText
    textWorkBook.Close SaveChanges:=True
    Application.DisplayAlerts = True
End Sub
Sub 复制Text文件到Excel表格()
On Error Resume Next
    Dim destRng As Range, textWorkBook As Workbook, wb As Workbook
    Application.DisplayAlerts = False
    
    '打开Text文件前,保存当前活动的工作薄对象
    Set wb = ActiveWorkbook
    
    '查找粘贴开始位置,即现有数据的最后一行的下一行
    '为了防止是空表时,end操作会定位到最后一行
    Set destRng = wb.ActiveSheet.Range("A1").End(xlDown).Offset(1)
    If Err Then
        Set destRng = wb.ActiveSheet.Range("A1")
        Err.Clear
    End If
    
    If Dir(Filename) = "" Then
        'Text文件不存在
        MsgBox "文件 " & Filename & "不存在!"
        Exit Sub
    Else
        '通过Workbooks的OpenText方法,打开Text文件
        Workbooks.OpenText Filename:=Filename
        If Err Then
            MsgBox "打开文件 " & Filename & "出错。错误信息如下:" & vbCrLf & vbcrlr & Err.Description
            Exit Sub
        End If
        
        Set textWorkBook = ActiveWorkbook
    End If
    
    textWorkBook.Windows(1).Visible = False '隐藏Text文件的窗口,既可以达到隐藏打开,保存和关闭。
    textWorkBook.Sheets(1).UsedRange.Copy destRng  '表的使用区域复制到Text文件的工作薄,指定位置
    
    '关闭Text文件。
    textWorkBook.Close SaveChanges:=False
    Application.DisplayAlerts = True
End Sub

使用workbooks的OpenText方法来打开Text文件,然后可以向操作Excel工作表来操作Text文件。

参考技术A 隐藏打开
是怎么打开?TXT没这个说法吧

如何用VBA将excel表导出成文本类型的文件?

其实就是想用VBA把一个sheets里的内容 导出到一个叫 dataout.json的文件里(这个文件实际上就是一个txt文件改了下扩展名)
我用以下的语句
ActiveWorkbook.SaveAs Filename:="D:\doc\dataout.json", FileFormat:=xlText, CreateBackup:=False
结果导出的文件中 原先每个cell的位置上都有一对"" 令我非常郁闷
请问有什么别的命令么..

保存CSV格式,没有""符号。
ActiveWorkbook.SaveAs Filename:="D:\doc\dataout.json", FileFormat:=xlCSV, CreateBackup:=False追问

xlcsv的话又全都变成 , 了 我需要的是原先是什么样 现在就什么样 谢谢了

追答

你如果不用“,”号,那你怎么区分单元格?你数据只有一列吗?

追问

原先的文件如上图
导出文本文档后希望如下
所以希望没有逗号
"ornament":

"ornament1":

"name":"ornament1" ,
"ID":1 ,
"build_exp":10 ,
"build_gold":5 ,
"level_require":"lv1" ,
"horror":20
,

追答

那你还不如用代码从单元格直接读出数据,然后写入txt文件。

追问

可具体怎么做呢...

追答

Sub daochu()
Dim iStartCol As Integer
Dim iStartRow As Integer
Dim iMaxCol As Integer
Dim iMaxRow As Integer
Dim str1 As String

iStartRow = ActiveSheet.UsedRange.Row
iMaxRow = ActiveSheet.UsedRange.Rows.Count + iStartRow - 1

iStartCol = ActiveSheet.UsedRange.Column
iMaxCol = ActiveSheet.UsedRange.Columns.Count + iStartCol - 1

Open "D:\dataout.json" For Output As #1
For i = iStartRow To iMaxRow
For j = iStartCol To iMaxCol
str1 = str1 & Cells(i, j)
Next j
Print #1, str1
Next i
Close #1
End Sub

参考技术A 不想编程的话,干脆等导出文本文件之后,再全局替换一下,把""替换掉,呵呵。

以上是关于Excel,VBA求教表格和TXT文本互转。的主要内容,如果未能解决你的问题,请参考以下文章

在 Excel 中使用 VBA,如何在 Outlook 中粘贴表格然后将表格转换为文本?

VBA 将 excel 单元格数据导出到 .txt 文件中

EXCEL VBA转为文本

在excel中,如何用VBA将每列数据的输出为一个独立的文本文件txt

在txt文件中,有固定的格式内容,比如 生产厂商:甲厂 生产规格:乙系列 想用VBA直接写到excel里

如何在VBA中的用户窗体上使用组合框和文本框来搜索和查找活动Excel电子表格中的数据?