Sql server 将Word文档中的内容提取到SQL数据库的最佳方法?
我有一个以word文档形式存在的100000个问题的题库。问题以文本形式出现,其中包含一些图片。是否有任何有效的方法一次提取一个问题(包括图像)并将其导入SQL数据库?不希望将文本转换为图像,因为问题可能需要编辑。谢谢 这是一个开始 分隔问题编号、问题文本、每个答案编号和每个答案文本 然后在即时窗口中打印它们 请用你的一份文件试试Sql server 将Word文档中的内容提取到SQL数据库的最佳方法?,sql-server,vba,import,ms-word,ssms,Sql Server,Vba,Import,Ms Word,Ssms,我有一个以word文档形式存在的100000个问题的题库。问题以文本形式出现,其中包含一些图片。是否有任何有效的方法一次提取一个问题(包括图像)并将其导入SQL数据库?不希望将文本转换为图像,因为问题可能需要编辑。谢谢 这是一个开始 分隔问题编号、问题文本、每个答案编号和每个答案文本 然后在即时窗口中打印它们 请用你的一份文件试试 Option Explicit Sub parse() Dim rgx As Object Set rgx = CreateObject("vbs
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
当你说SQL数据库时,你脑子里有什么特定的dbms吗?@jarlh谢谢你的及时回复。使用的dbms是MS SQL Server Management Studio 17.2。仔细看,有些问题包含单词对象,如空框。很确定这会让事情复杂化。。。VBA脚本还会继续吗?为了获得更好的关注,我替换了一些标记。你能在word文档的屏幕截图上贴一个链接,上面有段落标记和所有其他格式标记吗?如有必要,替换任何私有数据,但保持格式完全相同。@jsotola以下是第一页的屏幕截图:。其他页面不包含前4行文本。谢谢很抱歉迟回复,我目前正忙于其他项目。非常感谢您分享代码,我将在有时间继续该项目时尽快更新进度。