2015-12-04 77 views
0

我有以下VBA代碼工作:修改一個Excel VBA腳本在Word

Sub test2() 
    Dim w1 As Worksheet 
    Dim w2 As Worksheet 

    Dim k As Long 

    Dim c As Range 
    Dim d As Range 
    Dim strFA As String 

    Set w1 = Sheets("Sheet1") 
    Set w2 = Sheets("Sheet2") 

    w2.Cells.Clear 
    k = 1 

    With w1.Range("A:A") 
     Set c = .Cells.Find("FirstThing", After:=.Cells(.Cells.Count), lookat:=xlWhole) 
     strFA = "" 
     While Not c Is Nothing And strFA <> c.Address 
      If strFA = "" Then strFA = c.Address 
      If IsError(Application.Match(c.Offset(0, 1).value, w2.Range("A:A"), False)) Then 
       Set d = .Cells.Find("SecondThing", c, , xlWhole) 
       w2.Range("A" & k).value = c.Offset(1, 0).value 
       w2.Range("B" & k).value = d.Offset(0, 1).value 
       k = k + 1 
      End If 
      Set c = .Cells.Find("FirstThing", After:=c, lookat:=xlWhole) 
     Wend 
    End With 

End Sub 

代碼工作基本上是這樣的:

  1. 去翻Sheet1中的某些特定的詞組。
  2. 找到短語後,將單元格中的值放在Sheet2中的一行上
  3. 搜索第二個短語。
  4. 廣場中的其他值旁邊的小區的小區一行在Sheet2中
  5. 重複的值現在

。我有相同的數據,不要問我爲什麼,在.doc文件中。我想創建一些類似於此代碼的內容,這些代碼將通過並查找第一個短語,並將下一個n個字符放在Excel工作表中,然後查找第二個短語並將下一個m個字符放在行旁邊該單元格包含前n個字符。

我不確定用bash腳本來做這件事是否更好,或者是否可以用VBA做到這一點,所以我已經將它們作爲標籤。

+0

我不確定您是否可以使用流編輯器(如sed)編輯doc文件。那麼我會拭目以待,:) – sjsam

+0

將數據轉換爲Excel? – Chrismas007

+0

@ Christmas007你知道一個簡單的方法來做到這一點嗎? – 114

回答

0

你的問題似乎是:「我不知道它是否是更好地與一個bash腳本或者是否有可能用VBA這樣做是爲了做到這一點」

這個問題的答案是:你會需要VBA,特別是因爲這是一個* .doc文件 - docx將是另一回事。

爲了弄清楚是什麼,首先嚐試在Word中手動執行任務。更具體地說,如何使用Word的「查找」功能。當你弄明白了的時候,把這些動作記錄在一個宏中以獲得你的語法的起點。 Excel端用於編寫數據的代碼基本保持不變。

您還需要決定代碼的駐留位置:在Word中還是在Excel中。這將意味着研究如何從您選擇的內部運行其他應用程序 - 在此處以及在Internet上的大量示例...