在一个 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
笔记:
- 假设有一个 ActiveX 按钮
- 您需要添加错误处理
- 您无需在文本文件中说明想要的布局。这只是每行写入一个单元格。
答案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
在开始时进行设置。