Toon posts:

Batch Word documenten naar Excel converteren

Pagina: 1
Acties:
  • 216 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben al een paar dagen op het internet op zoek naar een programma waar je word documenten uit een geselecteerde map om kan zetten naar excel zonder gekke word-tags (dus plain-tekst) erin. De gehele tekst moet dan in een (1) cel geplaatst worden.

Is er iemand die zo'n tooltje weet?

  • 3DDude
  • Registratie: November 2005
  • Laatst online: 02:01

3DDude

I void warranty's

ja het heet klembord

Be nice, You Assholes :)


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Schrijf er een scriptje voor. F1 geeft een goede uitlegvan VBA, ook kan je er natuurlijk een boekje voor kopen resp. wat websites bezoeken.
De gehele tekst moet dan in een (1) cel geplaatst worden.
Hoe groot is de tekst? Een cel kan niet zo gek veel tekens bevatten.

Edit:
Een beetje te bijdehand zonder toegevoegde waarde ;)

[ Voor 26% gewijzigd door F_J_K op 02-01-2007 21:43 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Zoiets kun je met VBA (Visual Basic for Applications) wel voor elkaar krijgen. Dus even een script schrijven in Excel.

Voorbeeldje:

Visual Basic .NET:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Sub Macro1()

' Om dit script te kunnen gebruiken, moet je in de Microsoft Visual Basic editor
' in het menu Tools -> References de Microsoft Word 11.0 Object Library selecteren
' (vervang 11.0 evt. door een andere versie).

Const mypath = "D:\"

Dim wdApp As Word.Application, wdDoc As Word.Document
Dim docFileName As String, docContents As String
Dim xlWorkbook As Workbook

' maak verbinding met een bestaande Word sessie of start een nieuwe sessie
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then 'Word isn't already running
    Set wdApp = CreateObject("Word.Application")
End If
On Error GoTo 0
wdApp.Visible = True

' zoek het eerste .doc bestand in de directory <mypath>
docFileName = Dir(mypath + "*.doc", vbNormal)
While docFileName <> ""
    ' sla tijdelijke bestanden, waarvan de bestandsnaam begint met een tilde, over
    If Left(docFileName, 1) <> "~" Then
        ' open het Word document
        Set wdDoc = wdApp.Documents.Open(mypath + docFileName)
        ' kopieer de tekst
        docContents = wdDoc.Content.Text
        ' sluit het Word document
        wdDoc.Close
        ' maak een nieuw Excel workbook
        Set xlWorkbook = Workbooks.Add
        ' zet de tekst in cell A1 van een huidige (geselecteerde) sheet
        xlWorkbook.ActiveSheet.Cells(1, 1) = docContents
        ' sla het workbook op met dezelfde naam als het Word document (wel met extensie .xls)
        xlWorkbook.SaveAs mypath + Left(docFileName, Len(docFileName) - 3) + "xls"
        ' sluit het Excel workbook
        xlWorkbook.Close
    End If
    
    ' zoek de volgende file in de directory
    docFileName = Dir
Wend

' sluit Word af
wdApp.Quit

End Sub

Dit script zoekt alle Word bestanden (*.doc) in de directory mypath (hier: D:\, vervang dit door je eigen directory) en opent ze één voor één. De inhoud wordt in een nieuwe worksheet van Excel op regel 1 in kolom A geplaatst en daarna opgeslagen met dezelfde naam als het Word document (wel met extensie .xls natuurlijk). Succes ermee!

[ Voor 105% gewijzigd door Stamgastje op 02-01-2007 22:34 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

F_J_K schreef op dinsdag 02 januari 2007 @ 21:43:[...]
Hoe groot is de tekst? Een cel kan niet zo gek veel tekens bevatten.
[...]
In the versions of Microsoft Excel listed at the beginning of this article, a cell can contain up to 32,767 characters. However [...]If a cell contains more than 1,024 characters, or if it contains a formula that returns a result of more than 1,024 characters, only approximately the first 1,024 characters are displayed in the cell.
En ruim voordat die grens bereikt is, is het geheel al onwerkbaar traag. Dus waarom je in vredesnaam je spreadsheet wilt gebruiken als documenten opslag ontgaat me? :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
niesje schreef op dinsdag 02 januari 2007 @ 23:35:
[...]


[...]


En ruim voordat die grens bereikt is, is het geheel al onwerkbaar traag. Dus waarom je in vredesnaam je spreadsheet wilt gebruiken als documenten opslag ontgaat me? :)
Misschien een beetje omslachtig ja, maar ik moet heel veel (lees: stuk of 10.000) word documenten in een database gaan zetten. Ik ben bekend met VB.NET dus bovenstaand scriptje gaat me wel lukken denk ik!! Als mensen nog suggesties hebben dan hoor ik het graag!!

  • brokenp
  • Registratie: December 2001
  • Laatst online: 22:15
waarom Excel als het in een database moet? Pomp het dan meteen in een access bestand....
Deze zijn er nl voor gemaakt om met dergelijke hoeveelheden data om te gaan.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Verwijderd schreef op woensdag 03 januari 2007 @ 00:10:
[...]
Misschien een beetje omslachtig ja, maar ik moet heel veel (lees: stuk of 10.000) word documenten in een database gaan zetten. Ik ben bekend met VB.NET dus bovenstaand scriptje gaat me wel lukken denk ik!! Als mensen nog suggesties hebben dan hoor ik het graag!!
Dat gaat dus niet werken in Excel. Een spreadsheet is geen database, en de eerste de beste db lijkt me ook niet per definitie de juiste keuze. Laten we hopen dat er een reden is om die 10000 documenten in een database te proppen, m.a.w. er is een doel geformuleerd dat bereikt moet worden, en dat doel is *niet* 10000 documenten in een database, maar bijvoorbeeld beter ontsluiten van de informatie in die documenten. Daar zijn allerlei programma's en theorieen voor ontwikkeld, en Excel en Access horen daar -helaas- niet bij. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Ik was er even vanuit gegaan dat je om de een of andere reden allemaal kleine Word documentjes (met max 1 regel met getallen ofzo) had die door een of ander programma werden gegenereerd. En die je wilde samenvoegen in een of meerdere Excel bestanden om er berekeningen op los te laten. In dat geval zou mijn script van enig nut kunnen zijn.

Echter, als het idd gaat om het bundelen van Word documenten in een database, dan is het, zoals al aangegeven in de reacties hierboven, absoluut geen goed idee om daarvoor Excel te gebruiken. Als het er bijvoorbeeld om gaat dat de bestanden doorzocht moeten kunnen worden op keywords, zou je beter aan een oplossing als Google Desktop Search kunnen denken (of gewoon met Office zelf: zie menu "File -> File Search" in Word).

Of misschien een mooiere oplossing als het een hoop informatie is die voor bijv. een heel bedrijf ontsloten moet worden: converteer de Word documenten (bijv. in een batch job met Adobe Acrobat) naar PDF formaat en gebruik ht://Dig als search engine zodat de documenten via een web page te doorzoeken zijn. Door het gebruik van PDF als formaat voorkom je tevens incompatibiliteit, elke recente PDF reader op elk platform zal de documenten kunnen openen.

[ Voor 22% gewijzigd door Stamgastje op 03-01-2007 08:24 ]


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 22-07 09:58

Tukk

De α-man met het ẞ-brein

Verwijderd schreef op woensdag 03 januari 2007 @ 00:10:
[...]


Misschien een beetje omslachtig ja, maar ik moet heel veel (lees: stuk of 10.000) word documenten in een database gaan zetten. Ik ben bekend met VB.NET dus bovenstaand scriptje gaat me wel lukken denk ik!! Als mensen nog suggesties hebben dan hoor ik het graag!!
1. Met behulp van een VB.NEt app Word als OLE-object benaderen.
2. Database connectie opbouwen
3. Per word document:
Met behulp van OLE de plain-tekst er uit halen
Insert maken voor DB
4. commit


Wat gaat er volgens jou niet goed met deze oplossing?

Je kan trouwens in veel Databases als BLOB op te slaan, mogelijk is dit ook een oplossing voor je. Dan staan de Word-documenten zelf in een database.
Als je alleen de tekst wil hebben zul je moeten kijken wat de max is dat je DB aan kan als string/varchar/clob. Welke DB hebben we het over?

[ Voor 12% gewijzigd door Lustucru op 03-01-2007 11:19 . Reden: of access een db is of niet is hier offtopic en zonder verdere onderbouwing gewoon een trol ]

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


Verwijderd

Topicstarter
Het is bedoeld voor een nieuwe website/CMS waar we heel veel technische artikelen willen aanbieden. Deze artikelen zijn reeds ingescand in Word documenten. De CMS bouwer die leest dingen in via Excel, maar ik kan natuurlijk ook gewoon SQL commando's aanmaken in een .txt of .sql bestand. Zelf kan ik niet bij de database dus moet het via een tussenweg.

Verwijderd

Geeneens een slecht plan om deze artikelen in een database onder te brengen, me dunkt. Dit maakt het eenvoudig om er een ordening of zoekfunctionaliteit in aan te brengen.

Hoe wil je ze vervolgens aanbieden? Tip: het is zeer goed mogelijk om een webapplicatie deze bestanden in PDF te genereren. Google resultaten

Misschien is het mogelijk (een deel van) de layout van het originele word bestand te behouden.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Het lijkt me inderdaad geen raar plan om de artikelen in een DB op te slaan (en redelijk verstandig dat de beheerder ervan anderen niet direct in de DB laat schrijven). Maar idd. een heel slecht plan om dat dan via Excel te doen. Zeker als via .txt of zelfs .sql mogelijk is.

offtopic:
Standaard vanaf Excel in willen lezen? Raar.

En belangrijker: ingescande artikelen? Denk je wel aan copyright, aan scanfouten en aan het voor de geinteresseerde ook aanbieden van het gescande image? Of inderdaad denken aan (copyright en) PDF met een tekst- en een imagelaag.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
PDF's worden inderdaad automatisch gegenereert. Het gaat om eigen materiaal dus copyright is niet van toepassing. Verder willen we eerst de plain tekst in de database zetten en dan de opmaak gaan verzorgen. Als er een goede manier is om de opmaak om te zetten naar html codes en de images eruit te halen en die apart te saven dan is het helemaal geweldig. Opmaak zou wel kunnen denk ik maar de images uit het word bestand halen word lastig denk ik.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Als er een goede manier is om de opmaak om te zetten naar html codes en de images eruit te halen en die apart te saven dan is het helemaal geweldig.
Dat wil je dus vooral niet doet. Een CMS is juist handig om vorm en inhoud van elkaar te scheiden...

Images uit een Word bestand halen kan best, ook weer middels een stukje VBA. Zal je wel zelf moeten (laten) maken, heb ik zo niet op de plank liggen :P

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

CMS is dan net weer een nieuwe term voor me.

De layout van het word-document gaat geheel verloren als je het als platte tekst opslaat, nietwaar? Het resulterende document is niet meer leesbaar (alinea's, opsommingstekens, vet gedrukt is dan verdwenen).

Is er geen handige manier om dit te behouden? Een soort markup in de platte tekst die vervolgens door een sjabloon omgezet wordt in: alinea's, vette tekst etc. in html danwel iets anders.

@poster: ik heb geen ervaring in het omzetten van word layout in een andere layout, maar ik zou de volgende procedure volgen:
1. converteren naar rtf
2. platte tekst als string importeren
3. wis ongewenste code
4. replace rtf tags met eigen tags (bv /par door <p> en /line door <br>)

Als ik bvenstaande reactie mag geloven is dat niet de bedoeling. Ik kan er ook wel wat gaten in vinden.

  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Verwijderd schreef op woensdag 03 januari 2007 @ 09:01:
Het is bedoeld voor een nieuwe website/CMS waar we heel veel technische artikelen willen aanbieden. Deze artikelen zijn reeds ingescand in Word documenten. De CMS bouwer die leest dingen in via Excel, maar ik kan natuurlijk ook gewoon SQL commando's aanmaken in een .txt of .sql bestand. Zelf kan ik niet bij de database dus moet het via een tussenweg.
Verwijderd schreef op woensdag 03 januari 2007 @ 13:28:
PDF's worden inderdaad automatisch gegenereert. Het gaat om eigen materiaal dus copyright is niet van toepassing.
Met deze gegevens in het achterhoofd zou ik toch echt met de PDF bestanden aan de slag gaan. Dan kan iedereen je bestanden lezen en blijft de opmaak ongewijzigd. Verder zijn er meerdere systemen om PDF files te indexeren en via het web doorzoekbaar te maken. Bijvoorbeeld het eerder door mij genoemde ht://Dig. En de CMS bouwer kan vast wel een externe pagina (van de zoekmachine) in het CMS opnemen.

[ Voor 61% gewijzigd door Stamgastje op 03-01-2007 20:45 ]

Pagina: 1