🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.vbasic
8 messages
8 total messages Started by Ryszard Mikke Fri, 23 Apr 2010 14:39
[Jak?]wstawianie terminów do Outlooka z Excela
#104609
Author: Ryszard Mikke
Date: Fri, 23 Apr 2010 14:39
23 lines
1503 bytes
Witam,

w tej grupie chyba po raz pierwszy choć już trochę w VB grzebałem.

Potrzebuję porady, bądź skierowania do odpowiedniej dokumentacji, bo mam dość
blade pojecie, jak to ugryżć.

Mam dane w Excelu, dla kazdego dnia coś tam jest wpisane.
Chce zrobic skrypcik, który będzie te dane czytać i na tej podstawie
wstawiać "spotkania" do kalendarza w Outlooku.

Pętla czytająca te dane to nie problem, nie mam natomiast pojęcia,
jak z Excela wykonac jakiekolwiek operacje na kalendarzu Outlooka.
I nie idzie mi jakoś szukanie jakichś konkretnych informacji, jak to zrobić...

Acha, wersje:
Outlook 2003 SP3
Excel 003 SP3

rmikke

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: [Jak?]wstawianie terminów do Outlooka z Excela
#104610
Author: Michal AKA Miki
Date: Sun, 25 Apr 2010 09:20
32 lines
2169 bytes
Użytkownik "Ryszard Mikke" <rmikke@gazeta.SKASUJ-TO.pl> napisał w wiadomości 
news:hqsbee$1ae$1@inews.gazeta.pl...
> Witam,
>
> w tej grupie chyba po raz pierwszy choć już trochę w VB grzebałem.
>
> Potrzebuję porady, bądź skierowania do odpowiedniej dokumentacji, bo mam 
> dość
> blade pojecie, jak to ugryżć.
>
> Mam dane w Excelu, dla kazdego dnia coś tam jest wpisane.
> Chce zrobic skrypcik, który będzie te dane czytać i na tej podstawie
> wstawiać "spotkania" do kalendarza w Outlooku.
>
> Pętla czytająca te dane to nie problem, nie mam natomiast pojęcia,
> jak z Excela wykonac jakiekolwiek operacje na kalendarzu Outlooka.
> I nie idzie mi jakoś szukanie jakichś konkretnych informacji, jak to 
> zrobić...

tutaj masz kod (co prawda wstawianie z Worda, ale w VBA to jest to samo)
http://www.gmayor.com/create_outlook_entries_from_word.htm

Generalnie obiekty w kalendarzu nazywaja sie "Appointment" :)
I takiego czegos powinienes szukac w googlach..

Pare skrotow:
http://support.microsoft.com/kb/220595
http://en.allexperts.com/q/Excel-1059/2008/6/VBA-Excel-Outlook-Appointment.htm
http://technet.microsoft.com/en-us/library/ee692864.aspx

Pozdrawiam
Michal
Re: [Jak?]wstawianie terminów do Outlooka z Excela
#104611
Author: Ryszard Mikke
Date: Fri, 30 Apr 2010 15:11
64 lines
3446 bytes
Michal AKA Miki <jakistammichal@z.onetu.pl> napisał(a): 

> Użytkownik "Ryszard Mikke" <rmikke@gazeta.SKASUJ-TO.pl> napisał w wiadomości 
> news:hqsbee$1ae$1@inews.gazeta.pl...
> > Witam,
> >
> > w tej grupie chyba po raz pierwszy choć już trochę w VB grzebałem.
> >
> > Potrzebuję porady, bądź skierowania do odpowiedniej dokumentacji, bo mam 
> > dość
> > blade pojecie, jak to ugryżć.
> >
> > Mam dane w Excelu, dla kazdego dnia coś tam jest wpisane.
> > Chce zrobic skrypcik, który będzie te dane czytać i na tej podstawie
> > wstawiać "spotkania" do kalendarza w Outlooku.
> >
> > Pętla czytająca te dane to nie problem, nie mam natomiast pojęcia,
> > jak z Excela wykonac jakiekolwiek operacje na kalendarzu Outlooka.
> > I nie idzie mi jakoś szukanie jakichś konkretnych informacji, jak to 
> > zrobić...
> 
> tutaj masz kod (co prawda wstawianie z Worda, ale w VBA to jest to samo)
> http://www.gmayor.com/create_outlook_entries_from_word.htm
> 
> Generalnie obiekty w kalendarzu nazywaja sie "Appointment" :)
> I takiego czegos powinienes szukac w googlach..
> 
> Pare skrotow:
> http://support.microsoft.com/kb/220595
> http://en.allexperts.com/q/Excel-1059/2008/6/VBA-Excel-Outlook-Appointment.htm
> http://technet.microsoft.com/en-us/library/ee692864.aspx

Jako że powyższe wydaje sie wyjaśniać wszystko, wziąłem się raźno do roboty.

Okazało się jednak, że jeden drobny problem na wcześniejszym etapie jest.
Sytuacja jest taka: w pliku z danymi pisać nie mogę.
Stworzyłem więc drugi plik z guzikiem i podpietym do niego skryptem VBA.
Wszystko fajnie działa pod warunkiem, że plik z danymi mam otwarty.
Natomiast jeśli jest zamknięty, metoda Workbooks.Open otwiera go...
i na tym się kończy działanie skryptu.

Internet zasugerował bug z otwieraniem pliku z wciśniętym shiftem - to nie to.
Próbowałem również zamiast prostego workbooks.open zrobić

Dim book as Workbook
Dim sheet as Worksheet
* * Application.EnableEvents = False
* * Set book = Workbooks.Open Filename:= "C:\Test\ExcelWB_Template.xls"
Set sheet = book.Sheets("Sheet 1")
sheet.Range("A1").FormulaR1C1 = "ABC Company"
sheet.Range("A2").FormulaR1C1 = "123"

(za http://www.pcreview.co.uk/forums/thread-3771789.php 
oczywiście podstawiłem swoje pracowicie wyliczone zmienne
za nazwy pliku i arkusza)
- działa tak samo, jak workbooks.open.

Plik z danymi zawiera makro uruchamiane przy starcie i tego nie zmienię.
Jak to obejść?

rmikke

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: [Jak?]wstawianie terminów do Outlooka z Excela
#104612
Author: Michal AKA Miki
Date: Sat, 01 May 2010 23:20
30 lines
2190 bytes
Użytkownik "Ryszard Mikke" <rmikke@WYTNIJ.gazeta.pl> napisał w wiadomości 
news:hrerub$b8d$1@inews.gazeta.pl...
> Próbowałem również zamiast prostego workbooks.open zrobić
>
> Dim book as Workbook
> Dim sheet as Worksheet
> * * Application.EnableEvents = False
> * * Set book = Workbooks.Open Filename:= "C:\Test\ExcelWB_Template.xls"
> Set sheet = book.Sheets("Sheet 1")
> sheet.Range("A1").FormulaR1C1 = "ABC Company"
> sheet.Range("A2").FormulaR1C1 = "123"
>
> (za http://www.pcreview.co.uk/forums/thread-3771789.php
> oczywiście podstawiłem swoje pracowicie wyliczone zmienne
> za nazwy pliku i arkusza)
> - działa tak samo, jak workbooks.open.
>
> Plik z danymi zawiera makro uruchamiane przy starcie i tego nie zmienię.
> Jak to obejść?

Tak na szybko, to najprosciej zmodyfikowac excela z danymi - tam do 
procedury Workbook_Open na samym poczatku wstawic kod, ktory sprawdza, czy 
twoj program jest uruchomiony (z konkretna sciezka i nazwa). Jesli tak, to 
excel z danymi konczy dzialanie i staje sie zwyklym excelem...

Napisz, czy twoj program wywolujacy plik z danymi to drugi arkusz excela, 
czy jakis exec lub vbs.

Pozdrawiam
Michal
Re: wstawianie terminów do Outlooka z Excela
#104613
Author: Ryszard Mikke
Date: Sun, 02 May 2010 13:50
39 lines
2901 bytes
On 2 Maj, 01:20, "Michal AKA Miki" <jakistammic...@z.onetu.pl> wrote:
> Użytkownik "Ryszard Mikke" <rmi...@WYTNIJ.gazeta.pl> napisał w wiadomościnews:hrerub$b8d$1@inews.gazeta.pl...
>
>
>
> > Próbowałem również zamiast prostego workbooks.open zrobić
>
> > Dim book as Workbook
> > Dim sheet as Worksheet
> > * * Application.EnableEvents = False
> > * * Set book = Workbooks.Open Filename:= "C:\Test\ExcelWB_Template.xls"
> > Set sheet = book.Sheets("Sheet 1")
> > sheet.Range("A1").FormulaR1C1 = "ABC Company"
> > sheet.Range("A2").FormulaR1C1 = "123"
>
> > (zahttp://www.pcreview.co.uk/forums/thread-3771789.php
> > oczywiście podstawiłem swoje pracowicie wyliczone zmienne
> > za nazwy pliku i arkusza)
> > - działa tak samo, jak workbooks.open.
>
> > Plik z danymi zawiera makro uruchamiane przy starcie i tego nie zmienię.
> > Jak to obejść?
>
> Tak na szybko, to najprosciej zmodyfikowac excela z danymi - tam do
> procedury Workbook_Open na samym poczatku wstawic kod, ktory sprawdza, czy
> twoj program jest uruchomiony (z konkretna sciezka i nazwa). Jesli tak, to
> excel z danymi konczy dzialanie i staje sie zwyklym excelem...
>
> Napisz, czy twoj program wywolujacy plik z danymi to drugi arkusz excela,
> czy jakis exec lub vbs.
>
> Pozdrawiam
> Michal

Problem w tym, że nie mogę grzebać w pliku z danymi, z przyczyn hmm...
pozatechnicznych.
Dlatego chcę uruchamiać makro z innego pliku excelowego.

rmikke
Re: wstawianie terminów do Outlooka z Excela
#104614
Author: Michal AKA Miki
Date: Sun, 02 May 2010 20:56
23 lines
2084 bytes
Użytkownik "Ryszard Mikke" <ryszard.mikke@gmail.com> napisał w wiadomości 
news:eb026ccb-6c10-4d15-bb84-6ed1ad29c352@37g2000yqm.googlegroups.com...
>> Tak na szybko, to najprosciej zmodyfikowac excela z danymi - tam do
>> procedury Workbook_Open na samym poczatku wstawic kod, ktory sprawdza, 
>> czy
>> twoj program jest uruchomiony (z konkretna sciezka i nazwa). Jesli tak, 
>> to
>> excel z danymi konczy dzialanie i staje sie zwyklym excelem...
>>
>> Napisz, czy twoj program wywolujacy plik z danymi to drugi arkusz excela,
>> czy jakis exec lub vbs.
>
> Problem w tym, że nie mogę grzebać w pliku z danymi, z przyczyn hmm...
> pozatechnicznych.
> Dlatego chcę uruchamiać makro z innego pliku excelowego.

W takim razie potrzeba wiecej szczegolow.. jesli mozesz, wrzuc makra ktore 
masz oraz te z pliku z danymi..
I napisz, w czym dokladnie jest problem - czy zglasza jakis blad, czy nie 
wykonuje jakichs czynnosci, chociaz powinien...

Pozdrawiam
Michal 
Re: wstawianie terminów do Outlooka z Excela
#104615
Author: Ryszard Mikke
Date: Thu, 06 May 2010 15:08
78 lines
4001 bytes
Michal AKA Miki <jakistammichal@z.onetu.pl> napisał(a): 

> Użytkownik "Ryszard Mikke" <ryszard.mikke@gmail.com> napisał w wiadomości 
> news:eb026ccb-6c10-4d15-bb84-6ed1ad29c352@37g2000yqm.googlegroups.com...
> >> Tak na szybko, to najprosciej zmodyfikowac excela z danymi - tam do
> >> procedury Workbook_Open na samym poczatku wstawic kod, ktory sprawdza, 
> >> czy
> >> twoj program jest uruchomiony (z konkretna sciezka i nazwa). Jesli tak, 
> >> to
> >> excel z danymi konczy dzialanie i staje sie zwyklym excelem...
> >>
> >> Napisz, czy twoj program wywolujacy plik z danymi to drugi arkusz excela,
> >> czy jakis exec lub vbs.
> >
> > Problem w tym, że nie mogę grzebać w pliku z danymi, z przyczyn hmm...
> > pozatechnicznych.
> > Dlatego chcę uruchamiać makro z innego pliku excelowego.
> 
> W takim razie potrzeba wiecej szczegolow.. jesli mozesz, wrzuc makra ktore 
> masz oraz te z pliku z danymi..
> I napisz, w czym dokladnie jest problem - czy zglasza jakis blad, czy nie 
> wykonuje jakichs czynnosci, chociaz powinien...

Skrypty z pliku z danymi nie sa dla mnie dostępne, ale skądinąd wiem,
że cudów nie robia - wybierają tylko wiersz dla bieżącego dnia, żeby
plik otwierał się w odpowiednim miejscu.

Natomiast mój skrypt wygląda tak:

Sub wstawSpotkania()
Dim adresNazwiska, adresDaty As Range
Dim komorkaNazwiska, komorkaDaty As Range
Dim Plik, Arkusz, refNazwiska, refDaty As String
Dim pomNazwiska, pomDaty As String
Dim Wiersz, Komorka As Double
Dim book As Workbook
Dim sheet As Worksheet

Set adresNazwiska = Range("B5")
Set adresDaty = Range("B6")

pomNazwiska = Mid(adresNazwiska.Formula, 2, 256)
refNazwiska = Mid(pomNazwiska, InStr(pomNazwiska, "!") + 1, 256)
pomDaty = Mid(adresDaty.Formula, 2, 256)
refDaty = Mid(pomDaty, InStr(pomDaty, "!") + 1, 256)
pomNazwiska = Mid(pomNazwiska, 1, InStr(pomNazwiska, "!") - 1)
If Left(pomNazwiska, 1) = "'" Then
    pomNazwiska = Mid(pomNazwiska, 2, 256)
End If
If Right(pomNazwiska, 1) = "'" Then
    pomNazwiska = Mid(pomNazwiska, 1, Len(pomNazwiska) - 1)
End If
Arkusz = Mid(pomNazwiska, InStr(pomNazwiska, "]") + 1, 256)
pomNazwiska = Mid(pomNazwiska, 1, InStr(pomNazwiska, "]") - 1)
Plik = Application.WorksheetFunction.Substitute(pomNazwiska, "[", "")
MsgBox "test 0"
Application.EnableEvents = False
Set book = Workbooks.Open(Plik, 0, False)
'========Ponizej tego wiersza nic sie nie wykonuje=============
Set sheet = book.Sheets(Arkusz)
Application.EnableEvents = True
'Workbooks.Open Plik, 0, True
MsgBox "test 1"
Workbooks(Plik).Sheets(Arkusz).Activate
ActiveSheet.Range(refNazwiska).Select
MsgBox "Wybrało się?"
''Workbooks(Plik).Close SaveChanges:=False

End Sub

I błąd polega na tym, co w komentarzu - po otwarciu pliku z danymi
nic więcej sie nie wykonuje z mojego skryptu. Skrypt starowy pliku z danymi
robi swoje i nie zwraca mi sterowania.

rmikke

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: wstawianie terminów do Outlooka z Excela
#104616
Author: Michal AKA Miki
Date: Thu, 06 May 2010 21:44
100 lines
4956 bytes
Użytkownik "Ryszard Mikke" <rmikke@NOSPAM.gazeta.pl> napisał w wiadomości 
news:hrum22$54g$1@inews.gazeta.pl...
> Michal AKA Miki <jakistammichal@z.onetu.pl> napisał(a):
>
>> Użytkownik "Ryszard Mikke" <ryszard.mikke@gmail.com> napisał w wiadomości
>> news:eb026ccb-6c10-4d15-bb84-6ed1ad29c352@37g2000yqm.googlegroups.com...
>> >> Tak na szybko, to najprosciej zmodyfikowac excela z danymi - tam do
>> >> procedury Workbook_Open na samym poczatku wstawic kod, ktory sprawdza,
>> >> czy
>> >> twoj program jest uruchomiony (z konkretna sciezka i nazwa). Jesli 
>> >> tak,
>> >> to
>> >> excel z danymi konczy dzialanie i staje sie zwyklym excelem...
>> >>
>> >> Napisz, czy twoj program wywolujacy plik z danymi to drugi arkusz 
>> >> excela,
>> >> czy jakis exec lub vbs.
>> >
>> > Problem w tym, że nie mogę grzebać w pliku z danymi, z przyczyn hmm...
>> > pozatechnicznych.
>> > Dlatego chcę uruchamiać makro z innego pliku excelowego.
>>
>> W takim razie potrzeba wiecej szczegolow.. jesli mozesz, wrzuc makra 
>> ktore
>> masz oraz te z pliku z danymi..
>> I napisz, w czym dokladnie jest problem - czy zglasza jakis blad, czy nie
>> wykonuje jakichs czynnosci, chociaz powinien...
>
> Skrypty z pliku z danymi nie sa dla mnie dostępne, ale skądinąd wiem,
> że cudów nie robia - wybierają tylko wiersz dla bieżącego dnia, żeby
> plik otwierał się w odpowiednim miejscu.
>
> Natomiast mój skrypt wygląda tak:
>
> Sub wstawSpotkania()
> Dim adresNazwiska, adresDaty As Range
> Dim komorkaNazwiska, komorkaDaty As Range
> Dim Plik, Arkusz, refNazwiska, refDaty As String
> Dim pomNazwiska, pomDaty As String
> Dim Wiersz, Komorka As Double
> Dim book As Workbook
> Dim sheet As Worksheet
>
> Set adresNazwiska = Range("B5")
> Set adresDaty = Range("B6")
>
> pomNazwiska = Mid(adresNazwiska.Formula, 2, 256)
> refNazwiska = Mid(pomNazwiska, InStr(pomNazwiska, "!") + 1, 256)
> pomDaty = Mid(adresDaty.Formula, 2, 256)
> refDaty = Mid(pomDaty, InStr(pomDaty, "!") + 1, 256)
> pomNazwiska = Mid(pomNazwiska, 1, InStr(pomNazwiska, "!") - 1)
> If Left(pomNazwiska, 1) = "'" Then
>    pomNazwiska = Mid(pomNazwiska, 2, 256)
> End If
> If Right(pomNazwiska, 1) = "'" Then
>    pomNazwiska = Mid(pomNazwiska, 1, Len(pomNazwiska) - 1)
> End If
> Arkusz = Mid(pomNazwiska, InStr(pomNazwiska, "]") + 1, 256)
> pomNazwiska = Mid(pomNazwiska, 1, InStr(pomNazwiska, "]") - 1)
> Plik = Application.WorksheetFunction.Substitute(pomNazwiska, "[", "")
> MsgBox "test 0"
> Application.EnableEvents = False
> Set book = Workbooks.Open(Plik, 0, False)
> '========Ponizej tego wiersza nic sie nie wykonuje=============
> Set sheet = book.Sheets(Arkusz)
> Application.EnableEvents = True
> 'Workbooks.Open Plik, 0, True
> MsgBox "test 1"
> Workbooks(Plik).Sheets(Arkusz).Activate
> ActiveSheet.Range(refNazwiska).Select
> MsgBox "Wybrało się?"
> ''Workbooks(Plik).Close SaveChanges:=False
>
> End Sub
>
> I błąd polega na tym, co w komentarzu - po otwarciu pliku z danymi
> nic więcej sie nie wykonuje z mojego skryptu. Skrypt starowy pliku z 
> danymi
> robi swoje i nie zwraca mi sterowania.
>

A probowales przechodzic procedure klawiszem F8 (krok po kroku, kazde 
nacisniecie F8 to 1 krok, wchodzac w kazda procedure zagniezdzona) - to jest 
dobry debugger...

Na chwile obecna jedyne, co mi przychodzi na mysl, to zastapienie tego:

Application.EnableEvents=false

tym:

Application.AutomationSecurity = msoAutomationSecurityForceDisable

(tylko zeby potem z powrotem wrocic do poprzedniego modelu security trzeba 
to troche rozbudowac)
Przyklad znajdziesz np tutaj:
http://www.excelforum.com/excel-programming/384353-using-vba-to-disable-macros-when-opening-files.html

Pozdrawiam
Michal 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads