| 
    
     |  | ナンか「意味を考えずに継接ぎしただけのコード」に見えますね・・。 基礎から学習しなおさないと、まともなコードは作れませんよ。
 いちおう添削しておきます。
 
 Sub 違うやつ改()
 Dim MySh As Worksheet
 Dim FR As Range
 Dim Nm As String, No As String, Fol As String
 Dim Fil As String, NewF As String
 Dim 材料名 As String, サイズ As String, 長さ As String
 Dim bb As Variant, 数量 As Variant, 製番 As Variant
 Const Ph As String = _
 "C:\Documents and Settings\mkn\デスクトップ\"
 
 On Error Resume Next
 Set MySh = Workbooks("明細.xls").Worksheets(2)
 If Err.Number <> 0 Then
 Workbooks.Open ThisWorkbook.Path & "\明細.xls"
 Set MySh = ActiveWorkbook.Worksheets(2)
 Err.Clear
 End If
 On Error GoTo 0
 Nm = InputBox("図面の必要な材料コードを入力してください 例:***-****")
 If Nm = "" Then GoTo ELine
 Set FR = MySh.Range("C1:C600").Find(Nm, , xlValues)
 If FR Is Nothing Then
 MsgBox Nm & vbLf & "は見つかりません。", 48
 GoTo ELine
 End If
 With MySh.Hyperlinks
 If .Count > 0 Then .Delete
 End With
 Do
 bb = FR.Offset(, -1).Value
 If VarType(bb) = 8 Then
 Select Case bb
 Case "A", "B", "C", "D", "E", "F", "G"
 No = "00" & bb
 Case Else
 GoTo ELine
 End Select
 ElseIf VarType(bb) = 2 Or VarType(bb) = 3 Then
 Select Case bb
 Case Is < 10
 No = "00" & bb
 Case Is >= 10
 No = "0" & bb
 End Select
 Else
 GoTo ELine
 End If
 材料名 = FR.Offset(, 1).Value
 サイズ = FR.Offset(, 2).Value & FR.Offset(, 3).Value & _
 FR.Offset(, 4).Value
 長さ = FR.Offset(, 5).Value & FR.Offset(, 6).Value & _
 FR.Offset(, 7).Value
 数量 = FR.Offset(, 8).Value
 製番 = Workbooks("明細.xls").Worksheets(1).Range("B3").Value
 Fol = Dir(Ph & 製番 & "部材明細表(ヘッド・テール)", 16)
 NewF = 製番 & MySh.Name & "\" & No & 材料名 & "×" & サイズ & _
 "×" & 長さ & "-" & 数量 & "s.dwg"
 If Fol <> "" Then
 Fil = Dir("C:\加工図\" & FR.Value & ".dwg", 0)
 If Fil <> "" Then
 FileCopy "C:\加工図\" & Fil, Ph & NewF
 Else
 FR.Interior.Color = RGB(255, 255, 0)
 End If
 Else
 Call フォルダの作成1
 FileCopy "C:\加工図\" & FR.Value & ".dwg", Ph & NewF
 End If
 Set FR = FR.Offset(1)
 Loop Until FR.Value = ""
 Set FR = Nothing
 ELine:
 Set MySh = Nothing
 End Sub
 
 動作のテストは、こちらで出来るはずも無いのでしていません。
 ロジックの考え方も含めて、よくコードを解析してみて下さい。
 
 |  |