使用VBA将多个文本文件导入1个单元格并在Excel中导入新行?

时间:2016-09-04 21:25:09

标签: excel-vba vba excel

我正在尝试将多个文本文件导入单元格A1,A2,A3等。 这意味着文本文件1将转到A1 文本文件2应该转到A2 文本文件3应该转到A3

在stackoverflow上,我发现code看起来几乎就像我要做的那样,除了创建新列。

问题是文件中的文本字符串是分隔的并放在新列中,因为这是代码的目的(使用答案中给出的替代方法)。

我不知道在此代码中要更改的内容是将文件1的所有文本放在单元格A1中。 我希望它是可能的,如果不是我欣赏任何有关其他解决方案的想法。

2 个答案:

答案 0 :(得分:0)

注释掉以下代码行应该这样做,因为curCol设置为1(即A列):

curCol = curCol + 1

我还想指出你链接的代码是非常低效的,因为在每次迭代之前不需要测量底行。它实际上应该用一个简单地改为行号的变量来重写,如:

nxt_row = nxt_row +1
ActiveSheet.Cells(nxt_row, curCol) = DataLine

以下几行代码应该移到子程序的开头:

if Range("A1").Value = "" then 
  nxt_row = 1
else
  if Range("A2").Value = "" then 
    nxt_row = 2
  else
     nxt_row = Range("A1").End(xlDown).Offset(1).Row
  end if
end if

答案 1 :(得分:0)

如果您希望将每个文件的全部内容放在一个单元格中,以下对您引用的代码的修改可能会有效:

Sub Import_All_Text_Files()

    Application.ScreenUpdating = False

    Dim thisRow As Long
    Dim fileNum As Integer
    Dim strInput As String

    Const strPath As String = "C:\Temp\Temp\"  'Change as required
    Dim strFilename As String

    strFilename = Dir(strPath & "*.txt")

    With ActiveSheet
        thisRow = .Range("A" & .Rows.Count).End(xlUp).Row

        Do While strFilename <> ""

            fileNum = FreeFile()
            Open strPath & strFilename For Binary As #fileNum
            strInput = Space$(LOF(fileNum))
            Get #fileNum, , strInput
            Close #fileNum

            thisRow = thisRow + 1
            .Cells(thisRow, 1).Value = strInput

            strFilename = Dir
        Loop
    End With

    Application.ScreenUpdating = True

End Sub

如果文件太大,我不能保证它会起作用 - Excel对任何一个单元格中插入的字符数量有限制(如果我没记错的话,可以是32,767)。