No.1の追記です。
A列のシート名に誤記がありシートが存在しない時にその旨表示して実行を続ける場合
No.1はエラーで止まります。
Dim i As Long, flg As Boolean
Dim Ws As Worksheet
With Worksheets("メイン")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
flg = False
For Each Ws In Worksheets
If Ws.Name = .Cells(i, "A").Value Then
flg = True
Exit For
End If
Next
If .Cells(i, "B").Value <> "" And .Cells(i, "B").Value <> 0 And flg = True Then
Worksheets(.Cells(i, "A").Value).PrintOut copies:=.Cells(i, "B").Value, preview:=True
ElseIf flg = False Then
MsgBox .Cells(i, "A").Value & "というシートはありません", vbInformation
End If
Next
End With