五维思考

学习要加,骄傲要减,机会要乘,懒惰要除。 http://www.5dthink.cn

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
'======================================================= 
'1、循环单元格取数,效率最低,不可取,初学者易犯 
'2、区域相等取数 
'3、复制粘贴取数 
'4、借助数组取数  
'————以上4种都需要打开外部工作簿 
'5、宏表函数取数(不打开工作簿)  
'======================================================= 
Private Sub GetValueFromOpenedWorkbook() 
'打开工作簿取数
    MyWorkbook As Workbook
    Dim MyArry As Variant
    Set MyWorkbook = Application.Workbooks.Open("D:\外部工作表.xlsx")

    '方法1: 
    '    Dim i As Integer, j As Integer
    '    n2 = MyWorkbook.Sheets.Count
    '    For i = 7 To 56
    '        For j = 4 To 10
    '            Sheets("外部工作表").Cells(i, j) = MyWorkbook.Sheets("外部工作表").Cells(i, j)
    '        Next j
    '    Next i
    '方法2:
    '    ThisWorkbook.Sheets("外部工作表").Range("d5:j56").Value = MyWorkbook.Sheets("外部工作表").Range("d5:j56").Value
    '方法3:
    '    ThisWorkbook.Sheets("外部工作表").Range("d5:j56").Copy
    '    MyWorkbook.Sheets("外部工作表").Range("d5").PasteSpecial Paste:=xlPasteValues
    '方法4:
    MyArry = MyWorkbook.Sheets("外部工作表").Range("d5:j56").Value
    ThisWorkbook.Sheets("外部工作表").Range("d5:j56") = MyArry
    MyWorkbook.Close SaveChanges:=False
    Set MyWorkbook = Nothing 
End Sub 

'方法5:  
Sub GetValueFromClosedWorkbook() 
    '不用打开工作簿取数
    p = "D:\"
    f = "外部工作表.xlsx"
    s = "外部工作表"
    Application.ScreenUpdating = False
    For r = 7 To 56
        For c = 4 To 10
            a = Cells(r, c).Address
            Cells(r, c) = GetValue(p, f, s, a)
        Next c
    Next r
    Application.ScreenUpdating = True 
End Sub

Private Function GetValue(path, file, sheet, ref) 
    '   从未打开的Excel文件中检索数据
    Dim arg As String
    '   确保该文件存在
    If Right(path, 1) <> "" Then path = path & ""
    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
        Exit Function
    End If
    '   创建变量
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)
    '   执行XLM 宏
    GetValue = ExecuteExcel4Macro(arg) 
End Function

 

posted on 2017-02-23 20:39  五维思考  阅读(2190)  评论(0编辑  收藏  举报

QQ群:1. 全栈码农【346906288】2. VBA/VSTO【2660245】