Moin
Den letzten Punkt zuerst:
dim musst Du nicht verwenden, aber Du solltest es müssen. Einfacher:
Wenn Du oben in Deinem Modul die Zeile
Option Explicit
schreibst, so musst Du die Variablen mit „dim“ deklarieren. Es vermeidet aber, dass VBA einen Tippfehler für eine neue Variable hält.
Ausnahme: Die Variablen sind Parameter der Prozedur (oder einer Funktion). Dann reicht beispielsweise
Public Sub x(Name As String, Alter As Integer)
, um „Name“ und „Alter“ zu deklarieren, das Schlüsselwort „dim“ ist dann nicht nötig.
(„as String“, „as Integer“ etc kann auch weggelassen werden, dann sind die Variablen vom Typ „Variant“)
Zur Syntax.
Variante 1:
Public Sub xxx()
Dim i As Integer
Dim pfad As String, dateiname As String
For i = 1 To 27
If i = 1 Then
pfad = "C:\tmp"
dateiname = "hallo.txt"
End If
If i = 2 Then
pfad = "C:\tmp\docs"
dateiname = "wasgeht.txt"
End If
' [...]
meineSubroutine pfad, dateiname
Next
End Sub
OK, nicht so schön: Bei jedem Durchlauf gibt es unnötige If-Abfragen. Besser wäre eine Switch-Abfrage:
Variante 2:
Public Sub yyy()
Dim i As Integer
Dim pfad As String, dateiname As String
For i = 1 To 27
Select Case i
Case 1:
pfad = "C:\tmp"
dateiname = "hallo.txt"
Case 2:
pfad = "C:\tmp\docs"
dateiname = "wasgeht.txt"
[...]
End Select
meineSubroutine pfad, dateiname
Next
End Sub
Gut. Es ist Freitag, ich bin nicht mehr ganz wach. Aber ich frage mich, ob es das nicht auch tut:
Variante 3:
Public Sub zzz()
meineSubroutine "C:\tmp", "hallo.txt"
meineSubroutine "C:\tmp\docs", "wasgeht.txt"
meineSubroutine "C:\tmp\xls", "sandmann.owd"
[...]
End Sub
Ist auf jeden Fall kürzer… 
Schönes Wochenende
Leo