napisał: Stanislaw postów: 109
umieszczony: 25 października 2005 23:01
|
|
Zmienna obiektowa jest zwalniana,
czyli następuje zerwanie połączenia między zmienną a obiektem,
(a pamięć jest odzyskiwana), kiedy procedura kończy działanie,
wtedy automatycznie przypisywana jest jej wartość Nothing.
Można zwolnić zmienną w dowolnym momencie nadając jej wartość Nothing,
wtedy również pozwala to na zaoszczędzenie zasobów komputera.
Dobrą praktyką programistyczną jest zwalnianie wszystkich zmiennych obiektowych, gdy nie są już potrzebne. |
|
napisał: Trebor postów: 1209
umieszczony: 25 października 2005 16:27
|
|
"On error goto 0" miało wykluczuć mozliwość zapętlenia się makra gdy poniżej etykiety 1 wystąpi błąd. Oczywiście w tej formie mozna to pominąć.
Jakie znaczenie ma polecenie np.
Set MyObject = Nothing
Czy jeśli zostanie to pominięte to ma to wpływ np. na pamięć komputera (????) po zakończeniu makra? |
|
napisał: Stanislaw postów: 109
umieszczony: 24 października 2005 22:57
|
|
Kontynuując pomysł Trebor'a
zastosowałbym konstrukcję With...End With
oraz zastanawiam się czy instrukcja "On Error GoTo 0"
będzie kiedykolwiek wykorzystana, a jeżeli nie, to jest zbędna.
Ostatecznie:
Sub excel_word()
Dim appWD As Word.Application
Selection.Copy
On Error GoTo 1
AppActivate "Microsoft Word"
With Word.Application.Selection
.TypeParagraph
.PasteAndFormat (wdFormatPlainText)
End With
Exit Sub
1
Set appWD = CreateObject("Word.Application")
With appWD
.Visible = True
.Documents.Add
.Selection.PasteAndFormat (wdFormatPlainText)
End With
End Sub |
|
napisał: Trebor postów: 1209
umieszczony: 24 października 2005 18:18
|
|
Witam!!
Co powiecie na taką procedurę. W zasadzie działa chociaż sądzę, że potrzebna tu jest jeszcze ręka fachowca (wiele przepisane z helpa).
Wymagana referencja do biblioteki Worda.
Proszę o opinię (dopiero uczę się VBA).
Sub excel_word()
Dim appWD As Word.Application
Selection.Copy
On Error GoTo 1
AppActivate "Microsoft Word"
Word.Application.Selection.TypeParagraph
Word.Application.Selection.PasteAndFormat (wdFormatPlainText)
Exit Sub
On Error GoTo 0
1
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
appWD.Documents.Add
appWD.Selection.PasteAndFormat (wdFormatPlainText)
End Sub |
|
napisał: Stanislaw postów: 109
umieszczony: 23 października 2005 19:13
|
|
Odnośnie zróżnicowania działania procedury w zależności od tego,
czy Word jest uruchomiony, czy nie - spróbuj wykorzystać informacje
z helpu na temat "GetObject Function Example". |
|
napisał: wkkw postów: 7
umieszczony: 23 października 2005 00:50
|
|
idąc jeszcze dalej- jak skopiować do worda sam tekst - bez komórek (tekst niesformatowany)? |
|
napisał: wkkw postów: 7
umieszczony: 23 października 2005 00:23
|
|
O to chodziło, dzięki.
probowałem zastosować pętle, tzn. żeby program powtórzył wklejenie do nowootwartego pliku, no ale nic z tego nie wychodzi:( |
|
napisał: Stanislaw postów: 109
umieszczony: 22 października 2005 20:11
|
|
Niestety, podana przeze mnie procedura nie radzi sobie, gdy Word nie jest uruchomiony |
|
napisał: Stanislaw postów: 109
umieszczony: 22 października 2005 14:40
|
|
Sub Kopiowanie_z_Excela_do_Worda()
' należy zaznaczyć w Excelu obszar komórek i uruchomić makro
' uruchomienie programu Word, a jeśli jest on już uruchomiony następuje jego uaktywnienie
Application.ActivateMicrosoftApp xlMicrosoftWord
Selection.Copy
GetObject(, "Word.Application").Selection.Paste
GetObject(, "Excel.Application").CutCopyMode = False
End Sub |
|
napisał: wkkw postów: 7
umieszczony: 22 października 2005 13:30
|
|
pewnie banalne pytanie, no ale mam z tym problem:(
chce za pomoca makra skopiowac zaznaczony fragment z excela do worda, pytanie: w jaki sposób przejść z excela do otwartego okna worda, a w przypadku gdy word nie jest uruchomiony to go otworzyć? |
|
wstecz 1 dalej wszystkich stron: 1
|