VBATools

Wyszukanie wartości z pliku Excela i zwrot do Word

by on Sep.20, 2011, under Excel, Porady, Word

Poniższy kod pokazuje jak łatwo odwołać się do pliku Excela z innej aplikacji MS Office. Przytoczona procedura otwiera plik, odwołuje się do arkusza a następnie określa wielkość przeszukiwanych danych w kolumnie A. Zwracany wynik to wartość z kolumny B (analogia do wyszukaj pionowo, jednakże realizowany w pętli). Możemy też realizować działania za pośrednictwem funkcji arkuszowych xlApp.WorksheetFunction, które to będą dostępne podobnie jak realizowane z poziomu arkusza.

Aby nasza procedura była elegancka dla oka, uruchamianie Excela następuje w trybie ukrytym. Testy na kodzie zaleca się jednak wykonywać tak aby arkusz został uwidoczniony oczom programisty, z uwagi na możliwość błędu i zwielokrotnienia aplikacji w osobnych instancjach w trybie ukrytym.

Option Explicit

Private Sub Wyszukaj_z_Excela()
'MVP OShon from VBATools.pl
'dodaj referencje Tools/References/Microsoft Excel x,xx Object Lib.
On Error GoTo blad
Dim xlApp As Excel.Application
Dim xlWKB As Excel.Workbook
Dim xlWKS As Excel.Worksheet
Dim x&, max_row&, szukana$
Set xlApp = New Excel.Application
 xlApp.Visible = False                                     'nie pokazujemy Excela
Set xlWKB = xlApp.Workbooks.Open("C:\Temp\Baza_umowy.xls")   'nazwa pliku
Set xlWKS = xlWKB.Sheets("Tabela umowy")                   'nazwa arkusza
max_row = xlWKS.Cells(xlWKS.Rows.Count, "A").End(xlUp).Row 'ilosc danych w kol A
For x = 1 To max_row
 With xlWKS.Cells(x, 1)                                    'przeszukujemy A
 If .Value = 185 Then                                      'szukamy liczby 185
 szukana = .Offset(, 1).Value                              'zwracamy wartość kol B
 Exit For
 End If
 End With
Next x
 xlApp.Quit                                                'wyłączamy Excela
 MsgBox szukana                                            'zwracamy wynik jako komunikat
 Selection = szukana                                       'wstawienie w miejscu kursora Word

koniec:
On Error Resume Next
 Set xlWKS = Nothing                                       'zwalniamy pamięć
 Set xlWKB = Nothing
 Set xlApp = Nothing
Exit Sub
blad:
 MsgBox "Błąd: " & Err.Number & vbCr & Err.Description, _
 vbExclamation, "VBATools.pl"
Resume koniec
End Sub

Pow. kod umieszczamy w module dokumentu [Alt+F11] Menuinsertmodule, a wywołanie pow. procedury jest realizowane po przez skrót klawiszowy [Alt+F8] lub dzięki wcześniejszemu przypisaniu procedury do przycisku na dokumencie lub z paska szybkiego wybierania.

 

(c) Shon Oskar – www.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.
:, , , ,

Leave a Reply