Ako želite uvesti mnogo podataka iz zatvorene radne knjige, to možete učiniti pomoću ADO -a i dolje navedene makronaredbe.
Ako želite dohvatiti podatke s drugog radnog lista osim s prvog radnog lista u zatvorenoj radnoj knjizi,
morate se obratiti korisnički definiranom rasponu naziva. Donja makronaredba može se koristiti ovako (u Excelu 2000 ili novijoj):
GetDataFromClosedWorkbook "C: \ FolderName \ WorkbookName.xls", "A1: B21", ActiveCell, False GetDataFromClosedWorkbook "C: \ Ime mape \ WorkbookName.xls", "MyDataRange", Raspon ("SubCorf" String, SourceRange As String, _ TargetRange As Range, IncludeFieldNames As Boolean) 'zahtijeva referencu na knjižnicu Microsoft ActiveX Data Objects' ako je SourceRange referenca raspona: 'ovo će vratiti podatke s prvog radnog lista u SourceFile -u' ako je SourceRange definirano ime: 'ovo će vratiti podatke s bilo kojeg radnog lista u SourceFile -u' SourceRange mora sadržavati zaglavlja raspona 'Dim dbConnection As ADODB.Connection, rs As ADODB.Recordset Dim dbConnectionString As String Dim TargetCell As Range, i As Integer dbConnectionString = "DR = {Microsoft Excel upravljački program (*.xls)}; " & _ "ReadOnly = 1; DBQ =" & SourceFile Set dbConnection = New ADODB.Connection On Error GoTo InvalidInput dbConnection.Open dbConnectionString 'open the database connection Set rs = dbConnection.Execute ("[" & SourceRange & "] TargetCell = TargetRange.Cells (1, 1) If IncludeFieldNames Zatim za i = 0 Za rs.Fields.Count - 1 TargetCell.Offset (0, i). Formula = rs.Fields (i). Ime Sljedeće i Postavim TargetCell = TargetCell .Offset (1, 0) End If TargetCell.CopyFromRecordset rs rs.Zatvori dbConnection.Close 'zatvori vezu s bazom podataka Postavite TargetCell = Ništa nije postavljeno rs = Ništa nije postavljeno dbConnection = Ništa na pogrešku GoTo 0 Izađi s Sub InvalidInput: MsgBox "Izvorna datoteka ili izvorni raspon je nevažeći! ", _ vbExclamation," Dohvati podatke iz zatvorene radne knjige "Završi pod
Druga metoda koja ne koristi metodu CopyFromRecordSet S dolje navedenom makronaredbom možete izvršiti uvoz i imati bolju kontrolu nad rezultatima vraćenim iz zapisa zapisa.
Pod TestReadDataFromWorkbook () 'popunjava podatke iz zatvorene radne knjige u aktivnoj ćeliji Dim tArray As Variant, r As Long, c As Long tArray = ReadDataFromWorkbook ("C: \ Ime mape \ IzvorWbName.xls", "A1: B21")' bez transponiranja 'Za r = LBound (tArray, 2) U UBound (tArray, 2)' For c = LBound (tArray, 1) U UBound (tArray, 1) 'ActiveCell.Offset (r, c). Formula = tArray ( c, r) 'Next c' Next r 's transponiranjem tArray = Application.WorksheetFunction.Transpose (tArray) Za r = LBound (tArray, 1) U UBound (tArray, 1) Za c = LBound (tArray, 2) U UBound (tArray, 2) ActiveCell.Offset (r - 1, c - 1) .Formula = tArray (r, c) Next c Sljedeće r End Sub Privatna funkcija ReadDataFromWorkbook (SourceFile As String, SourceRange As String) Kao varijanta 'zahtijeva referencu u knjižnicu Microsoft ActiveX Data Objects 'ako je SourceRange referenca raspona:' ova funkcija može vratiti podatke samo s prvog radnog lista u SourceFile -u 'ako je SourceRange definirana referenca imena:' ova funkcija može vratiti podatke iz m bilo koji radni list u datoteci SourceFile 'Izvorni raspon mora sadržavati primjere zaglavlja raspona:' varRecordSetData = ReadDataFromWorkbook ("C: \ Ime mape \ IzvorWbName.xls", "A1: A21") 'varRecordSetData = ReadDataFromWorkbookNameName: "C: xls "," A1: B21 ") 'varRecordSetData = ReadDataFromWorkbook (" C: \ Ime mape \ IzvorWbName.xls "," Definirano ime raspona ") Dim dbConnection Kao ADODB.Connection, rs Kao ADODB.Recordset Dim dbC {Microsoft Excel Driver (*.xls)}; ReadOnly = 1; DBQ = "& SourceFile Set dbConnection = New ADODB.Connection On Error GoTo InvalidInput dbConnection.Open dbConnectionString 'otvori vezu za bazu podataka rs = dbConnection.Execute (" & SourceRange & "]") On Error GoTo 0 ReadDataFromWorkbook = rs.GetRows 'vraća dvožilni niz sa svim zapisima u rs rs.Zatvori dbConnection.Close' zatvori vezu s bazom podataka Postavite rs = Ništa nije postavljeno dbConnection = Ništa s greškom Idi na 0 Izlazna funkcija InvalidInput: MsgBox "Izvorna datoteka ili izvorni raspon nije važeći! ", vbExclamation," Dobijte podatke iz zatvorene radne knjige "Postavi rs = Ništa Postavi dbConnection = Ništa Kraj funkcija
Primjer makroa pretpostavlja da je vaš VBA projekt dodao referencu u biblioteku objekata ADO.
To možete učiniti iz VBE -a odabirom izbornika Alati, Reference i odabirom Microsofta
ActiveX Data Objects x.x Knjižnica objekata.
Upotrijebite ADO ako možete birati između ADO -a i DAO -a za uvoz ili izvoz podataka.