【VBA、Excel】2018.01.25解答excel吧友问题代码

3 篇文章 0 订阅

本代码提供一个示例

代码功能:以当前工作薄sheet1的第一列中的数据为名,新建工作薄(有多少列建多少工作薄),并将当前工作薄sheet2中的数据复制到新建的工作薄中;复制规则为:当前工作薄sheet2中第k列的数据复制到第k个新建的工作薄的sheet1中

涉及知识:vba在指定目录新建工作薄、对指定路径中的工作薄的特定工作表进行操作

Sub test()
    Dim row, patht, pathf, temp
    Dim col As Integer
    row = 2
    col = 1
    pathf = ThisWorkbook.Path + "\" + ThisWorkbook.Name
    Do While Worksheets("sheet1").Cells(row, 1) <> ""
        patht = Create_New_Workbook(Worksheets("sheet1").Cells(row, 1))
        temp = My_Copy(col, pathf, patht)
        col = col + 1
        row = row + 1
    Loop
End Sub

Function Create_New_Workbook(WorkBookName As String) As String  '在当前文件夹内新建工作薄并返回工作薄路径
    Application.ScreenUpdating = False
    Dim gzb As Workbook
    mypath = ThisWorkbook.Path & "\" & WorkBookName & ".xlsx"
    Set gzb = Workbooks.Add
    gzb.SaveAs mypath  '保存工作薄
    gzb.Close
    Application.ScreenUpdating = True
    Create_New_Workbook = mypath
End Function

Function My_Copy(col As Integer, f As Variant, t As Variant)
    '将f工作薄中的数据复制到t工作薄内
    Application.ScreenUpdating = False
    Dim row
    Set wbf = GetObject(f)
    Set wbt = GetObject(t)   
  For row = 1 To wbf.Worksheets("sheet2").UsedRange.Rows.Count 'wbf.Worksheets("sheet2").UsedRange.Rows.Count工作表中已经被使用的行数
         wbt.Worksheets("sheet1").Cells(row, 1) = wbf.Worksheets("sheet2").Cells(row, col)
    Next row
Windows(wbt.Name).Visible = True 'getobject获取excel文件控制权后会以隐藏式方式打开,可以用windows(WB.NAME).visible=true方式取消隐藏
    wbt.Save
    wbt.Close
    
    Application.ScreenUpdating = True
End Function

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值