J'ai une banque de questions de 100 000 questions sous la forme de documents Word. Les questions sont dans le texte avec quelques images contenant. Existe-t-il un moyen efficace d'extraire les questions une à la fois (y compris les images) et de les importer dans une base de données SQL? Je préférerais ne pas avoir à convertir le texte en images car les questions pourraient devoir être modifiées. Merci!Le meilleur moyen d'extraire du contenu dans un document Word vers une base de données SQL?
-1
A
Répondre
0
ici est un début
sépare le numéro de question, texte de la question, chaque numéro de réponse et chaque texte de réponse
il les imprime dans la fenêtre immédiate
s'il vous plaît essayer avec un de vos documents
Option Explicit
Sub parse()
Dim rgx As Object
Set rgx = CreateObject("vbscript.regexp")
rgx.MultiLine = True
rgx.Global = True
rgx.pattern = "^[\s]+|[\s]+$"
Dim s As String
Dim i As Integer
Dim qNum As Long
Dim qest As String
Dim aNum As Integer
Dim answ As String
Dim par As Paragraphs
Set par = ActiveDocument.Paragraphs
Dim p As Integer
For p = 1 To par.Count
s = rgx.Replace(par(p).Range.Text, "") ' trim whitespace (leading and trailing)
' Debug.Print "--- "; s
Select Case Left(s, 1)
Case "0" To "9" ' question found
qNum = CDec(Split(s, ".")(0)) ' number
i = 1
qest = rgx.Replace(Split(s, ".", 2)(1), "") ' first line of text
Do While True
s = rgx.Replace(par(p + i).Range.Text, "") ' check for multiline question
If Len(s) > 0 Then
If Left(s, 1) = "(" Then
p = p + i - 1 ' it is an answer line, so exit
Exit Do
Else
qest = qest & vbNewLine & s ' assemble multiline question
End If
End If
i = i + 1
Loop
Debug.Print vbNewLine; "question # "; qNum; vbTab; qest
Case "(" ' answer found
aNum = CDec(Mid(s, 2, 1)) ' number
answ = Split(s, ")", 2)(1) ' text
Debug.Print "answer # "; aNum, answ
End Select
Next p
End Sub
+0
Désolé pour la réponse tardive, suis actuellement rattrapé avec d'autres projets. Merci beaucoup de partager le code, je mettrai à jour sur les progrès dès que j'ai le temps de continuer sur ce projet. – dasanibottle
Lorsque vous parlez de base de données SQL, avez-vous des dbms spécifiques en tête? – jarlh
@jarlh Merci pour la réponse rapide. Le dbms utilisé est MS SQL Server Management Studio 17.2. En y regardant de plus près, certaines questions contiennent des objets Word tels que des boîtes vides. Assez sûr que ça va compliquer les choses ... Un script VBA serait-il toujours la solution? – dasanibottle
J'ai remplacé certaines des étiquettes, pour obtenir une meilleure attention. – jarlh