Avatar billede olehen Nybegynder
17. februar 2008 - 13:21 Der er 8 kommentarer og
1 løsning

Word til excel

Jeg har følgende macrocode, men den stopper i den array jeg har oprettet, hvor den skal hente teksten fra dokumentet.

Data = .Range(.Range(1), .Range(1 & .Range(10000).End(xlUp).Row))

Peger på fejl ved ".end"

Jeg vil gerne have den henter over i et array, da der kan være meget tekst der skal flyttes.

Det virker fint, men langsomt med:
With wrdDoc
        .Range.Copy
        ToSheet.PasteSpecial xlPasteValues
End With

Hele koden:

Private Sub CbProject2_Change()
    Dim wrdApp As Word.Application
    Dim wrdDoc As Word.Document
    Dim rTarget As Long
    Dim Data As Variant
    Dim ToSheet As Worksheet
   
    '******************************
    Set ToSheet = ThisWorkbook.Worksheets("Projekt tekst 2")
    '******************************
   
    Application.ScreenUpdating = False
   
    If Ark1.CbProject2.Value = False Then
    ToSheet.Range("A1:A1000").EntireRow.Delete
    Exit Sub
    ElseIf Ark1.CbProject2.Value = True Then
    '******************************
    Set wrdApp = CreateObject("Word.Application")
    Set wrdDoc = wrdApp.Documents.Open("C:\Test mappe\Projekt tekst 2.doc")
    '******************************

'Get data
    rTarget = ToSheet.Range("A65000").End(xlUp).Row + 1
    With wrdDoc
        Data = .Range(.Range(1), .Range(1 & .Range(10000).End(xlUp).Row))           
        ToSheet.Cells(rTarget, "A").Resize(UBound(Data, 1), UBound(Data, 2)) = Data 
    End With
    wrdApp.Quit         
    Set ToSheet = Nothing
    Set wrdDoc = Nothing
    Set wrdApp = Nothing
    'ActiveWorkbook.Saved = True
End If
Application.ScreenUpdating = True
End Sub
17. februar 2008 - 13:28 #1
With wrdDoc
        Data = .Range(.Range(1), .Range(1 & .Range(10000).End(xlUp).Row))           
        ToSheet.Cells(rTarget, "A").Resize(UBound(Data, 1), UBound(Data, 2)) = Data 
    End With

Du kører på dokumentet, og forsøger at bruge End(xlUp).Row inde i dokumentet - det er Excel kommandoer/metoder - de vil ikke virke på work.

Skal du bare have ALT hvad der findes i dokumentet?
Er det lavet i en tabel i Word, siden du forsøger dig med et array?
Avatar billede olehen Nybegynder
17. februar 2008 - 13:34 #2
Der kan være tekst og tabeller i dokumentet. Men lad os antag i første omgang at det er ren tekst.. Jeg tænkte det ville være hurtigere at gemme teksten i en array end en streng..

Der er fra et word dokument.
Avatar billede olehen Nybegynder
17. februar 2008 - 14:41 #3
Skal bare have alt med i dokumentet..
17. februar 2008 - 16:17 #4
I stedet for det der With wrdDoc til End With indsætter du dette

        wrdDoc.Activate
        wrdApp.Selection.WholeStory
        wrdApp.Selection.Copy
        ThisWorkbook.Activate
        ToSheet.Range("A1").PasteSpecial (xlPasteAll)

Det var en måde at gøre det på.
Avatar billede olehen Nybegynder
17. februar 2008 - 16:53 #5
Det er det samme som jeg skrev  i starten af indlægget, som jeg havde fået til at virke. Jeg synes bare det går langsomt med at hente fra et word doc.

Har modificeret den jeg havde til:

        rTarget = ToSheet.Range("A65000").End(xlUp).Row + 1
        wrdDoc.Range.Copy
        ToSheet.Cells(rTarget, "A").PasteSpecial (xlPasteValues)

Virker også fint, men igen er langsom til at hente over.

Er det hurtigere at gøre det den anden vej rundt - fra excel og over i word?
17. februar 2008 - 20:14 #6
måske kan du kigge lidt på wrdDoc.StoryRange(wdMainStory) ... så for du da fat i en word range.

I Excel kan du indsætte et OLE object, så kan lege word dokument for dig, med mindre du vil have det i celler...

    ActiveSheet.OLEObjects.Add(ClassType:="Word.Document.8", Link:=False, DisplayAsIcon:=False).Activate



Du kan også løbe igennem alle Paragrahs dokumentet, og så sætte indholdet ind i excel celler...

Du må igang med at lege
Avatar billede olehen Nybegynder
17. februar 2008 - 22:11 #7
Ja, der er ikke andet for. Har ikke programmeret så meget mellem excel og word, så skal lige have metoden og funktionerne til word på plads.

Jeg kan høre du er superuser på dette område, så håber jeg du kan understøtte mine løsninger hvis jeg graver mig ned i et hul..

Tak for hjælpen indtil videre.. Vil du have pointene lægger du et svar..
17. februar 2008 - 23:12 #8
Ta du bare pointene retur - du skal jo selv gøre arbejdet, du har max fået nogle pointers.
Avatar billede olehen Nybegynder
21. februar 2008 - 00:02 #9
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester