Odpowiedź na to pytanie zależy od kilku czynników:
- do czego służyć ma aplikacja?
- czy plik wynikowy ma być dokumentem czystym(bez makr)?
- czy plik wynikowy ma również służyć do kolejnych operacji?
Odpowiedzi udzielić musisz sobie sam! Nie ma jednej, generalnej recepty na to, gdzie umieścić kod.
Moim zdaniem, dobrą zasadą jest trzymanie kodu w szablonie, który będzie stanowić "pierwowzór" dokumentu.
Za��my wiďż˝c, ďż˝e pewne dane bďż˝dďż˝ przetwarzane tylko w tym dokumencie i nigdzie dalej nie będą eksportowane.
Dobrym przykďż˝adem moďż˝e byďż˝ aplikacja do generowania raportďż˝w i ich drukowania. Dane, które będą umieszczone w takim raporcie mają charakter
tymczasowy i nie jest potrzebna ich dalsza obróbka, np.: raport dla szefa ;) Cała istota polega na zebraniu danych z innych dokumentów w określonym
katalogu wklejeniu do danego dokumentu w kolejności pobrania i wydrukowaniu.
Oto przykład takiej aplikacji wraz z oknem postępu:
Sposób organizacji treści w dokumencie zależy - przede wszystkim - od poczucia estetyki. Od strony technicznej nie ma to znaczenia, dopóki treści z dokumentu(ów) nie trzeba "przetworzyć" za pomocą makra.
Wtedy powstaje pytanie jak zorganizować dane, by poprawnie je przetwarzać:
- w zakładkach?
czy
- w tabeli(ach)?
Zawsze powtarzam, że szkoły są dwie: falenicka i otwocka, obydwie spod Warszawy ;)
Przechowywać dane w tabeli jest łatwiej niż w zakładkach, ponieważ tekst przechowywany w komórce można zawsze nadpisać. Jeśli zaś chodzi o zakładki,
to należy pamiętać, że wstawienie tekstu do zakładki powoduje jej zniszczenie! Zatem, po wstawieniu tekstu, zakładkę trzeba odzyskać zapamiętując miejsce wstawienia i długość wstawionego tekstu lub obszar jaki zajmowała.
A tak poza tym, to nie ma żadnych różnic ;)
Przykład wstawienia tekstu do zakładki i utworzenie jej na nowo:
'nazwy zakładek i ich wartości zostały wcześniej wstawione do pola listy
Sub ZamienZakladki()
Dim bkm As Bookmark
Dim sBkmName As String, sVal As String
Dim rng As Range, i As Integer
For i = 0 To Me.LstBookmarks.ListCount - 1
'pobierz nazwę
sBkmName = Me.LstBookmarks.Column(0, i)
'pobierz wartość
sVal = Me.LstBookmarks.Column(1, i)
'ustal zajmowaną przestrzeń ;)
Set rng = ActiveDocument.Bookmarks(sBkmName).Range
'wstaw nowy tekst
rng.Text = sVal
'wstawiam tekst i co? - i niszczę zakładki, więc muszę ją utworzyć na nowo
Set bkm = ActiveDocument.Bookmarks.Add(sBkmName, rng)
Next i
End Sub
Przykład sprawdzenia, czy zakładka o podanej nazwie istnieje:
Private Function IsBookmarkExists(sBkmName As String) As Boolean