excel合并工作簿VBA

主要内容如下:

 

Sub 合并工作簿()

Dim p As Integer
Dim s As Integer
Dim i As Integer
Dim hao As String
Dim fd As FileDialog
Dim strPath As String

Application.DisplayAlerts = False '关闭提示窗口
Set newshe = ThisWorkbook.Worksheets(1) '本工作簿的第一个工作表
Set template = ThisWorkbook.Worksheets(2) '临时工作表
newshe.Rows("2:1048576").Delete '删除工作簿的第一个工作表的所有数据(除了第一行标题外)
'右键按钮 选择控件格式 点击 属性 选择 对象位置和大小 选择不随单元格变化 点击确定即可
s = 0

'使用FileDialog对象选择文件夹
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
'显示文件夹对话框
fd.Title = "港股合并,请选择数据所在文件夹,然后点击确定"
fd.InitialFileName = ThisWorkbook.Path '本工作当前路径
    
If fd.Show = -1 Then '用户选择了文件夹
    strPath = fd.SelectedItems(1)
Else: strPath = ""
    'MsgBox "您没有选择数据所在文件夹路径"
    Exit Sub '退出程序下面执行
End If

Set fd = Nothing

na = Dir(strPath & "\*.xls") '需要合并的所有工作表都要事先保存在F:\数据\20120705\文件夹下
Do While na <> ""
    template.Rows("1:10").Delete '将第1行至第10行删除
    Set wb = Application.Workbooks.Open(strPath & "\" & na)
    
    
    
    If InStr(wb.Worksheets(1).Cells(10, 1), "日期") > 0 And _
        InStr(wb.Worksheets(1).Cells(8, 1), "代號") > 0 And _
        InStr(wb.Worksheets(1).Cells(13, 1), "資產淨值(以交易貨幣計算)") > 0 And _
        InStr(wb.Worksheets(1).Cells(20, 1), "香港單位") > 0 And _
        InStr(wb.Worksheets(1).Cells(17, 1), "香港單位") > 0 Then
        For i = 1 To 50
            template.Cells(i, 1) = wb.Worksheets(1).Cells(10, (i * 3)).Value '第C列表示第3列
            template.Cells(i, 2) = wb.Worksheets(1).Cells(8, (i * 3)).Value  '代码
            template.Cells(i, 3) = wb.Worksheets(1).Cells(13, i * 3).Value '单位净值
            template.Cells(i, 4) = wb.Worksheets(1).Cells(20, i * 3).Value  '资产净额总值
            template.Cells(i, 5) = wb.Worksheets(1).Cells(17, i * 3).Value  '已发行单位
        Next
    Else: MsgBox "格式已经变更,更改一下"
    End If
    template.UsedRange.Copy '复制数据
    'ActiveCell.CurrentRegion.Select  '选择区域(不知道多少行)
        
    newshe.Activate
        
    'Cells(s, 1) = wb.Name '写入数据所属的工作簿名字
    's = s + 1
    
    s = newshe.UsedRange.Rows.Count

    s = s + 1
    newshe.Cells(s, 1).Select
    ActiveSheet.Paste '执行粘贴
    wb.Close '关闭工作簿
    na = Dir() '取下一个工作簿
Loop
Application.DisplayAlerts = True
newshe.Activate

'以下下进行格式调整
Columns("A:A").Select
Application.CutCopyMode = False
Selection.NumberFormatLocal = "yyyy-mm-dd"
Columns("B:B").Select
Selection.NumberFormatLocal = "00000"


Range("A1").Select
newshe.UsedRange.Select '全选

Call 匹配
ThisWorkbook.Worksheets(3).Activate
End Sub

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值