2015-12-04 82 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上的大量示例...