На одном листе Excel я хотел бы прочитать данные с другого листа Excel и записать их в текстовый файл.

Пример первого листа:

Sheet_Name   File_Name    Start_Line   End_Line
Sheet1       C:\Test.txt  B5           H10         Button

Нажатие на кнопку должно записать ячейки Sheet1 B5-H10 в C:\Test.txt.

Как это сделать?

2 ответа2

1

Вот пример того, как обрабатывать текстовый файл напрямую

Private Sub CommandButton1_Click()
    Dim shSrc As Worksheet
    Dim rSrc As Range
    Dim dat As Variant
    Dim FileNumber As Integer
    Dim rw As Long, cl As Long

    Set shSrc = Worksheets(Me.Cells(2, 1).Value)
    dat = shSrc.Range(Me.Cells(2, 3).Value & ":" & Me.Cells(2, 4).Value).Value

    FileNumber = FreeFile
    Open Me.Cells(2, 2).Value For Output As #FileNumber
    For rw = 1 To UBound(dat, 1)
    For cl = 1 To UBound(dat, 2)
        Print #FileNumber, dat(rw, cl)
    Next cl, rw
    Close #FileNumber
End Sub

Замечания:

  1. Принимает кнопку ActiveX
  2. Вам нужно будет добавить обработку ошибок
  3. Вы не говорите, какой макет вы хотите в текстовом файле. Это просто написать одну ячейку на строку.
0

Скопируйте ячейки, которые вы хотите сохранить в формате .txt, на новый лист, сохраните его как файл .txt и удалите временный лист.

Как это:

'Copy the range you want to get into a file    

Sheets.Add After:=Sheets(Sheets.Count)

'Paste the range to Cells(1,1)    

ActiveWorkbook.SaveAs Filename:= FILEPATH, _
    FileFormat:=xlTextMSDOS, CreateBackup:=False

ActiveSheet.Delete    

ActiveWorkbook.SaveAs Filename:= FILEPATH, _
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

Если вы хотите избавиться от подсказок и тому подобного, установите Application.ScreenUpdating = False в начале.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .