Triki, sztuczki, żeby przyspieszyć sobie pracę z Excelem. Kursy Excel, Kursy Access, Kursy VBA Programowanie VBA, Excel, Access
Pokazywanie postów oznaczonych etykietą VBA. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą VBA. Pokaż wszystkie posty
piątek, 9 maja 2014
niedziela, 23 marca 2014
MAKRO - Usuwanie zbędnych spacji z zaznaczonych komórek
Często zdarza mi się dostać od kogoś plik w którym ktoś na początku lub końcu komórki w tekście wpisał spacje.
Jak się ich pozbyć?
Jak się ich pozbyć?
KOD
Sub usunZbedneSpacje()
On Error Resume Next
Dim komorka As Range '
zmienna która będzie wskazywała aktualną komórkę
For Each komorka In Selection ' dla każdej zaznaczonej komórki rób:
' trim - usuwa białe znaki z obu lewej i prawej tekstu.
komorka = Trim(komorka) ' wynik zapisujemy z powrotem do tej samej komórki
Next komorka ' koniec for. Czyli przejdź do następnej komórki
End Sub
KONIEC! Widzisz jakie proste?
A jeśli chcemy coś więcej....
Modyfikacje:
Potrzebujemy usunąć również podwójne spacje ze środka tekstu
wystarczy zamiast funkcji Trim użyć funkcji WorksheetFunction.Trim
czyli linijka może wyglądać tak:
komorka = WorksheetFunction.Trim(komorka)
Tutaj użyliśmy funkcji która dodatkowo wszystkie podwójne spacje zamienia na pojedyncze.
Jeśli chcesz usunąć wszystkie spacje z komórek.
komorka = replace(komorka, " ", "")
Funkcja Replace działa jak znajdź i zamień. Tutaj chcemy, żeby w komórce znalazł wszystkie spacje (" ") i je zlikwidował, czyli zamienił na nic ("")
Jeśli potrzebujemy usunąć spacje z konkretnego zakresu (a nie z zaznaczenia)
Pętla For each jest tak fajna, że możesz użyć jej również w tym przypadku.
Poniżej przykład pętli, która iteruje po wszystkich komórkach z zakresu od A1 do B20 oraz w kolumnie C:
For Each
komorka In Range("A1:B20,C:C")
Jeśli masz pytania / uwagi / propozycje jakie makra byłyby Ci potrzebne to pisz w komentarzach
niedziela, 16 czerwca 2013
Wysyłanie maila z Excela przy użyciu VBA. cz1
Pierwszy merytoryczny post:)
Przykład 1.
Sprawa jest prosta, wystarczy napisać:
Powyższy kod wysyła maila pod wskazany adres o temacie "Bardzo ważny plik".
Treść maila jest pusta, a w załączniku znajduje się plik w którym jest napisane makro.
Jeśli chcemy wysłać inny plik, to:
ten kod wyśle aktywny skoroszyt (plik)
a ten kod wyśle plik o nazwie Warszawa.xls pod wskazany adres:
Uwaga, aby odwołać się do skoroszytu poprzez obiekt Workbook plik musi być wcześniej otwarty, a po wysłaniu najlepiej go zamknąć.
Parametr
A metoda bez argumentu sprawi, że Excel zapyta użytkownika czy zapisać zmiany.
Przykład 2.
Przyjmijmy, że arkusz do wysłania nosi nazwę kalkulator i znajduje się on w pliku Warszawa.xls który to plik jest otwarty.
W tym przypadku musimy skopiować arkusz "kalkulator" do nowego pliku.
Wysłać mailem nowy plik
zamknąć nowy plik bez zapisywania
Przykład 3.
Musimy zapisać plik na dysku. (Użyję do tego katalogu C:\tmp\)
wysłać maila
skasować plik
Przykład 4
Dokumentację tej funkcji możecie znaleźć tutaj ShellExecute
Korzystamy z mechanizmu, który został wymyślony w celu łatwego umieszczenia hiperłącza do wysłania maila.
%0a to kod ASCII nr 10, który umieści zrobi nam enter(linuksowy) w miejscu gdzie go urzyjemy
czyli "Nie ma załącznika" wyświetli się w drugiej linii
Na początku muszę powiedzieć, że jest kilka sposobów wysyłania maili z poziomu VBA.
Tutaj omówimy 2:- Pierwszy to użycie mechanizmu Excela i domyślnego klienta pocztowego.
Minusem tego rozwiązania jest to, że mail który wysyłamy jest zawsze z załącznikiem ( w tym załączniku jest jakiś plik Excela). I niestety nie można dodać treści maila
Drugim sposobem jest wywołanie odpowiedniego polecenia Windowsa za pomocą VBA.
Tutaj niestety nie wyślemy załącznika, ale za to mamy wpływ na treść i temat
- Sposób trzeci to użycie programu MS Outlook.
Tym sposobem możemy zrobić wszystko, a minusem jest niestety posiadanie takowego programu.
W tym poście zajmiemy się pierwszymi dwoma
Przykład 1.
Chcemy napisać makro, który wyśle nam cały plik pod konkretny adres mailowy.
Sprawa jest prosta, wystarczy napisać:Powyższy kod wysyła maila pod wskazany adres o temacie "Bardzo ważny plik".
Treść maila jest pusta, a w załączniku znajduje się plik w którym jest napisane makro.
Jeśli chcemy wysłać inny plik, to:
ten kod wyśle aktywny skoroszyt (plik)
a ten kod wyśle plik o nazwie Warszawa.xls pod wskazany adres:
Uwaga, aby odwołać się do skoroszytu poprzez obiekt Workbook plik musi być wcześniej otwarty, a po wysłaniu najlepiej go zamknąć.
Parametr
falsemetody Close mówi, żeby nie zapisywać zmian.
truewymusiłoby zapisanie zmian
A metoda bez argumentu sprawi, że Excel zapyta użytkownika czy zapisać zmiany.
Przykład 2.
Wysyłamy jeden arkusz na adres "jakis_adres@gmail.com"
Przyjmijmy, że arkusz do wysłania nosi nazwę kalkulator i znajduje się on w pliku Warszawa.xls który to plik jest otwarty.
W tym przypadku musimy skopiować arkusz "kalkulator" do nowego pliku.
Wysłać mailem nowy plik
zamknąć nowy plik bez zapisywania
Przykład 3.
Tak jak w przykładzie 2, ale chcemy, żeby plik nazywał się "raport.xls"
Musimy zapisać plik na dysku. (Użyję do tego katalogu C:\tmp\)wysłać maila
skasować plik
Przykład 4
Wysyłanie maila bez załącznika
Na górze modułu umieszczamy import z biblioteki shell32.dllDokumentację tej funkcji możecie znaleźć tutaj ShellExecute
Korzystamy z mechanizmu, który został wymyślony w celu łatwego umieszczenia hiperłącza do wysłania maila.
%0a to kod ASCII nr 10, który umieści zrobi nam enter(linuksowy) w miejscu gdzie go urzyjemy
czyli "Nie ma załącznika" wyświetli się w drugiej linii
Subskrybuj:
Posty (Atom)