Moje doświadczenia z Excelem, Accesem i programowaniem w VBA

Wpisy z tagiem: obiekt

wtorek, 06 października 2015

Z poziomu kodu VBA (zarówno w Excelu jak i Accessie) można też wysyłać maile. Jak to zrobić z wykorzystaniem programu Microsoft Outlook?
Przykładowe uproszczone rozwiązanie wygląda tak:

Public Sub WyslijMail()
Dim Poczta As Object
Dim MojMail As Object

Set Poczta = CreateObject("outlook.application")
Set MojMail = Poczta.createitem(0)
    With MojMail
        .To = "AdresDo@domena.pl"
        .CC = "AdresDW@DOMENA.PL"
        .Subject = "Temat maila"
        .ReadReceiptRequested = False
        .OriginatorDeliveryReportRequested = False
        .body = "Treść maila"
        .Attachments.Add "c:\Folder\MojZalacznik.xlsx"
        .Display
        '.send
    End With
End Sub


Jak widać - tworzymy obiekt Outlook.Application oraz w jego ramach - nową pozycję czyli mail (tu Obiekt MojMail).
Potem wystarczy tylko ustawić poszczególne właściwości maila. W przykładzie są one wpisane na sztywno, ale oczywiście można odwołać się tu np. do komórek arkusza z zapisanymi wartościami.
Makro może być zaimplementowane także w kodzie VBA w Accessie.

Najważniejsze właściwości to:

To - adresat właściwości. Jeżeli adresatów jest kilku - ich adresy mailowe powinny być oddzielone średnikami;
CC - adresy do wiadomości
UCC - ukryte adresy do wiadomości
Subject - temat maila
Body - temat maila
ReadReceiptRequested  - żądanie potwierdzenia odczytu maila (ustawione na False lub True)
OriginatorDeliveryReportRequested  - żądanie potwierdzenia dostarczenia maila (ustawione na False lub True)
Attachments.Add - dodanie załącznika do maila





Jeżeli mail ma być wysłany automatycznie, bez wyświetlania go na ekranie - stosujemy metodę Send. Chcąc obejrzeć tak stworzoną wiadomość mailową (a wysłać ręcznie) musimy zastosować metodę Display.

 

------------------------------------------------------------------------------


 

wtorek, 29 maja 2012

Nazwa pliku w kodzie VBA wyznaczana jest poprzez słowo kluczowe Name.
Chcąc wyznaczyć nazwę aktualnie otwartego pliku wystarczy prosta funkcja:

Private Function Nazwa_Pliku()

Nazwa_Pliku=ActiveWorkbook.Name

End Function

Właściwość Name obiektu ActiveWorkbook wyznacza nazwę aktywnego skoroszytu.


Ścieżka dostępu do katalogu w kodzie VBA wyznaczana jest poprzez słowo kluczowe Path.
Chcąc wyznaczyć katalog aktualnie otwartego pliku wystarczy prosta funkcja:

Private Function Nazwa_Katalogu()

Nazwa_Katalogu=ActiveWorkbook.Path

End Function

Właściwość Path obiektu ActiveWorkbook wyznacza właśnie katalog, w którym znajduje się aktywny skoroszyt.


czwartek, 02 czerwca 2011

Obiekt Application.WorksheetFunction służy do wstawiania funkcji arkuszowych Excela do kodu VBA. W prosty sposób można za jego pomocą użyć funkcji Excela wymagających argumentów i to zmiennych.
Lista dostępnych za jego pomocą funkcji widoczna jest w rozwinięciu w edytorze VBA:

WorksheetFunction 

Zobaczmy to na przykładzie funkcji Excela Średnia.

 

Public Function ObliczSrednia(JakiZakres As Range)

ObliczSrednia = Application.WorksheetFunction.Average(JakiZakres)

End Function

Tak wywołana funkcja użytkownika wyznacza średnią z wprowadzonego podczas wstawiania funkcji zakresu (argument JakiZakres)

WorksheetFunction 

W analogiczny sposób można wstawić i wykorzystać wszystkie inne funkcje obiektu.

 


Warto poczytać:
   

 

 

wtorek, 14 września 2010

Mała, bardzo pożyteczna instrukcja oszczedzająca czas i upraszczająca kod. Umożliwia odwołanie się do obiektu bez ciągłego powtarzania jego nazwy.
Wyobraźmy sobie, że chcemy zmienić formatowanie np. w Arkuszu1, w komórkach A1:A10.
Standardowy zapis wyglada tak:

Worksheets("Arkusz1").Range("A1:A10").Interior.Color = 65535
- zmiana koloru tła
Worksheets("Arkusz1").Range("A1:A10").Font.Name = "Freestyle Script"
- zmiana czcionki
Worksheets("Arkusz1").Range("A1:A10").Font.Underline = True
- podkreślenie czcionki 

Z wykorzystaniem instrukcji With ten sam zapis wygląda tak:

With Worksheets("Arkusz1").Range("A1:A10")
         .Interior.Color = 65535 
         .Font.Name = "Freestyle Script"
         .Font.Underline = True
End With

Prawda, że krócej i "czyściej"? Instrukcja moze być wykorzystywana w stosunku do wszystkich kolekcji.

wtorek, 07 września 2010

Pętla For Each ...Next jest specyficznym rodzajem pętli For ...Next, o której pisałam wcześniej tu:
Pętla VBA: For ...Next
Pętla For ... Next bardziej rozbudowana
Działa podobnie, ale w stosunku do kolekcji i obiektów
(zob. VBA obiekty Excela)
W przypadku obiektu Range, będącego kolekcją komórek - pętla działa w ramach komórek zaznaczonego obszaru. Przechodząc przez kolejne komórki obszaru - możemy je odczytywać, zapisywać czy zmieniać formatowanie.

Najlepiej pokazać to na prostym przykładzie. Załóżmy, że mamy arkusz z liczbami w poszczególnych komórkach:

arkusz Excela

Naszym zadaniem jest pomnożenie każdej komóki przez 2. Jak będzie wyglądał kod takiej procedury?


Public Sub Pomnoz()
Dim Komorka As Range    'zmienna określająca pojedynczą komórkę obszaru

For Each Komorka In Range("A2:A10")
    Komorka.Value = 2 * Komorka.Value
Next

End Sub

Wartość zmiennej Komorka za każdym kolejny przejściem pętli odnosi się do kolejnych komórek Excela z zaznaczonego obszaru Range - w tym przypadku A2 do A10. Efekt końcowy:

arkusz Excela

Oczywiście w tej pętli można stosować wszystkie metody i właściwości związane z dana kolekcją obiektów. Dla obiektu Range są one opisane tu:
Obiekty VBA - Range

 

Obiekt Range oznacza obszar - zakres komórek w arkuszu Excela. Może też być pojedyńczą komórką. Ma on swoje charakterystyczne właściwości i metody.
Do najczęściej wykorzystywanych należą:

Właściwości
Value wartość poszczególnych komórek w obszarze
Font ustawienia czcionki. Ta właściwość jest jednocześnie sama obiektem, definiowanym przez takie atrybuty jak Bold (pogrubienie czcionki), Color (kolor czcionki), Underline (podkreślenie), Italic (kursywa), Size (wielkość) czy FontStyle (rodzaj czcionki)
Interior wypełnienie tła
Formula formuła obliczająca wartość
Column właściwości kolumny
Row właściwości wiersza

 

Metody

Clear czyści wszystkie właściwości komórki - wartość, ustawienia czcionki, kolor itp.
W ramach tej metody można ograniczyć się do usuwania tylko niektóych właściwości np. ClearComments (czyszczenie komentarzy), ClearFomats (czyszczenie formatowania komórki) itd.
Activate w odniesieniu do pojedynczej komórki - aktywują ją
AddComment dodaj komentarz
Copy kopiowanie obszaru
Paste wklejanie obszaru
Select zaznaczanie obszaru

Inne właściwości i metody możemy odnaleźć w edytorze VBA. Wystarczy wpisać np.
Range(A1:A6).
Po wstawieniu kropki - otwiera się okienko z wszystkim dostępnymi metodami i właściwościami dla danego słwoa kluczowego (w tym przypadku dla obiektu Range).

VBA - metody i właściwości

poniedziałek, 06 września 2010

Pisząc kod VBA w Excelu często chcemy odwołać się do skoroszytu czy jego charakterystycznych części. W VBA nazywane są one obiektami. Najbardziej typowe to skoroszyt, arkusz, zakres komórek czy wykres. Zbiór obiektów o podobnych właściwościach nazywany jest kolekcją.
Najbardziej typowe obiekty to:

  • Application - aplikacja. Odwołanie do Excela, ale również do innych aplikacji
  • Workbook - skoroszyt
  • Worksheet - arkusz
  • Range - zakres komórek
  • Window - okno

 Każdy obiekt ma swoje charakterystyczne właściwości i metody, które można w stousunku do niego zastosować.

| < Listopad 2017 > |
Pn Wt Śr Cz Pt So N
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      


Książki warte polecenia
zobacz szczegóły...


A tu oferta na dziś:





ministat liczniki.org



Napisz do mnie!