2009-06-16 31 views
5

Mam dokument programu Word, który zawiera około 4000 pól formularza, które muszę następnie eksportować do bazy danych. Chodzi o to, że żadne z 4000 pól nie zawiera informacji w polu "Zakładka", więc nie mogę uzyskać w nich informacji.Makro programu Word, przechowujące bieżący wybór (VBA)

Próbuję utworzyć makro, aby pomóc w procesie zapisywania zakładki (FormField.Name), ale nie uda się tego zrobić dobrze. Chodzi o to, że chcę zmienić nazwy pól FormFields zawartych w selekcji użytkownika i tylko je. Udało mi się dojść do tego rozwiązania:

Sub Macro2() 
    Dim myFile As String 
    Dim fnum As Integer 
    Dim sFileText As String 
    Dim currentField As FormField 

    myFile = "c:\testMacro.txt" 
    fnum = FreeFile() 
    Open myFile For Input As fnum 

    For Each currentField In Selection.FormFields 
     Input #fnum, sFileText 

     With currentField 
      .StatusText = sFileText 
      .OwnStatus = True 
     End With 

     currentField.Select 
     Application.WordBasic.FormFieldOptions Name:=sFileText 
    Next currentField 
End Sub 

Ale to nie działa, ponieważ obiekt Wybór zmienia się w pętli For Each a potem to zawiera tylko pierwsze FormField zaznaczenia.

Oto moje pytanie: czy istnieje sposób na zapisanie bieżącego wyboru i załadowanie go po zmianie.

Próbowałem:

Dim mySelection as Selection 
Set mySelection = Selection 

Ale jeśli zmienić wybór, zmienna mySelection zmienia, jak również (co jest całkiem normalne ...) i nie mogę znaleźć żadnych sposób sklonować obiektu .

Czy ktoś ma pomysł, jak to zrobić?

Dzięki

Odpowiedz

10

użyć innego odniesienia do "kopia":

Dim selBkUp As Range 
Set selBkUp = ActiveDocument.Range(Selection.Range.Start, Selection.Range.End) 

Albo użyć Duplikat:

Dim selBkUp As Range 
selBkUp = Selection.Range.Duplicate 
0

Selection.Range jest automatycznie duplikat, więc można po prostu zrobić:

Dim selBkUp As Range 
Set selBkUp = Selection.Range 
Powiązane problemy