Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 导出文本文件excel_Vba_Excel - Fatal编程技术网

Vba 导出文本文件excel

Vba 导出文本文件excel,vba,excel,Vba,Excel,我试图制作一个commandbutton,将我的表导出到一个选项卡分隔的文本文件中,并向其中添加一些动态标题。 我想让标题说: 1/x 2/x 3/x 4/x等,其中x是列的总数 这是我从一个网站上得到的代码: Private Sub CommandButton1_Click() Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer myFile = App

我试图制作一个commandbutton,将我的表导出到一个选项卡分隔的文本文件中,并向其中添加一些动态标题。 我想让标题说: 1/x 2/x 3/x 4/x等,其中x是列的总数

这是我从一个网站上得到的代码:

Private Sub CommandButton1_Click()

    Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As   Integer

    myFile = Application.DefaultFilePath & "\projekt.txt"

    Set rng = Selection

    Open myFile For Output As #1

    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
问题是这取决于我标记填充的单元格以使其工作, 另外,它只生成逗号分隔的文本文件,我想要不带“”的制表符分隔的文件。它也不会产生标题

1/5    2/5    3/5    4/5    5/5
x(total) rows
Data    Data    Data    Data    Data
Data    Data    Data    Data    Data
Data    Data    Data    Data    Data
Data    Data    Data    Data    Data

它只输出选定的单元格,因为在代码中第4行有

Set rng = Selection
如果要始终导出特定范围,例如A1:E100,可以将此行更改为

Set rng = Range("A1:E100")
如果此范围包括标题,则导出也将包含标题

1/5    2/5    3/5    4/5    5/5
x(total) rows
Data    Data    Data    Data    Data
Data    Data    Data    Data    Data
Data    Data    Data    Data    Data
Data    Data    Data    Data    Data
第二个问题

它是逗号分隔的,因为

Write #1, cellValue,
若要将其设置为tab Demilite,请将此行更改为

Write #1, cellValue & vbTab

这应该是写入部分的完整代码,
vbNewline
表示“新行”字符(或
vbCrLf
也可以),
vbTab
是制表符

If j = rng.Columns.Count Then
    Write #1, cellValue & vbNewLine
Else
    Write #1, cellValue & vbTab
End If

你能发布你想要输出的样子吗?我已经为输入添加了thanx。谢谢你的帮助,但我想知道是否还有其他地方我不需要指定范围,我的意思是它只导出所使用的列和行,我的意思是,如果我的表有10行15列,它将只导出这些单元格。@这里您当然可以。尝试研究如何确定最后一行。列也是如此。在拥有最后一行之后,您可以编写类似于
Set rng=Range(“A1:E”&LastRow)
的代码,其中
LastRow
是分配给最后一行值的变量。谢谢,我肯定会研究并找出其中的一行。但是您关于如何将其制表符分隔的另一个注释对我不起作用,我把每一列换成了新行。