Pokazywanie postów oznaczonych etykietą excel. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą excel. Pokaż wszystkie posty

poniedziałek, 31 stycznia 2011

EXCEL VBA - kopiowanie tabeli do nowego arkusza i zmiana nazwy zakładki

Makro kopiuje tabele zawierającą dane z arkusza, otwiera plik "archiwum" tworzy tam zakładkę, wkleja dane i zmienia nazwę na podstawie jednej komórki z tej listy. Makro jest w pliku "DANE.xls"


Sub archiwum() 
Dim nazwa As String
' określenie komórki w której będzie nazwa nowej zakładki
nazwa = Cells(3, 1)
' kopiujemy dane które zawierają jakieś wartości
    Selection.CurrentRegion.Select
    Selection.Copy
'otwieramy plik "archiwum
   ' Application.WindowState = xlMinimized
        ChDir "C:\\DOKUMENTY"
    Workbooks.Open Filename:="C:\\DOKUMENTY\archiwum.xls"
    Windows("archiwum.xls").Activate
'tworzymy nową zakładkę i wklejamy dane
Sheets.Add
    ActiveSheet.Paste
'układamy kolumny, żeby ładnie wyglądały :)
    Columns("A:A").EntireColumn.AutoFit
        Columns("E:E").EntireColumn.AutoFit
    Columns("G:G").EntireColumn.AutoFit
    Columns("I:I").EntireColumn.AutoFit
    Columns("M:M").EntireColumn.AutoFit
    Range("A3").Select
    Application.CutCopyMode = False
    Selection.Copy
'zmieniamy nazwę zakładki
    Sheets("Arkusz1").Select
    Sheets("Arkusz1").Name = nazwa
' zapisujemy zmiany i zamykamy plik archiwum
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Windows("DANE.xls").Activate
    Range("A3").Select
End Sub

I jeszcze fragment kodu, który zmienia też nazwę zapisywanego pliku.
ActiveWorkbook.SaveAs Filename:= _
     "C:\\DOKUMENTY\plik_" & nazwa & ".xls" _
        , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWorkbook.Close 

EXCEL VBA - generowanie zakładki pod korespondencje seryjną.

EXCEL
Kod filtruje listę (w zakładce "WORK") na podstawie określonych kryteriów i kopiuje do istniejącej zakładki( SERYJNA) (wcześniej ją czyszcząc) wartości, które potem są wykorzystywane do korespondencji seryjnej w wordzie

Sub gen_seryjna()
' wpierw czyścimy zakładkę "SERYJNA"
    Sheets("SERYJNA").Select
    Cells.Select
    Selection.Delete Shift:=xlUp
    Sheets("WORK").Select
' filtrujemy, "Field=10" to określenie kolumny, "kryteria" to kryteria filtrowania
    Selection.AutoFilter Field:=10, Criteria1:="OBCIĄŻENIE"
' zaznacza tylko komórki w których istnieją dane  
    Selection.CurrentRegion.Select 
    Selection.Copy
    Rows("1:1").Select
    Sheets("SERYJNA").Select
    Range("A1").Select
' wklejamy 
    ActiveSheet.Paste
' usuwamy pierwszy wiersz (który w moim pliku np zawierał przyciski, a nazwy kolumn były w drugim wierszu) 
    Rows("1:1").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
' kolumny wyrównujemy 
    Columns("A:N").EntireColumn.AutoFit
    Sheets("WORK").Select
    Selection.AutoFilter Field:=10
    Range("A3").Select
    Application.ScreenUpdating = True
End Sub

poniedziałek, 4 stycznia 2010

excel - importowanie e-mail do TXT

1. Przechwytywanie przychodzących maili i ich zapis do pliku txt.
a) otwieramy Outlooka
b) wybieramy z opcji Edycja/ Makro / Edytor Visual Basic
c) następnie rozwijamy znajdujące się po lewej stronnie w edytorze Project/ Microsoft Office Outlook Objects/ ThisOutlookSession i wklejamy kod:

Private WithEvents TabelkaItems As Items
Private Sub Application_Startup()


On Error Resume Next
Set TabelkaItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items


End Sub


Private Sub TabelkaItems_ItemAdd(ByVal Item As Object)


On Error Resume Next
Dim oMail As MailItem
Set oMail = Item
If oMail Is Nothing Then Exit Sub
With oMail


If InStr(1, .Body, "tabelk") > 0 Or _
InStr(1, .Subject, "tabelk") > 0 Then


Open "D:\aaaaaa\rental.txt" For Append As #1
Print #1, "data: " & Format(Now, "YYYY-MM-DD")
Print #1, "temat: " & .Subject
Print #1, "osoba: " & .SenderName
Print #1, "" & .SenderName; .Body
Close #1


End If
End With


Set oMail = Nothing
End Sub

autor: Piotr Czech /KIELCE

środa, 23 września 2009

MS Office "koncesje-projekt"

Pierwszy uporządkowany projekt wykorzystujący pakiet office (2003 w górę) mojego autorstwa.
Działanie: System polega na zintegrowaniu 4 plików różnego rodzaju w działający system z banalnie prosta obsługą (3 przyciski). System zbiera informacje od użytkowników i na ich podstawie generuje odpowiednie raporty.
Wymagania: Access 2003 i wyżej, Excel 2003 i wyżej, Infopatch, IE.
- plik baza.mdb (access) - kręgosłup całego systemu. Zawiera tabele z danymi oraz tabele pomocnicze, kwerendę, 3 makra i formularz panelowy.
- plik formularz-dodawanie.xsn (infopath) - formularz pobierający dane z bazy.mdb do wykorzystania przy jego wypełnianiu. Zawiera formaty danych, w celu uściślenia wpisywanych wartości. Wynikowo wysyła dane do bazy danych i umieszcza je w tabelach oraz wysyła powiadomienie e-mail o dodaniu rekordów do bazy.
- plik podgląd.htm (html) - plik łączy się z bazą danych i wyświetla konkretne informacje bez potrzeby otwierania bazy danych.
- plik dekretacja.xls (excel) - plik z automatycznym pobieraniem specjalnie oznaczonych wartości z bazy danych. Służy jako raport w formacie, który łatwo dostosować do odbiorcy.
W czasie pracy można również utworzyć dodatkowy plik raportu (makro zawarte w bazie danych). Oczywiście system wymaga wpisania ścieżek do plików (są wpisane lokalne).

Paczka na serwerze: Koncesje-projekt.zip plik zahasłowany. System mojego autorstwa.