napisał: toczi1 postów: 75
umieszczony: 31 sierpnia 2016 11:40
edytowany: 31 sierpnia 2016 11:43
|
|
Witam Trebor
Mam pytanie dało by się zrobić w przycisku DODAJ AZUP dodatkowe pole wyboru "Załącz plik" i jak klikniesz to możesz załączyć np: zdjęcia . I potem żeby wysłało ten plik w załączniku wiadomości email co jest napisany kod pod tym przyciskiem DODAJ AZUP.
Tak samo jak jest tu u góry "Wybierz plik"
Załączam plik gdzie tego bym potrzebował |
|
napisał: toczi1 postów: 75
umieszczony: 29 sierpnia 2016 20:32
|
|
Cytat:Co ten warunek ma robić? If ListBox1.Selected(i) Then
End If
On tylko jest i nic z niego nie wynika.
Już sobie poradziłem. Coraz więcej się uczę hehe a to dzięki tobie
To ten warunek najwyżej usunę
Pozdrawiam |
|
napisał: Trebor postów: 1209
umieszczony: 29 sierpnia 2016 18:25
|
|
Co ten warunek ma robić? If ListBox1.Selected(i) Then
End If
On tylko jest i nic z niego nie wynika. |
|
napisał: toczi1 postów: 75
umieszczony: 29 sierpnia 2016 14:42
|
|
Witam potrzebuje pomocy w tym aby jeśli mam w list boxie teskt "W45" to żeby wysyłało email do np osoby 1 i 2 a jeśli będę miał "W56" to np żeby wysyłało do osoby 1 i osoby 3 . Chodzi tu o przycisk "Dodaj opinie"
Zrobiłem coś takiego i wywala błąd na "Next i"
Private Sub CommandButton2_Click()
Dim i As Long, ostatni As Long
If ListBox1.ListCount = -1 Then MsgBox "Brak listy materiałów.": Exit Sub
For i = ListBox1.ListCount - 1 To 0 Step -1
If ListBox1.Selected(i) Then
End If
If ListBox1.List(i, 3) = "Zamknięte" Then: Exit Sub
If ListBox1.List(i, 4) = "W56" Then
Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 3) = "W toku"
Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 21) = Application.UserName & " " & Format(Date, "dd.mm.yyyy")
Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 15) = Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 15) & Chr(10) & InputBox("Dodaj Opinie")
ActiveWorkbook.FollowHyperlink "mailto:" & "osoba 3;osoba 1" & ";" & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 13) & ";" & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 10) & "?subject=Zgłoszenie AN " & "&" & "body=" & "Dodano Opinie - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 2) & _
"%0a Osoba opiniująca - " & Application.UserName & _
"%0a Numer detalu - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 4) & _
"%0a Wydanie rysunku - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 5) & _
"%0a Numer Operacji - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 6) & _
"%0a Numer Serii - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 7) & _
"%0a Ilość sztuk w serii/sztuki niezgodne - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 8) & _
"%0a" & _
"%0a Prosze o zapoznanie sie z opinią i proszę o podanie decyzji Wydziałowej KJ " & _
"%0a Opinia osoby odpowiedzialnej za AN: " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 15) & _
"%0a Status AN - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 3) & _
"%0a Link do pliku AN: file:\\P:\W50_KJ50_CMM\Baza_AN\Baza_AN.xlsm "
Application.Wait (Now + TimeValue("0:00:16"))
Application.SendKeys "^~" 'skrót klawiaturowy w Twoim programie pocztowym
zerowanie
ThisWorkbook.Save
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End If
If Not ListBox1.List(i, 4) = "W56" Then
If ListBox1.List(i, 4) = "W45" Then
Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 3) = "W toku"
Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 21) = Application.UserName & " " & Format(Date, "dd.mm.yyyy")
Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 15) = Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 15) & Chr(10) & InputBox("Dodaj Opinie")
ActiveWorkbook.FollowHyperlink "mailto:" & "osoba 1;Osoba 2" & ";" & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 13) & ";" & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 10) & "?subject=Zgłoszenie AN " & "&" & "body=" & "Dodano Opinie - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 2) & _
"%0a Osoba opiniująca - " & Application.UserName & _
"%0a Numer detalu - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 4) & _
"%0a Wydanie rysunku - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 5) & _
"%0a Numer Operacji - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 6) & _
"%0a Numer Serii - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 7) & _
"%0a Ilość sztuk w serii/sztuki niezgodne - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 8) & _
"%0a" & _
"%0a Prosze o zapoznanie sie z opinią i proszę o podanie decyzji Wydziałowej KJ " & _
"%0a Opinia osoby odpowiedzialnej za AN: " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 15) & _
"%0a Status AN - " & Sheets("Baza_AN").Cells(ListBox1.List(i, 2), 3) & _
"%0a Link do pliku AN: file:\\P:\W50_KJ50_CMM\Baza_AN\Baza_AN.xlsm "
Application.Wait (Now + TimeValue("0:00:15"))
Application.SendKeys "^~" 'skrót klawiaturowy w Twoim programie pocztowym
zerowanie
ThisWorkbook.Save
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End If
If Not ListBox1.List(i, 4) = "W45" Then: Exit Sub
End If
Next i
Unload Me
End Sub |
|
napisał: toczi1 postów: 75
umieszczony: 22 sierpnia 2016 13:27
|
|
Cytat:Sprawdź poniższą procedurę
maks = Application.Max(Sheets("BAZA_AZUP").Columns(1))
If Mid(maks, 1, 4) = CStr(Year(Date)) Then TextBox1.Text = maks + 1 Else TextBox1.Text = Year(Date) & Format(1, "000")
TextBox2.Text = "AZUP/" & Mid(TextBox1.Text, 1, 4) & "/" & Mid(TextBox1.Text, 5, 10)
Zakładam, że obsługujący nie będzie bawił się w zmiany daty w komputerze w ten sposób, że np. w roku 2017 wprowadzi dane a następnie zmieni datę na rok 2016. Wtedy numerowanie rozpocznie się od 2016001, pomimo że w 2016 były już wpisy.
Działa wszystko ok .
A wprowadzający nie zmieni daty bo to tylko może zrobić administrator komputerów czyli IT. |
|
napisał: Trebor postów: 1209
umieszczony: 17 sierpnia 2016 07:28
|
|
Sprawdź poniższą procedurę
maks = Application.Max(Sheets("BAZA_AZUP").Columns(1))
If Mid(maks, 1, 4) = CStr(Year(Date)) Then TextBox1.Text = maks + 1 Else TextBox1.Text = Year(Date) & Format(1, "000")
TextBox2.Text = "AZUP/" & Mid(TextBox1.Text, 1, 4) & "/" & Mid(TextBox1.Text, 5, 10)
Zakładam, że obsługujący nie będzie bawił się w zmiany daty w komputerze w ten sposób, że np. w roku 2017 wprowadzi dane a następnie zmieni datę na rok 2016. Wtedy numerowanie rozpocznie się od 2016001, pomimo że w 2016 były już wpisy. |
|
napisał: toczi1 postów: 75
umieszczony: 16 sierpnia 2016 22:01
|
|
Cytat: Czy można wykorzystać kolumnę LP, oraz ile maksymalnie rocznie przewidujesz wpisów?
W LP można by stosować zapisy:
201600001
201600002
..............
201700001
co umożliwi wykorzystanie w dalszym ciągu funkcji Max.
Na pewno więcej niż 500 nie będzie. Ale jak wskoczy nowy rok i dam z reki w LP 1 to bedzie dalej numerowalo 2,3,4 i wtedy będzie ok |
|
napisał: Trebor postów: 1209
umieszczony: 16 sierpnia 2016 21:38
|
|
Czy można wykorzystać kolumnę LP, oraz ile maksymalnie rocznie przewidujesz wpisów?
W LP można by stosować zapisy:
201600001
201600002
..............
201700001
co umożliwi wykorzystanie w dalszym ciągu funkcji Max. |
|
napisał: toczi1 postów: 75
umieszczony: 16 sierpnia 2016 10:15
|
|
Takie pytanie co tu wstawić ze jeśli pojawi się nowy rok np. 2017 to żeby znowu numerowało od 1
TextBox2.Text = "AN/" & Year(Date) & "/" & Format(Application.Max(Sheets("BAZA_AN").Columns(1)) + 1, "000") |
|
napisał: toczi1 postów: 75
umieszczony: 10 sierpnia 2016 17:48
|
|
Wszystko działa ok nawet z zegarkami pomogło to zerowanie zamyka i już nie otwiera.
Dziękować |
|
napisał: toczi1 postów: 75
umieszczony: 10 sierpnia 2016 16:30
|
|
Cytat:Spróbuj przed zapisaniem i zamknięciem skoroszytu dopisać wiersz "zerowanie". Tak jak procedura w module standardowym.
Application.SendKeys "^~" 'skrót klawiaturowy w Twoim programie pocztowym
zerowanie
ThisWorkbook.Save
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
Pomogło potem potestuje lepiej i napisze jak i co |
|
napisał: Trebor postów: 1209
umieszczony: 10 sierpnia 2016 16:07
|
|
Spróbuj przed zapisaniem i zamknięciem skoroszytu dopisać wiersz "zerowanie". Tak jak procedura w module standardowym.
Application.SendKeys "^~" 'skrót klawiaturowy w Twoim programie pocztowym
zerowanie
ThisWorkbook.Save
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close |
|
napisał: Trebor postów: 1209
umieszczony: 10 sierpnia 2016 13:39
|
|
Oczywiście, że możesz pozmieniać nazwy. Daj znać czy to pomogło. |
|
napisał: Trebor postów: 1209
umieszczony: 10 sierpnia 2016 08:34
|
|
Sprawdź teraz.
Nie wszystkie polecenia zamknięcia zamieniłeś na nową procedurkę.
Co do otwierania to dopisałem linię w Sub Zegar |
|
napisał: toczi1 postów: 75
umieszczony: 9 sierpnia 2016 20:22
edytowany: 9 sierpnia 2016 20:26
|
|
Trebor
Mógłbyś mi zmienić z tym czasem w tym pliku aby było możliwe zamykanie ThisWorkBook.Close i żeby go zaraz nie otwierało ponownie bo nie chce używac Application.Quit bo mi zamyka inne pliki excel. I napisz gdzie był błąd
Bo z reszta już sobie poradziłem |
|
napisał: toczi1 postów: 75
umieszczony: 9 sierpnia 2016 17:02
edytowany: 9 sierpnia 2016 17:12
|
|
Cytat:Witaj
Zamykanie skoroszytu i aplikacji
Sub zamykanie()
ThisWorkbook.Save
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
Otwierający się skoroszyt
Jeśli to dotyczy skoroszytu nad którym pracowałeś na forum to na 99,99% dotyczy to niewłaściwego usuwania zaplanowanego zadania:
Application.OnTime EarliestTime:=czas, Procedure:="Zegar", Schedule:=False
Jeśli podasz niewłaściwy czas w powyższej linii to zadanie nie zostanie anulowane i skoroszyt się otworzy o zaplanowanej godzinie. Obsługa błędu powinna służyć tylko do pominięcia błędu, gdy żadne zadanie nie jest zaplanowane. Możesz sprawdzić co kryje się pod zmienną Czas. Jeśli to data z przyszłości musisz zadanie anulować. Jeśli z przeszłości możesz się tym nie przejmować.
Otwieranie skoroszytu
Zapis wygląda poprawnie, chociaż nie wiadomo co kryje się pod ścieżką. Nie zapomnij też o ukośniku. Workbooks.Open ThisWorkbook.Path & "\Zeszyt11.xlsm"
Zamykanie mam wstawic do modul czy w odpowiedniego userform? Czy mam to podstawic zamiast
ThisWorkBook.Save
Application.Quit
Tak dotyczy to skoroszytu nad ktorym pracowałem. Tylko on zaraz sie otwiera po jego zamknieciu.
A to otwieraniu pliku to do userform dac pod userform click
Mógłbyś sprawdzić czy w tym pliku z postów ponizej jest wszystko ok z tym Application.OnTime EarliestTime:=czas, Procedure:="Zegar", Schedule:=False bo kiedyś coś tam wycinane bo wyrzucalo błąd tylko nie pamiętam czy w moduł czy twój skoroszyt to zmieniałem |
|
napisał: Trebor postów: 1209
umieszczony: 9 sierpnia 2016 16:22
edytowany: 9 sierpnia 2016 16:22
|
|
Witaj
Zamykanie skoroszytu i aplikacji
Sub zamykanie()
ThisWorkbook.Save
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
Otwierający się skoroszyt
Jeśli to dotyczy skoroszytu nad którym pracowałeś na forum to na 99,99% dotyczy to niewłaściwego usuwania zaplanowanego zadania:
Application.OnTime EarliestTime:=czas, Procedure:="Zegar", Schedule:=False
Jeśli podasz niewłaściwy czas w powyższej linii to zadanie nie zostanie anulowane i skoroszyt się otworzy o zaplanowanej godzinie. Obsługa błędu powinna służyć tylko do pominięcia błędu, gdy żadne zadanie nie jest zaplanowane. Możesz sprawdzić co kryje się pod zmienną Czas. Jeśli to data z przyszłości musisz zadanie anulować. Jeśli z przeszłości możesz się tym nie przejmować.
Otwieranie skoroszytu
Zapis wygląda poprawnie, chociaż nie wiadomo co kryje się pod ścieżką. Nie zapomnij też o ukośniku. Workbooks.Open ThisWorkbook.Path & "\Zeszyt11.xlsm" |
|
napisał: toczi1 postów: 75
umieszczony: 9 sierpnia 2016 10:53
|
|
Witam Trebor
ThisWorkBook.Save
Application.Quit
mama taki kod i on zapisuje i zamyka excel tylko jak mam otwarty inny plik excek to tez go zamyka.
ThisWorkBook.Save
ThisWorkBook.Close
zastosowałem taki kod ale wtedy gdy zamyka ten skoroszyt to automatycznie go zaraz otwiera samo nie wiem czemu. Co by zastosować żeby zapisywało i zamykało tylko ten skoroszyt co go używam. Activeworkbook.close tez próbowałem i jest to samo zaraz go otwiera.
Jak podpiąć pod przycisk link żeby otwierało inny plik :
Workbooks.Open(scieżka & "plik_1.xlsm") --- takie coś będzie jak wstawię do userform ? |
|
wszystkich stron: 4
|
|