Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Visual Basic] Makro Office 2003 nie działa z Office 2007

boromirmb 25 Lut 2010 10:17 3075 4
  • #1 25 Lut 2010 10:17
    boromirmb
    Poziom 2  

    Witam.

    Korzystam z makra które ma porównywać wartości w różnych plikach, jeśli znajdzie takie same komórki to kopiuje komórkę która znajduje sie obok.

    Makro zostało napisane jakiś czas temu i działa bez większych problemów na komputerze z MS office 2003. Jednak ja korzystam z office 2007 i tutaj pojawia się problem.
    Makro przerywa działanie zaznaczając błąd w:

    Windows(nazwa_pliku).Activate

    Code:
    Sub kamil()
    
    '
    ' tlum Makro
    ' Makro zapisane 2007-08-13 przez Kamil
    '

    Dim nazwa_pliku As String
    nazwa_pliku = ActiveDocument.Name

    Documents.Open FileName:="C:\Makro\kamil.doc", ConfirmConversions:=False, _
            ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
            PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
            WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:=""
        Selection.MoveDown Unit:=wdLine, Count:=1
        Selection.MoveRight Unit:=wdCell, Count:=1
        Selection.MoveRight Unit:=wdCell, Count:=1
        Dim Textniem As String
        Dim Textpol As String
        Textniem = Application.CleanString(Selection.Text)
        MsgBox (Textniem)
        Selection.MoveRight Unit:=wdCell, Count:=1
        Textpol = Application.CleanString(Selection.Text)
        MsgBox (Textpol)
    Do
    Windows(nazwa_pliku).Activate
    ActiveDocument.Select
    With Selection.Find
        .MatchWholeWord = True
        .ClearFormatting
        .Forward = True
        .Font.Italic = False
        .Execute FindText:=Textniem, Format:=True, Forward:=True
        If .Found = True Then
        Selection.Font.Italic = True
        Selection.Font.Color = wdColorRed
        Selection.TypeText Text:=Textpol
        End If
        If .Found = False Then
        Windows("kamil.doc").Activate
        Selection.MoveRight Unit:=wdCell, Count:=1
        Textniem = Application.CleanString(Selection.Text)
        Selection.MoveRight Unit:=wdCell, Count:=1
        Textpol = Application.CleanString(Selection.Text)
        If Textniem = "koniec" Then Exit Do
       
    End If
    End With
    Loop
    End Sub


    Proszę o pomoc w rozwiązaniu problemu

    Pozdrawiam.


    Post oddzieliłem. Proszę nie dołączać swoich problemów do tematów innych użytkowników.
    Proszę pamiętać o używaniu znaczników code. - arnoldziq

    0 4
  • #2 25 Lut 2010 16:36
    adamas_nt
    Moderator Programowanie

    Wygląda OK. Jeśli plik zapisany był na innym komputerze to sprawdź referencje.
    W edytorze VB menu: Tools>References. Odznacz (jeśli występują) wszystkie te, których nazwa rozpoczyna się od "Missing".

    0
  • #3 01 Mar 2010 13:47
    damiancloud85
    Poziom 11  

    u mnie dziala .
    ja mam offica 2003 enterprice

    Moderowany przez arnoldziq:

    Ostrzegałem, że za kolejną bezsensowną wiadomość, otrzyma kolega ostrzeżenie.
    Słowa dotrzymuję, Ostrzeżenie #1.

    0
  • #4 03 Mar 2010 00:29
    boromirmb
    Poziom 2  

    Na komputerze z office 2003 makro działa, jednak na swoim mam office 2007

    występuje błąd w wierszu:


    Windows(nazwa_pliku).Activate

    w Tools -> references nie mam żadnych opcji (tym bardziej zaznaczonych) z przedrostkiem Missing

    Jeśli masz pomysł na rozwiązanie tego problemu, proszę o pomoc.

    Gdzieś usłyszałem opinię, że office 2007 przy edycji pliku *.doc uruchamia go pod dodaną nazwą:

    nazwa [Tryb zgodności].doc

    Jednak nie mam pomysłu co z tym zrobić.

    0
  • #5 03 Mar 2010 20:20
    adamas_nt
    Moderator Programowanie

    A czy do tego momentu makro wykonuje kolejne polecenia? Uruchom krokowo w edytorze (klawisz F8.
    Podmień może

    Code:
    Windows(nazwa_pliku).Activate

    na
    Code:
    Documents(nazwa_pliku).Activate 


    W nawiasach kwadratowych jest tylko informacja, która nie wpływa na nazwę pliku...

    0