Triki, sztuczki, żeby przyspieszyć sobie pracę z Excelem. Kursy Excel, Kursy Access, Kursy VBA Programowanie VBA, Excel, Access
Pokazywanie postów oznaczonych etykietą Visual Basic for Application. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Visual Basic for Application. 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)