| 
    
     |  | olive さん、おはようございます。 
 >「"" Then」でした。これでIf文でエラーは出なくなりました。
 >ループがまだ思い通りにはならないけど・・
 
 ループの何がどう思い通りにならないのかはわかりませんが。
 皆さんのヒントを元にちょっと工夫してみました。
 
 Sub test1()
 Dim gn1 As Variant
 Dim gs1 As Variant, gs2 As String, gs3 As String
 Dim r As Long, N As Long, prompt, Titl, def
 
 prompt = "コピー回数は?"
 Titl = "質 問?"
 def = " 10 "
 
 N = InputBox(prompt, Titl, def)
 'ファイル名選択
 gn1 = Application.GetOpenFilename
 '分岐1 キャンセルしていたらパス
 If TypeName(gn1) = "String" Then
 gs1 = Application.GetSaveAsFilename
 If TypeName(gs1) = "String" Then
 gs2 = Dir(gn1)
 For r = 1 To N
 '拡張子がきっちり3文字で付いているとして
 '新しいファイル名は元の名前に連番を付けたもの
 gs3 = Left(gs2, Len(gs2) - 4) + _
 "_" + Format(r, "000") _
 + Right(gs2, 4)
 'コピー
 FileCopy gn1, gs3
 Next r
 '
 MsgBox N & "個のファイルを作成しました", vbInformation
 Else
 MsgBox "キャンセルしました", vbExclamation, "コピー先指定"
 End If
 Else
 MsgBox "キャンセルしました", vbExclamation, "コピー元指定"
 End If
 End Sub
 
 こんな感じです。
 
 |  |