>>672です
>>804さん度々ありがとうございます。
アドバイスに従って、選択除去法を書いてみました。
最初、If関数でループの変数が、まだ残ってる数字の中にあるかという考えで書いたんですが、
それだと、前のと変わらない事に気付きまして、下の様に書き直しました。
以前のものよりさらに速くなりましたが、考え方はこんな感じでいいでしょうか?
>>804さん始めレスくださったみなさん大変勉強になりました。ありがとうございました。

Dim sData As String     '書込み用データ
Dim strBuff(6) As String   '数字格納データ
Dim sKumiawase(7) As String '残りの組合わせ文字列
Dim i As Integer       'ループ用カウンタ1
Dim j As Integer       'ループ用カウンタ2
Dim k As Integer       'ループ用カウンタ3
Dim l As Integer       'ループ用カウンタ4
Dim m As Integer       'ループ用カウンタ5
Dim n As Integer       'ループ用カウンタ6
Dim o As Integer       'ループ用カウンタ7
Dim p As Integer       'ループ用カウンタ8

For i = 1 To 8
 sKumiawase(0) = "01234567"
 strBuff(0) = Get_Number(i, sKumiawase(0), sKumiawase(1))
 For j = 1 To 7
  strBuff(1) = Get_Number(j, sKumiawase(1), sKumiawase(2))
  For k = 1 To 6
   strBuff(2) = Get_Number(k, sKumiawase(2), sKumiawase(3))
   For l = 1 To 5
    strBuff(3) = Get_Number(l, sKumiawase(3), sKumiawase(4))
    For m = 1 To 4
     strBuff(4) = Get_Number(m, sKumiawase(4), sKumiawase(5))
     For n = 1 To 3
      strBuff(5) = Get_Number(n, sKumiawase(5), sKumiawase(6))
      For o = 1 To 2
       strBuff(6) = Get_Number(o, sKumiawase(6), sKumiawase(7))
        sData = strBuff(0) & strBuff(1) & strBuff(2) & strBuff(3) & strBuff(4) & strBuff(5) & strBuff(6) & sKumiawase(7)
        Print #FileNumber, sData
      Next o
     Next n
    Next m
   Next l
  Next k
 Next j
Next i

Public Function Get_Number(i As Integer, sKumiawase1 As String, sKumiawase2 As String) As String
 Dim sLeft As String   '取り出した数字の左側の文字列
 Dim sRight As String  '取り出した数字の右側の文字列
 Dim iMojisuu As Integer '全体の文字数

 iMojisuu = Len(sKumiawase1)
 sLeft = Left(sKumiawase1, i - 1)
 sRight = Mid(sKumiawase1, i + 1, iMojisuu - i)
 sKumiawase2 = sLeft & sRight
 Get_Number = Mid(sKumiawase1, i, 1)

End Function