2017-01-04 17 views
-2

Visual Basicのマクロで一括編集したい何百ものdocx文書があります。彼らはすべて、このようになります。最初の行にIDを共有:Visual BasicのWord文書をバルクで編集する

9-ZKB-S 

それとも

12-JK-17 

私は削除したいと思います「 - 」それはこのようになりますので、IDから:

9ZKBS 

それとも

12JK17 

nはどこかに私はこのような数字が続く単語持っている文書で:

Productionnumber. 42-563-12 

をそして、私はまた、マイナスの文字を削除したいと思います:

Productionnumber. 4256312 

私はどのVisual Basicのスクリプトを見つけましたワード文書を含むフォルダを選択したり、検索と置換を実行したりすることができます。各文書の最初の行

  • 上の文字間のスペース、削除 - 、各文書で

    • 削除:しかし、私は、私のような言及した特定の物事を行う方法がわかりません - と文字の間のスペースは、Productionnumberの後になります。

      Sub CommandButton1_Click() 
      Dim MyDialog As FileDialog, GetStr(1 To 500) As String '100 files is the maximum applying this code 
      On Error Resume Next 
      Set MyDialog = Application.FileDialog(msoFileDialogFilePicker) 
      With MyDialog 
      .Filters.Clear 
      .Filters.Add "All WORD File ", "*.docx", 1 
      .AllowMultiSelect = True 
      i = 1 
      If .Show = -1 Then 
      For Each stiSelectedItem In .SelectedItems 
      GetStr(i) = stiSelectedItem 
      i = i + 1 
      Next 
      i = i - 1 
      End If 
      Application.ScreenUpdating = False 
      For j = 1 To i Step 1 
      Set Doc = Documents.Open(FileName:=GetStr(j), Visible:=True) 
      Windows(GetStr(j)).Activate 
      Selection.Find.ClearFormatting 
      Selection.Find.Replacement.ClearFormatting 
      With Selection.Find 
      .Text = "search" 'Find What 
      .Replacement.Text = "find" 'Replace With 
      .Forward = True 
      .Wrap = wdFindAsk 
      .Format = False 
      .MatchCase = False 
      .MatchWholeWord = False 
      .MatchByte = True 
      .MatchWildcards = False 
      .MatchSoundsLike = False 
      .MatchAllWordForms = False 
      End With 
      Selection.Find.Execute Replace:=wdReplaceAll 
      Application.Run macroname:="NEWMACROS" 
      ActiveDocument.Save 
      ActiveWindow.Close 
      Next 
      Application.ScreenUpdating = True 
      End With 
      MsgBox "operation end, please view", vbInformation 
      End Sub 
      
  • 答えて

    0

    Using wildcardsに見て、最初の単語にパターンをテストします。たとえば(テストされていない):

    With Doc.Range.Find 
        .MatchWildcards = True 
        .Text = "<(?*)>\-<(?*)>\-<(?*)>" 
        .Replacement.Text = "\1\2\3" 'Replace With 
        ' ... the rest of the options 
    End With 
    
    関連する問題