全部版块 我的主页
论坛 计量经济学与统计论坛 五区 数据交流中心
2487 3
2010-11-17
下面上三段用来收集统计年鉴中的Excel文件的VB程序。


CopySheet2003() 用Excel2003版来集成文件
CopySheet2007() 用Excel2007版来集成文件
BuiltToc()                 用于建目录


使用方法:
1)把统计年鉴中的Excel文件都放在一个叫c:\temp\cb的文件夹中(当然也可以放到别的文件夹,只要把程序中的相应地址改了就可以)
2)打开一个Excel空文件,把一下程序拷入VB编辑器中。
3)根据所用Excel版本,选择CopySheet200X()程序。 
4)命名、存盘
5)把第一个worksheet改名为index, 运行BuiltToc()建立目录。
6)存盘,结束。

如果你把文件重新命名后,目录中的链接断了的话,再运行一遍BuiltToc()就会更新目录。
以后大家拿到新的统计年鉴,用以上程序就可以自己来集成Excel文件了。



Function FileList(fldr As String, Optional fltr As String = "*.xls") As Variant
    Dim sTemp As String, sHldr As String
    If Right$(fldr, 1) <> "\" Then fldr = fldr & "\"
    sTemp = Dir(fldr & fltr)
    If sTemp = "" Then
        FileList = False
        Exit Function
    End If
    Do
        sHldr = Dir
        If sHldr = "" Then Exit Do
        sTemp = sTemp & "|" & sHldr
     Loop
    FileList = Split(sTemp, "|")
End Function

Sub CopySheet2007()
Dim basebook As Workbook
Dim tmpbook As Workbook
Dim i As Long
    Application.ScreenUpdating = False

    Files = FileList("C:\temp\cb")
    ChDir "C:\temp\cb"
    Set basebook = ThisWorkbook
    For i = LBound(Files) To UBound(Files)
            Set tmpbook = Workbooks.Open("c:\temp\cb\" & Files(i))
            tmpbook.Worksheets(1).Copy after:= _
            basebook.Sheets(basebook.Sheets.Count)
            ActiveSheet.Name = Replace(tmpbook.Name, ".xls", "")
            tmpbook.Close
        Next i

    Application.ScreenUpdating = True

    'fileSaveName = Application.GetSaveAsFilename( _
    'fileFilter:="Microsoft Excel Workbook (*.xls), *.xls")

'BuiltToc
End Sub

Sub CopySheet2003()
Dim basebook As Workbook
Dim tmpbook As Workbook
Dim i As Long
    Application.ScreenUpdating = False

    With Application.FileSearch
        .NewSearch
        .LookIn = "c:\temp\cb"
        .SearchSubFolders = False
        .FileType = msoFileTypeExcelWorkbooks
        If .Execute() > 0 Then
            Set basebook = ThisWorkbook
            For i = 1 To .FoundFiles.Count
                Set tmpbook = Workbooks.Open(.FoundFiles(i))
                    tmpbook.Worksheets(1).Copy after:= _
                    basebook.Sheets(basebook.Sheets.Count)
                    ActiveSheet.Name = Replace(tmpbook.Name, ".xls", "")
                tmpbook.Close
            Next i
        End If
    End With

    Application.ScreenUpdating = True

    BuiltToc
End Sub

Sub BuiltToc()
  ActiveWorkbook.Save

  Dim cSht As Long
  Dim qSht As String

  Application.Calculation = xlCalculationManual
  Application.ScreenUpdating = False

  Sheets("index").Select

  Cells(1, 1) = "Sheet Name"
  Cells(1, 3) = "Table Name"

  For cSht = 2 To ActiveWorkbook.Sheets.Count
     Cells(1 + cSht, 1) = "'" & Sheets(cSht).Name
     qSht = Application.Substitute(Sheets(cSht).Name, """", """""")
     Cells(1 + cSht, 3) = "'" & Sheets(cSht).Cells(1, 1)
     'ActiveSheet.Cells(1 + cSht, 1).Formula = "=hyperlink(""'" & qSht & "'!A1"",""" & qSht & """)"

     ActiveSheet.Cells(1 + cSht, 1).Formula = _
            "=hyperlink(""[" & ActiveWorkbook.Name _
            & "]'" & qSht & "'!A1"",""" & qSht & """)"

     Next cSht

  Rows("1:1").Select
  Selection.Font.Bold = True

  Columns("A:A").EntireColumn.AutoFit
  Columns("C:C").EntireColumn.AutoFit

  On Error Resume Next
  Application.ScreenUpdating = True
End Sub
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-11-17 00:31:17
1# ben1dan

领教,多谢楼主%
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-17 02:06:52
忍不住要奖励一下楼主,难得如此热心。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-17 10:15:51
用来收集统计年鉴中Excel表格的VB程序
做个标记
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群