vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest piątek, 17 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

ActiveDocument w MsWord z poziomu VBA


otwartyotwarty rozpoczął: kosi postów: 3



napisał: kosi
postów: 2


umieszczony:
26 stycznia 2010
17:37

edytowany:
26 stycznia 2010
18:17

  
Dzięki admin za szybką odpowiedź.
Problem rozwiązany
Cytat:
Nie rozumiem tylko jak dajesz radę zmienić aktywny dokument w trakcie wykonywania kodu?

Ja też tego nie rozumiem, ale wyglądało to tak: Przy pierwszym uruchomieniu makra nie było problemu, natomiast wyżej opisana sytuacja miała miejsce gdy uruchamiałem kod ponownie. Tak jakby coś pozostawało w pamięci...
Przykład:
Mam otwarty Dok1 i Dok2
Klikam Dok1 (Dok1 staje się aktywny tzn widoczny)
Uruchamiam kod
Pojawia się formularz z wartością pola tekstowego równą nazwie aktywnego dokumentu czyli Dok1
a pod formularzem pojawia się Dok2 (tzn widać nagłówek dokumentu Dok2 i tekst z Dok2)
Wciskam przycisk formularza i zapisuje...
Przed Twoimi sugestiami: jako nazwę pliku Dok1, ale zawartość z Dok2
Po Twoich sugestiach: jako nazwę pliku Dok1 a i zawartość z Dok1.

Dziękuję serdecznie za pomoc.
napisał: admin
postów: 613


umieszczony:
26 stycznia 2010
05:54

  
Hej,

Musisz się zdecydować, który plik zapisujesz. Aktywny?
No to robisz tak:

Dim oDocument As Document
Set oDocument = ActiveDocument



a w pozostałej części kodu używasz zamiast ActiveDocument obiektu oDocument, np.:
oDocument.SaveAs DstNameKor



Krótko mówiąc: należy dokument, który zapisać podstawić do zmiennej i operować na tej zmiennej, a nie bezpośrednio na aktywnym dokumencie.

Nie rozumiem tylko jak dajesz radę zmienić aktywny dokument w trakcie wykonywania kodu?
napisał: kosi
postów: 2


umieszczony:
25 stycznia 2010
21:49

  
Poniżej załączam kod, który ma za zadanie zapisać aktywny dokument w odpowiednim miejscu na sieci. Wszystko działa idealnie w przypadku otwartego tylko jednego dokumentu (np. dokument1). Gdy dodam nowy dokument (np. dokument2) w trakcie wykonywania kodu zmienia się aktywny dokument. Efekt jest taki, że powstaje plik o nazwie dokument2, ale z zawartością z dokument1.
Proszę o pomoc. Nie mogę tego problemu rozwiązać.

Option Explicit
    Public Rezygnuje
    Public Strona
       
Sub Tekst()
'
'
Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")

Dim Korekta As String
    Korekta = "\\10.0.5.22\korekta"
Dim Kopia As String
    Kopia = "\\10.0.3.22\zkopia"

objNetwork.MapNetworkDrive "", Kopia, , "user", "haslo"
objNetwork.MapNetworkDrive "", Korekta, , "user2", "haslo2"

Dim SrcName As String
    SrcName = ActiveDocument.Name

UserForm1.TextBox1.Text = SrcName
UserForm1.Show

'Jeśli nie wybrano przycisku "wyjście" to
If Rezygnuje <> "R" Then

    Dim Nazwa As String
        Nazwa = UserForm1.TextBox1.Text
        
    Dim SciezkaKor As String
        SciezkaKor = Korekta + "\" + Strona + "\"
    Dim DstNameKor As String
        DstNameKor = SciezkaKor + Nazwa
    
    ChangeFileOpenDirectory SciezkaKor
    ActiveDocument.SaveAs FileName:=DstNameKor, _
        FileFormat:=wdFormatDocument, LockComments:=False, Password:="", _
        AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
        :=False, SaveAsAOCELetter:=False

    Dim SciezkaKop As String
        SciezkaKop = Kopia + "\" + Strona + "\"
    Dim DstNameKop As String
        DstNameKop = SciezkaKop + Nazwa
    
    ChangeFileOpenDirectory SciezkaKop
    ActiveDocument.SaveAs FileName:=DstNameKop, _
        FileFormat:=wdFormatDocument, LockComments:=False, Password:="", _
        AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
        :=False, SaveAsAOCELetter:=False

    ActiveDocument.Close
    ChangeFileOpenDirectory "h:\"
End If
objNetwork.RemoveNetworkDrive Korekta
objNetwork.RemoveNetworkDrive Kopia
End Sub



Poniżej kod Formularza:
Option Explicit

Private Sub UserForm_Initialize()
    Rezygnuje = ""
End Sub

Private Sub R_Click()
    Rezygnuje = "R"
    UserForm1.Hide
End Sub

Private Sub S1_Click()
    Strona = "01"
    UserForm1.Hide
End Sub

Private Sub S2_Click()
    Strona = "02"
    UserForm1.Hide
End Sub

Private Sub S3_Click()
    Strona = "03"
    UserForm1.Hide
End Sub

Private Sub S4_Click()
    Strona = "04"
    UserForm1.Hide
End Sub

Private Sub S5_Click()
    Strona = "05"
    UserForm1.Hide
End Sub

Private Sub S6_Click()
    Strona = "06"
    UserForm1.Hide
End Sub

Private Sub SW_Click()
    Strona = "swiat"
    UserForm1.Hide
End Sub

Private Sub WW_Click()
    Strona = "wies"
    UserForm1.Hide
End Sub



<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z