欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap 谈天说地
   您现在位于: 首页技术专栏开发语言 → 正文
EXCEL VBA 实现区县归类存储
07-12-03 10:24:10 作者:半块点心 出处:本站原创
主要用于地市收集地震应急资料用的
呵呵
把一个总的文件展开为按区县名分类的小EXCEL表

Dim id As String
Dim name As String
Dim filename As String
Dim path As String
Sub break()
  
    filename = ThisWorkbook.name
    path = ThisWorkbook.path
'    path = Left(ThisWorkbook.fullname, InStrRev(ThisWorkbook.fullname, "\"))
    ChDir path
    MsgBox "即将展开各区县辖区情况,请耐心等待~~", vbInformation, filename
    Dim sheet As Integer
    Dim row As Integer
    
    row = 2
    Sheets("区县").Select
    Do Until Range("A" & row) = ""
      Sheets("区县").Select
      id = Left(Range("A" & row), 6)
      name = Range("B" & row)
    
      If Not name = "" Then
      Workbooks.Add
      ActiveWorkbook.SaveAs filename:=name & ".xls", FileFormat:= _
        xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
      Windows(name & ".xls").Activate
      
      For sheet = 1 To 3
        If sheet = 1 Then
          Sheets("Sheet1").name = "区县"
          sub_copy ("区县")
        ElseIf sheet = 2 Then
          Sheets("Sheet2").name = "乡镇"
          sub_copy ("乡镇")
        ElseIf sheet = 3 Then
          Sheets("Sheet3").name = "自然村"
          sub_copy ("自然村")
        End If
      Next
    
      sub_copy2
      ActiveWorkbook.Save
      ActiveWindow.Close
      End If
      row = row + 1
    Loop
    MsgBox "完成!所在目录:" & path, vbInformation, filename
End Sub
Function sub_copy(level As String)
    
    Dim row1 As Integer
    Dim row2 As Integer
    
'    id = "370783"
'    name = "寿光市"
    row1 = 1
    row2 = 1
    Windows(filename).Activate
    Sheets(level).Select
    Do
      row1 = row1 + 1
      If row1 = 32767 Then
        Windows(name & ".xls").Activate
        Exit Function
      End If
    Loop Until Left(Range("A" & row1), 6) = id
    row2 = row1
    Do While Left(Range("A" & row2), 6) = id
      row2 = row2 + 1
    Loop
    Range("A" & row1 & ":C" & row2 - 1).Select
    Selection.Copy
    Windows(name & ".xls").Activate
    Sheets(level).Select
    Range("A2").Select
    ActiveSheet.Paste
    Range("A1") = "ID"
    Range("B1") = "NAME"
    If Not level = "自然村" Then
      Range("C1") = "辖区情况"
    End If
    Columns("A:A").Select
    Selection.NumberFormatLocal = "@"
    If Not level = "区县" Then
    Cells.Replace What:=name, Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    End If
End Function
Function sub_copy2()
    Dim row As Integer
    Dim sheet As Integer
    Dim row1 As Integer
    Dim row2 As Integer
    Dim flag As Boolean
    
    row = 2
    row1 = 2
    row2 = 2
    sheet = 4
    flag = False
    Sheets("乡镇").Select
    Do Until Range("B" & row) = ""
      id = Left(Range("A" & row), 9)
      name = Range("B" & row).Value
'      MsgBox id & name
      Sheets.Add After:=Sheets(Sheets.Count)
      Sheets("Sheet" & sheet).name = name
      
      Sheets("自然村").Select
      
      Do While Left(Range("A" & row2), 9) = id
        row2 = row2 + 1
        flag = True
      Loop
'      MsgBox row1 & "-" & row2
      
      If flag Then
      Range("A" & row1 & ":B" & row2 - 1).Select
      Selection.Copy
      
      Sheets(name).Select
      Range("A2").Select
      ActiveSheet.Paste
      Else
      Sheets(name).Select
      End If
      
      Columns("A:A").Select
      Selection.NumberFormatLocal = "@"
      Range("A1") = "ID"
      Range("B1") = "NAME"
      
      row1 = row2
      row = row + 1
      sheet = sheet + 1
      Sheets("乡镇").Select
    Loop
End Function

(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  
    IApplication接口与VBaApplication对象的用法

    关于我们 友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.

                   滇ICP备05006901号