2017-09-14 43 views
-1

我有一個以文檔形式存在的100,000個問題的問題銀行。這些問題在文字中包含一些包含圖像。是否有任何有效的方法一次提取問題(,包括圖像)並將它們導入到SQL數據庫中?寧願不必將文本轉換爲圖像,因爲這些問題可能需要編輯。謝謝!將Word文檔中的內容提取到SQL數據庫的最佳方法是什麼?

+0

當你說SQL數據庫時,你是否有任何特定的dbms? – jarlh

+0

@jarlh感謝您的及時回覆。使用的dbms是MS SQL Server Management Studio 17.2。仔細一看,一些問題包含Word對象,如空框。可以肯定的是,這會讓事情變得複雜...... VBA腳本仍然會是一條路嗎? – dasanibottle

+0

我更換了一些標籤,以獲得更好的關注。 – jarlh

回答

0

這裏是一個開始

分離問題編號,問題文本,每個答案數量以及每個答案文字

然後將它們打印在即時窗口

,請與您的文檔

的一個嘗試
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

對不起,遲了回覆,目前正趕上其他項目。非常感謝您分享代碼,只要我有時間繼續完成該項目,就會立即更新進度。 – dasanibottle

相關問題