如何使用 Excel VBA 2010 从 Excel 工作表读取数据

如何使用 Excel VBA 2010 从 Excel 工作表读取数据

在一个 Excel 表中,我想从另一个 Excel 表中读取数据并将其写入文本文件。

第一张表的示例:

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

单击该按钮将把 Sheet1 单元格 B5-H10 写入 C:\Test.txt。

怎么做?

答案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. 您无需在文本文件中说明想要的布局。这只是每行写入一个单元格。

答案2

将您想要以 .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在开始时进行设置。

相关内容