Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2049|回复: 7

[已解决]不太会描述,是关于循环或者变量的问题,老师们帮我看看

[复制链接]
发表于 2011-12-29 13:58 | 显示全部楼层 |阅读模式
Sub Macro1()
Sheets("z").Select
    Columns("a:a").Select
    Selection.Copy
    Sheets("00").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues
  ActiveWorkbook.SaveAs Filename:="C:\00.txt", FileFormat:=xlUnicodeText, CreateBackup:=False
  Sheets("z").Select
    Columns("b:b").Select
    Selection.Copy
    Sheets("01").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues
  ActiveWorkbook.SaveAs Filename:="C:\01.txt", FileFormat:=xlUnicodeText, CreateBackup:=False
End Sub
这段代码中改变颜色的地方是我希望采用变量的地方。
附件中工作表z其实有很多列,工作簿也是有很多工作表的,一小段一小段增加代码很麻烦,请老师们费心帮一下。
最佳答案
2011-12-29 15:52
  1. Sub aa()
  2.     Application.ScreenUpdating = False
  3.     Dim sht As Worksheet, i As Long, n As Long
  4.     Dim arr
  5.     With Sheets("z")
  6.         n = .Range("IV1").End(xlToLeft).Column
  7.         For i = 1 To n
  8.             Set sht = Sheets.Add
  9.             sht.Name = .Cells(1, i)
  10.             arr = .Range(.Cells(1, i), .Cells(.Cells(65536, i).End(xlUp).Row, i))
  11.             Sheets(sht.Name).Range("A1").Resize(UBound(arr), 1) = arr
  12.             ActiveWorkbook.SaveAs Filename:="C:" & sht.Name & ".txt", FileFormat:=xlUnicodeText, CreateBackup:=False
  13.         Next i
  14.     End With
  15.     Application.ScreenUpdating = True
  16. End Sub
复制代码

求助.rar

14.42 KB, 下载次数: 8

发表于 2011-12-29 15:52 | 显示全部楼层    本楼为最佳答案   
  1. Sub aa()
  2.     Application.ScreenUpdating = False
  3.     Dim sht As Worksheet, i As Long, n As Long
  4.     Dim arr
  5.     With Sheets("z")
  6.         n = .Range("IV1").End(xlToLeft).Column
  7.         For i = 1 To n
  8.             Set sht = Sheets.Add
  9.             sht.Name = .Cells(1, i)
  10.             arr = .Range(.Cells(1, i), .Cells(.Cells(65536, i).End(xlUp).Row, i))
  11.             Sheets(sht.Name).Range("A1").Resize(UBound(arr), 1) = arr
  12.             ActiveWorkbook.SaveAs Filename:="C:" & sht.Name & ".txt", FileFormat:=xlUnicodeText, CreateBackup:=False
  13.         Next i
  14.     End With
  15.     Application.ScreenUpdating = True
  16. End Sub
复制代码
回复

使用道具 举报

发表于 2011-12-29 16:09 | 显示全部楼层
试试
Sub
Demo()
    Dim i As Long
    Dim wb As Workbook
    Set wb = ActiveWorkbook
    For i = 1 To 2  ' 处理第1(A)列到第2(B)列
        Call SaveAsTxt(wb, "z", i)
    Next
End Sub

Function SaveAsTxt(wb As Workbook, DataSheetName As String, Col As Long)
    Dim sSheetName As String
    Dim shtSave As Worksheet
    With wb
        .Sheets(DataSheetName).Columns(Col).Copy
        sSheetName = Format(Col - 1, "00")
        Set shtSave = .Sheets(sSheetName)
        With shtSave
            .Range("A1").PasteSpecial Paste:=xlPasteValues
            .SaveAs Filename:="C:\" & sheetname & ".txt", FileFormat:=xlUnicodeText, CreateBackup:=False
        End With
    End With
End Functio

回复

使用道具 举报

 楼主| 发表于 2011-12-29 16:27 | 显示全部楼层
老师,您太厉害了,我本来就是想这样命名文件名称的,但是没看出规律,索性才随便命名的。谢谢,谢谢!
还想问一下,这样得到的文本文件在手机上为什么只能正确显示出文件名,内容有的是看不到,有的是乱码,能不能想办法修改一下编码的格式?
回复

使用道具 举报

 楼主| 发表于 2011-12-29 16:46 | 显示全部楼层
3楼吕布版主,您的代码提示错误1004,方法'saveas'作用于对象'_wooksheet'时失败
点击调试的时候.SaveAs Filename:="C:\" & sheetname & ".txt", FileFormat:=xlUnicodeText, CreateBackup:=False,这行代码是黄色,您能看一下怎么修改吗?
回复

使用道具 举报

发表于 2011-12-29 16:55 | 显示全部楼层
没调试,有个变量写错了
Option Explicit

Sub Demo()
    Dim i As Long
    Dim wb As Workbook
    Set wb = ActiveWorkbook
    For i = 2 To 3    ' 处理第1(A)列到第2(B)列
        Call SaveAsTxt(wb, "z", i)
    Next
End Sub

Function SaveAsTxt(wb As Workbook, DataSheetName As String, Col As Long)
    Dim sSheetName As String
    Dim shtSave As Worksheet
    With wb
        .Sheets(DataSheetName).Columns(Col).Copy
        sSheetName = Format(Col - 1, "00")
        Set shtSave = .Sheets(sSheetName)
        With shtSave
            .Range("A1").PasteSpecial Paste:=xlPasteValues
            .SaveAs Filename:="C:\" & sSheetName & ".txt", FileFormat:=xlUnicodeText, CreateBackup:=False
        End With
    End With
End Function


回复

使用道具 举报

发表于 2011-12-29 17:02 | 显示全部楼层
wboy 发表于 2011-12-29 16:27
老师,您太厉害了,我本来就是想这样命名文件名称的,但是没看出规律,索性才随便命名的。谢谢,谢谢!
还想 ...

我没用手机看这些东西,搞不懂手机支持什么格式了
回复

使用道具 举报

 楼主| 发表于 2011-12-29 17:40 | 显示全部楼层
修改以后的代码可以了,再次感谢两位。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-17 00:07 , Processed in 0.300815 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表