Update excel-fields met tekst uit word-docs

Pagina: 1
Acties:

  • onne
  • Registratie: December 2000
  • Laatst online: 21:39
Hallo,

wat ik probeer te maken is het volgende:

Ik heb een excel-bestand (het dashboard) met een aantal rijen met productcodes, bijvoorbeeld 1,2,3,4. Achter de productcode komt de status te staan.

De status is simpelweg een stuk tekst uit een word bestand.

Het is de bedoeling dat er in het excel bestand een knop komt die de status update.
Dus het word-bestand erbij zoekt, en de status in het excel bestand vervangt met de nieuwe tekst in het word bestand. (het format voor de bestandsnaam van de word-documenten kan fixed gemaakt worden)

Dit moet dan voor een hele rij producten gebeuren, met bijbehorende word-bestanden. Maar als het met 1 lukt, lukt de rest ook wel.

Ik weet niet goed waar ik moet beginnen. Heeft iemand tips?
Als m'n uitleg niet duidelijk is hoor ik het wel :)

Alvast bedankt!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

VBa is the keyword you are looking for ;)

Zoek naar tutorials, neem macro's op en kijk naar de code, pas die aan en breidt ze uit tot hetgeen je wilt :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

het kan misschien ook zonder vba. open het worddocument en maak bladwijzers (bookmarks) voor de tekstgebieden die de ove te brengen gegevens bevatten.
met bewerken->ga naar->bladwijzer een bladwijzer selecteren en kopiëren en dan in excel plakken speciaal koppeling unicode tekst. de volgende formule verschijnt:
code:
1
=Word.Document|'D:\test\bwtest.doc'!'!testbladwijzer'

hier is de versienummer .8 weggehaald zodat de formule onafhankelijk is van de wordversie.
als het worddocument bijgewerkt wordt, zal de excelinhoud ook wijzigen.
vba is waarschijnlijk toch wel de meer robuuste manier.

[ Voor 5% gewijzigd door Verwijderd op 13-03-2008 14:42 ]


  • onne
  • Registratie: December 2000
  • Laatst online: 21:39
Bedankt voor de reacties!

Ik ben al een stuk verder gekomen. Het lukt me nu wel tekst te selecteren en te importeren als het om platte tekst gaat.
Echter het probleem zit hem nu in het feit dat de selectie op een protected form in word gemaakt moet worden.
Ik dacht dus dat het een idee is om eerst de beveiliging van het form te halen, dan de selectie te maken en vervolgens de beveiliging weer terug te zetten.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub Rectangle1_Click()

Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open("D:\Word-Excel\7.doc")

If ActiveDocument.ProtectionType <> wdNoProtection Then
    ActiveDocument.Unprotect Password:=""
    wdApp.Selection.MoveDown Unit:=wdLine, Count:=10
    wdApp.Selection.MoveRight Unit:=wdCharacter, Count:=25, Extend:=wdExtend
    wdApp.Selection.Copy
    Worksheets(1).Select
    Range("b3").Select
    ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
    False
    Range("A1").Select
Else
    wdApp.Selection.MoveDown Unit:=wdLine, Count:=10
    wdApp.Selection.MoveRight Unit:=wdCharacter, Count:=25, Extend:=wdExtend
    wdApp.Selection.Copy
    Worksheets(1).Select
    Range("b3").Select
    ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
    False
    Range("A1").Select
End If

ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
wdDoc.Close False
Set wdDoc = Nothing
wdApp.Quit
Set wdApp = Nothing
End Sub


Bij de eerste keer draaien werkt het wel, maar bij de 2e update niet (ook zie ik winword nog openstaan in de taskmanager na de eerste keer draaien). Als ik het word doc zelf open geeft hij ook een error.

Iemand een idee wat ik verkeerd doe?

  • onne
  • Registratie: December 2000
  • Laatst online: 21:39
Verwijderd schreef op donderdag 13 maart 2008 @ 14:41:
het kan misschien ook zonder vba. open het worddocument en maak bladwijzers (bookmarks) voor de tekstgebieden die de ove te brengen gegevens bevatten.
met bewerken->ga naar->bladwijzer een bladwijzer selecteren en kopiëren en dan in excel plakken speciaal koppeling unicode tekst. de volgende formule verschijnt:
code:
1
=Word.Document|'D:\test\bwtest.doc'!'!testbladwijzer'

hier is de versienummer .8 weggehaald zodat de formule onafhankelijk is van de wordversie.
als het worddocument bijgewerkt wordt, zal de excelinhoud ook wijzigen.
vba is waarschijnlijk toch wel de meer robuuste manier.
Dat is een goed idee, maakt het misschien een stuk makkelijker :)

Verwijderd

misschien wel, of anders
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Rectangle1_Click()
  Dim wdApp As Word.Application
  Dim wdDoc As Word.Document
  
  Set wdApp = New Word.Application
  Set wdDoc = wdApp.Documents.Add
  wdDoc.Range.InsertFile "D:\Word-Excel\7.doc"
  Worksheets(1).Range("b3").Value = Left(wdDoc.Paragraphs(11).Range.Text, 25)
  wdDoc.Close False
  Set wdDoc = Nothing
  wdApp.Quit
  Set wdApp = Nothing
End Sub

  • onne
  • Registratie: December 2000
  • Laatst online: 21:39
Verwijderd schreef op vrijdag 14 maart 2008 @ 13:15:
misschien wel, of anders
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Rectangle1_Click()
  Dim wdApp As Word.Application
  Dim wdDoc As Word.Document
  
  Set wdApp = New Word.Application
  Set wdDoc = wdApp.Documents.Add
  wdDoc.Range.InsertFile "D:\Word-Excel\7.doc"
  Worksheets(1).Range("b3").Value = Left(wdDoc.Paragraphs(11).Range.Text, 25)
  wdDoc.Close False
  Set wdDoc = Nothing
  wdApp.Quit
  Set wdApp = Nothing
End Sub
Bedankt, ik heb uiteindelijk de bookmark methode gebruikt:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Sub Rectangle1_Click()
Dim 1 As String
Dim 2 As String

1= "=Word.Document|'D:\Word-Excel\new\1.doc'!'!1"
2= "=Word.Document|'D:\Word-Excel\new\1.doc'!'!2"

Cells(3, 3).Formula = 1
Cells(3, 4).Formula = 2

End Sub


Nu alleen nog zorgen dat ik relative paths kan gebruiken, maar dat is een ander verhaal :)

Verwijderd

Dim 1 As String
verbazingwekkend. 7(8)7 *. tevens : waarom gebruik je nu nog vba terwijl de bookmarkformule op zichzelf volstaat?
*grapje hé. ik weet ook dat je de vars vervangen hebt

[ Voor 19% gewijzigd door Verwijderd op 17-03-2008 14:39 ]

Pagina: 1