сделал. вот так вот кривенько правда ))
Sub test()
nums = Array(2, 3, 5, 10, 12, 13, 16, 18, 19, 20, 22, 27, 29, 30, 32, 33, 34, 38, 40)
For Each num In nums
found = False
Dim strMasterNames() As String
Dim intLowerBound As Integer
Dim intUpperBound As Integer
ActiveDocument.Pages.GetNames strMasterNames
intLowerBound = LBound(strMasterNames)
intUpperBound = UBound(strMasterNames)
Debug.Print ActiveDocument; " Lower bound:"; intLowerBound; "Upper bound:"; intUpperBound
While intLowerBound <= intUpperBound
' Debug.Print strMasterNames(intLowerBound) & vsoPage1
If strMasterNames(intLowerBound) = CStr(num) Then
found = True
End If
intLowerBound = intLowerBound + 1
Wend
Debug.Print found
If Not (found) Then
Set vsoPage1 = ActiveDocument.Pages.Add
vsoPage1.Name = CStr(num)
vsoPage1.Background = False
vsoPage1.Index = ActiveDocument.Pages.Count + 1
End If
Set vsoPage1 = ActiveDocument.Pages.ItemU(CStr(num))
Visio.Application.Addons("Convert CAD Drawings...").Run ("I:\sx " & num & ".DWG")
ActiveWindow.SelectAll
ActiveWindow.Selection.Cut
Application.AlertResponse = 7
ActiveWindow.Close
Application.AlertResponse = 0
Application.ActiveWindow.Page = Application.ActiveDocument.Pages.ItemU(CStr(num))
ActiveWindow.Paste
Next num
'Application.Settings.ShowFileSaveWarnings = True
End Sub
предложения по доработке приветсвуются )