注册 登录
Office中国论坛/Access中国论坛 返回首页

todaynew的个人空间 http://www.office-cn.net/?144436 [收藏] [复制] [分享] [RSS]

日志

Excel之间数据传递

已有 1073 次阅读2009-3-19 12:54 |个人分类:习作|

Function GetFolder() As String
'文件及文件夹路径函数
    Dim dlgOpen As FileDialog
    Dim i As Long, j As Long
    Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
    With dlgOpen
        .AllowMultiSelect = True
        .Show
    End With
    i = dlgOpen.SelectedItems.Count
    If i > 0 Then
        GetFolder = ""
        For j = 2 To i
            GetFolder = GetFolder & dlgOpen.SelectedItems(j) & ";"
        Next
        j = 1
        GetFolder = GetFolder & dlgOpen.SelectedItems(j)
    Else
        GetFolder = dlgOpen.InitialFileName '或GetFolder = CurDir() & "\"
    End If
    Set dlgOpen = Nothing
End Function
 
方法一:
Sub 导入数据()
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Dim strname As String
Dim shtname As String
On Error GoTo 导入_Err
    ActiveSheet.Unprotect                                                   '解锁
    shtname = Range("Q1") & "月"                                            '获取sheet名称
    strname = GetFolder                                                     '获取sheet文件名称
    If InStr(strname, Range("B3")) > 0 Then
        xlApp.Application.Visible = True
        Set xlBook = xlApp.Workbooks.Open(strname)
        Set xlsheet = xlBook.Worksheets(shtname)
        xlsheet.Activate
        xlsheet.Range("C9:Q66").Select
        xlsheet.Range("C9:Q66").Copy                                        '拷贝数据
        Range("C9:Q66").Select
        ActiveSheet.Paste                                                   '粘贴数据
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True '锁定
        Range("C9").Select
        xlApp.Quit
        Set xlApp = Nothing
        Set xlBook = Nothing
        Set xlsheet = Nothing
    Else
        MsgBox "打开文件错误!请打开" & Range("B3") & "表格文件。"
    End If
   
导入_Exit:
            xlApp.Quit
            Exit Sub
导入_Err:
            MsgBox "错误!请退出!"
            Resume 导入_Exit
End Sub

方法二: 
Sub 导入2()
Dim strname As String
Dim shtname As String
On Error GoTo 导入_Err
    ActiveSheet.Unprotect                                                                '解锁
    shtname = Range("Q1") & "月"
    strname = GetFolder
    If InStr(strname, Range("B3")) > 0 Then
        Application.Workbooks.Open strname                                               '打开文件
        Windows("收发存汇总月报.xls").Activate
        Windows(Range("B3") & ".xls").Activate
        Sheets(shtname).Select
        Range("C9:Q66").Select
        Selection.Copy
        Windows("收发存汇总月报.xls").Activate
        Range("C9:Q66").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False                                                    '选择性粘贴
         ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True          '锁定
        Range("C9").Select
        Windows(Range("B3") & ".xls").Close
    Else
        MsgBox "打开文件错误!请打开" & Range("B3") & "表格文件。"
    End If
导入_Exit:
            Exit Sub
导入_Err:
            MsgBox "错误!请退出!"
            Resume 导入_Exit
End Sub

发表评论 评论 (1 个评论)

回复 tmtony 2009-3-19 23:58
谢谢分享!!

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-13 02:50 , Processed in 0.069896 second(s), 18 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部