Получить путь для текущей папки:

Sub NameTest()
 Dim MyPath As String, MyCompletePath As String
 MyPath = ActiveWorkbook.Path
 MyCompletePath = ActiveWorkbook.FullName
 MsgBox MyPath & vbLf & MyCompletePath
End Sub

Альтернативные варианты: MyDir = CurDir, ThisWorkbook, .Parent.Parent.Path

Взято с sql.ru ответ подсказали на ixbt, Nosorog. Шаблон представляет обычный вордовский документ, места для вставки - названия столбцов в Экселе, обрамленные каким-либо символом: #номер строки#, #наименование# и т.д. Макрос в Экселе запускает Ворд, открывает этот документ, делает поиск-замену по этим "меткам", сохраняет файл с нужным именем.

Sub mr_ZM()
Dim wrd As Object, doc As Object, x As Range, y As Range
Set wrd = CreateObject("word.application")
'wrd.Visible = True
For Each x In Range(Range("A2"), Range("A1").End(xlDown))
Set doc = wrd.Documents.Open(Filename:="c:\temp\mr_ZM шаблон1.doc", ConfirmConversions:= _
False, ReadOnly:=True)
For Each y In Range(x, x.End(xlToRight))
With doc.Range.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "#" & y.End(xlUp) & "#"
.Replacement.Text = y.Text
.Forward = True
.Wrap = 1 'wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.Execute Replace:=2 'wdReplaceAll
End With
Next
doc.SaveAs "C:\temp\output\" & x & "_" & x.Offset(0, 1)
doc.Close 0
Next
wrd.Quit

End Sub 

Работать по выделенному диапазону

Private Sub Test()
 Dim rng As Range
 For Each rng In Application.Selection
  Cells(rng.Row, rng.Column) = "Hello"
 Next rng
End Sub

Sub CurrentSelection()
 Dim intRows As Integer
 Dim intCols As Integer
 Dim i As Integer, j As Integer

 intRows = Selection.Rows.Count
 intCols = Selection.Columns.Count

 For i = 1 To intRows
  For j = 1 To intCols
   With Selection.Cells(i, j)
    .Value = "Hello"
   End With
  Next j
 Next i
End Sub