Jei norite importuoti daug duomenų iš uždarytos darbaknygės, tai galite padaryti naudodami ADO ir toliau pateiktą makrokomandą.
Jei norite gauti duomenis iš kito darbalapio, o ne iš uždaro darbo knygos pirmojo darbalapio,
turite kreiptis į vartotojo apibrėžtą pavadintą diapazoną. Žemiau esančią makrokomandą galima naudoti taip („Excel 2000“ ar naujesnėje versijoje):
„GetDataFromClosedWorkbook“ „C: FolderName \ WorkbookName.xls“, „A1: B21“, „ActiveCell“, „False GetDataFromClosedWorkbook“ „C: \ FolderName \ WorkbookName.xls“, „MyDataRange“, Range („B3“), „True Sub GetDataFromC“ šaltinis String, SourceRange as String, _ TargetRange As Range, IncludeFieldNames as Boolean) "reikia nuorodos į" Microsoft ActiveX "duomenų objektų biblioteką", jei "SourceRange" yra diapazono nuoroda: "tai grąžins duomenis iš pirmojo" SourceFile "darbalapio", jei "SourceRange" yra apibrėžta vardo nuoroda: „tai grąžins duomenis iš bet kurio„ SourceFile “darbalapio“. = {„Microsoft Excel“ tvarkyklė (*.xls)}; " & _ "ReadOnly = 1; DBQ =" & SourceFile Set dbConnection = Naujas ADODB.Connection On Error GoTo InvalidInput dbConnection.Open dbConnectionString 'atidaryti duomenų bazės ryšį Set rs = dbConnection.Execute ("[" & SourceRange & "]") Nustatykite TargetCell = TargetRange.Cells (1, 1) If IncludeFieldNames then For i = 0 To rs.Fields.Count - 1 TargetCell.Offset (0, i). Formula = rs.Fields (i). Pavadinimas Kitas i Set TargetCell = TargetCell .Offset (1, 0) End If TargetCell.CopyFromRecordset rs rs.Close dbConnection.Close 'uždaryti duomenų bazės ryšį Set TargetCell = Nothing Set rs = Nothing Set dbConnection = Nothing On Error GoTo 0 Exit Sub InvalidInput: MsgBox "Šaltinio failas arba šaltinio diapazonas netinkamas! ", _ vbExclamation," Gauti duomenis iš uždarytos darbaknygės "Pabaiga
Kitas metodas, kuriame nenaudojamas metodas „CopyFromRecordSet“ Naudodami toliau pateiktą makrokomandą galite importuoti ir geriau kontroliuoti iš „RecordSet“ pateiktus rezultatus.
Sub TestReadDataFromWorkbook () 'užpildo duomenis iš uždarytos darbaknygės į aktyvų langelį Dim tArray As Variant, r Kaip ilgai, c As Long tArray = ReadDataFromWorkbook ("C: \ FolderName \ SourceWbName.xls", "A1: B21")' neperkėlus 'For r = LBound (tArray, 2) to UBound (tArray, 2)' for c = LBound (tArray, 1) To UBound (tArray, 1) 'ActiveCell.Oset (r, c). Formula = tArray ( c, r) 'Kitas c' Kitas r 'su perkėlimu (tArray, 2) ActiveCell.Offset (r - 1, c - 1). Formulė = tArray (r, c) Kitas c Kitas r Pabaiga Sub privati funkcija ReadDataFromWorkbook (SourceFile As String, SourceRange As String) As Variant 'reikia nuorodos į „Microsoft ActiveX“ duomenų objektų biblioteką “, jei„ SourceRange “yra diapazono nuoroda:„ ši funkcija gali grąžinti duomenis tik iš pirmojo „SourceFile“ darbalapio “, jei„ SourceRange “yra apibrėžta vardo nuoroda:„ ši funkcija gali grąžinti duomenis iš m bet kuriame „SourceFile“ „SourceRange“ darbalapyje turi būti diapazono antraščių pavyzdžiai: 'varRecordSetData = ReadDataFromWorkbook ("C: \ FolderName \ SourceWbName.xls", "A1: A21")' varRecordSetData = ReadDataFromWorkbook ("C: FolderName \ SourceWabbook xls "," A1: B21 ") 'varRecordSetData = ReadDataFromWorkbook (" C: \ FolderName \ SourceWbName.xls "," DefinedRangeName ") Dim dbConnection Kaip ADODB.Connection, rs Kaip ADODB.Recordset Dim dbConnectionString As String = dbConne {„Microsoft Excel“ tvarkyklė (*.xls)}; ReadOnly = 1; DBQ = "& SourceFile Set dbConnection = New ADODB.Connection On Error GoTo InvalidInput dbConnection.Open dbConnectionString 'atidarykite duomenų bazės ryšį Set rs = dbConnection.Execute (" [" & SourceRange & "]") On Error GoTo 0 ReadDataFromWorkbook = rs.GetRows 'grąžina dviejų matmenų masyvą su visais įrašais rs rs.Uždaryti dbConnection.Close' uždaryti duomenų bazės ryšį Set rs = Nothing Set dbConnection = Nothing On Error GoTo 0 Išeiti Funkcija InvalidInput: MsgBox "Šaltinio failas arba šaltinio diapazonas netinkamas! ", vbExclamation," Gauti duomenis iš uždarytos darbaknygės "Set rs = Nothing Set dbConnection = Nothing End Function
Makrokomandos pavyzdyje daroma prielaida, kad jūsų VBA projektas pridėjo nuorodą į ADO objektų biblioteką.
Tai galite padaryti iš VBE, pasirinkę meniu Įrankiai, Nuorodos ir pasirinkę „Microsoft“
„ActiveX“ duomenų objektai x.x objektų biblioteka.
Jei norite importuoti arba eksportuoti duomenis, naudokite ADO arba DAO.