我创建了一个VBA代码,可以将数据从单个硬编码工作表导出到export.txt文件。我不得不使用两个For循环,因为我不知道以什么不同(和简单)的方式,我会跳过由导出视角(文件类型和另一个宏的主键)中的不必要信息组成的两行。然而,宏,它的工作...导出到不带引号的管道分隔的.txt文件
Sub VBA_Write_to_a_text_file()
Dim filename As String
Dim rng As Range
Dim cellValue As Variant
Dim i As Integer
Dim j As Integer
filename = Application.ThisWorkbook.Path & "/export.txt"
Open filename For Output As #1
Set rng = Sheets(22).Range("A1:G1")
For i = 1 To rng.Rows.Count
For j = 1 To rng.Columns.Count
cellValue = rng.Cells(i, j).Value
If j = rng.Columns.Count Then
Write #1, cellValue
Else
Write #1, cellValue,
End If
Next j
Next i
Set rng = Sheets(22).Range("A4:G18")
For i = 1 To rng.Rows.Count
For j = 1 To rng.Columns.Count
cellValue = rng.Cells(i, j).Value
If j = rng.Columns.Count Then
Write #1, cellValue
Else
Write #1, cellValue,
End If
Next j
Next i
Close #1
End Sub
...与例外的两个问题:
竖线分隔符的问题:我不能管“变逗号“”分隔符| “改变下面的语法。此语法可能仅保留给逗号分隔的文件。你会推荐什么?
If j = rng.Columns.Count Then Write #1, cellValue Else Write #1, cellValue,
不必要的行情:在相同位提供上述我用写的,而不是打印。我知道Print会摆脱引号,但它也会删除生成制表符分隔的文件的分隔符,这不是一个选项。管道问题的优先级高于引号,但理想情况下,我的目标是解决这两个问题。
在此先感谢您的所有建议。
这是您给我的随时可用的解决方案。这个棒极了。我忘了提及一些要求。到目前为止,我还没有设法解决最后一个: 1。生成的文件名必须预先定义,并且与源电子表格位于同一文件夹中; 'Set tsOut = objFs.CreateTextFile(Application.ThisWorkbook.Path&“/export.txt”,True)' 2.分隔符必须出现在行的开始和结尾:'strRowData =“|” &VBA.Join(varRowData,strDelimiter)&“|”' ** 3。我开放的问题:rngData参数应该使用一些循环来解释新行** –
我还用以下语法管理第三个问题,我在网上找到的语法非常简单: ''用于数据 Dim last As Double Dim rngHeaders由于范围 昏暗rngData作为范围 昏暗rngRow作为范围 昏暗varRowData为Variant 昏暗strRowData作为字符串 昏暗strDelimiter作为字符串 “专柜 昏暗lngCounter只要 ”建立数据 随着Sheet13 最后= .Cells (.Rows.Count,“G”)。End(xlUp).Row 结束 Set rngHeaders = Sheet13.Range(“A1:G1”) Set rngData = Sheet13.Range(“A4:G”&last)' –
好的工作 - 你也可以使用像这样的东西:'Set rngData = Sheet2.Range(Sheet2.Range(“A3”),Sheet2.Cells(Sheet2.Range(“A3”)。End(xlDown).Row,Sheet2.Range(“A3”)。End(xlToRight).Column) )' –