注册 登录
编程论坛 VB6论坛

请问如何依次/循环读取同一个文件夹下不同的txt文件并依次写入???

jeamourvous 发布于 2016-09-21 21:04, 4731 次点击
请教专家:我的需求大致是:在一个excel中,需要将工作表1中第11-123行每行的内容单独依次复制到该表的第2行,然后工作表2中固定单元格区域的数据自动变化,此时就需要把部分数据复制,然后再粘贴到文本文件中就算完事了。我事先已经建立了空白的文本文件,名称为01.txt、02.txt、03.txt……112.txt,想用VB程序一次性完成,现在遇到的问题就是如何依次打开这些文件,然后粘贴每次复制的内容保存关闭。由于是初学,请勿见怪。

编的代码是:

Private Sub Command1_Click()
 Dim i, n, a
    n = 0
 Set xlapp = CreateObject("Excel.Application") '创建EXCEL对象
 Set xlbook = xlapp.Workbooks.Open("f:\01.xls") '新建EXCEL工件簿文件
 xlapp.Visible = True '设置EXCEL对象可见(或不可见)
 xlbook.Sheets("参数").Activate
    For i = 11 To 15
    n = n + i
    Rows(n).Select
    Selection.Copy
    Rows("2:2").Select
    ActiveSheet.Paste
    Sheets("一元方程表").Select
    Range("E22:R92").Select
    Application.CutCopyMode = False
    Selection.Copy
  
 a = Clipboard.GetText
   
    Open "f:\001\10.txt" For Output As #1
     
   Print #1, a
 Clipboard.Clear
 Close #1
 Next i
End Sub

问题很多,麻烦大家了
7 回复
#2
xiangyue05102016-09-22 08:47
试试这个

Private Sub Command1_Click()
 Dim i, n, a
    n = 0
 Set xlapp = CreateObject("Excel.Application") '创建EXCEL对象
 Set xlbook = xlapp.Workbooks.Open("f:\01.xls") '新建EXCEL工件簿文件
 xlapp.Visible = True '设置EXCEL对象可见(或不可见)
 xlbook.Sheets("参数").Activate
    For i = 11 To 15
    n = n + i
    Rows(n & ":" & n).Select   '修改了这句
    Selection.Copy
    Rows("2:2").Select
    ActiveSheet.Paste
    Sheets("一元方程表").Select
    Range("E22:R92").Select
    Application.CutCopyMode = False
    Selection.Copy
  
    a = Clipboard.GetText
   
    Open "f:\001\" & i & ".txt" For Output As #1    '修改了这句, 另外txt不需要提前建立
     
   Print #1, a
 Clipboard.Clear
 Close #1
 Next i
End Sub
#3
jeamourvous2016-09-22 09:45
回复 2楼 xiangyue0510
非常谢谢您,就是要这种效果。但还有个问题: 剪贴板的内容没有发生变化,生成的文本文件内容都是一样的,请问有什么办法吗?
#4
xiangyue05102016-09-22 09:52
剪贴板没有操作过,好像代码本身没有问题。建议见中断,每次看一下Range("E22:R92")的数值变化情况。
#5
jeamourvous2016-09-22 10:28
回复 4楼 xiangyue0510
刚才又实验了一下,发现问题是重复的时候没有激活相应的工作表,所以我把xlbook.Sheets("方程参数").Activate放到了循环里面,之后生成的每个文本文件内容都不一样了,但就是没有按照顺序来,而且复制的行数有的也不在11到15行中。请您再帮忙看看是不是循环哪里还可以完善一下,无论怎样都要谢谢您!

  For i = 11 To 15
    n = n + i
    xlbook.Sheets("方程参数").Activate
    Rows(n & ":" & n).Select   '修改了这句
    Selection.Copy
    Rows("2:2").Select
    ActiveSheet.Paste
    Sheets("排版用一元有方程").Select
    Range("E22:R92").Select
    Application.CutCopyMode = False
    Selection.Copy
    a = Clipboard.GetText
   
#6
jeamourvous2016-09-22 11:13
回复 4楼 xiangyue0510
问题解决了,是我多此一举加了一个变量n,删除就好了,毕竟10多年没用VB了,都忘记得差不多了。
不过还得请教您一下,怎样才能把下图中文本框中输入的行数变量赋给 “生成TXT文件”命令按钮呢,就是命令健代码中输入的 i 值?

只有本站会员才能查看附件,请 登录
#7
xiangyue05102016-09-22 14:06
你这真的是完完全全的退给老师了。
dim i1 ,i2 as integer
i1=text1.text
i2=text2.text
for i=i1 to i2
……
#8
jeamourvous2016-09-22 14:12
回复 7楼 xiangyue0510
确实是,谢谢您
1