如何从Excel值

时间:2017-03-27 17:38:58

标签: excel vba excel-vba

我目前正在开发一种工具,可以让我为Excel文件中的条目创建我的特定配置文件。

假设我有这些值: 男:enter image description here

我想生成一个如下所示的文本文件。女性和男性必须有单独的文件名,每行只有一个文件。

enter image description here

我目前有以下代码:

Sub toFile()

    Dim FilePath As String, CellData As String, LastCol As Long, LastRow As Long
    Dim Filenum As Integer

    LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
    LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

    For i = 1 To LastRow
        FilePath = Application.DefaultFilePath & "\" & Trim(ActiveSheet.Cells(i, 1).Value) & ".xpd"
        Filenum = FreeFile

        Open FilePath For Output As Filenum
        CellData = ""

        For j = 2 To LastCol
        CellData = Trim(ActiveSheet.Cells(i, j).Value)
        Write #Filenum, CellData

        Next j

        Close #Filenum

    Next i
    MsgBox ("Done")
End Sub

此代码的示例输出:

enter image description here

如何实现上述预期输出?

2 个答案:

答案 0 :(得分:2)

这是最终代码,它将创建两个文件,并且不会在单元格为空的情况下写入值:

Sub toFile()

    Dim FilePath As String, CellData As String, LastCol As Long, LastRow As Long
    Dim Filenum As Integer

    LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
    LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

    For i = 2 To LastRow
        FilePath = Application.DefaultFilePath & "\" & Trim(ActiveSheet.Cells(i, 1).Value) & ".TXT"
        Filenum = FreeFile

        Open FilePath For Output As Filenum
        CellData = ""

        For j = 2 To LastCol
            If Trim(ActiveSheet.Cells(i, j).Value) <> "" Then
                CellData = Trim(ActiveSheet.Cells(1, j).Value) & ": " & Trim(ActiveSheet.Cells(i, j).Value)
                Write #Filenum, CellData
            End If
        Next j

        Close #Filenum

    Next i
    MsgBox ("Done")
End Sub

答案 1 :(得分:0)

使用以下代码 更改代码

For i = 2 To LastRow

celldata = Trim(ActiveSheet.Cells(1, j)) & ": " & Trim(ActiveSheet.Cells(i, j).Value)