> ただ、企業コードとフィアル名は300行書かないといけない
そんなことないと思います。
いくつか方法はありますが、、、
フィルタオプションを使って、重複しない企業コードの配列を作ってから、それを利用するなら、こんな感じになります。
Sub Sample1()
Const cDir As String = "C:\usr\local\home\"
Dim rngI As Range
Dim rngU As Range
Dim shtA As Worksheet
Dim bkS As Workbook
Dim aryCode() As String
Dim idx As Long
Dim i As Long
Set shtA = ThisWorkbook.Worksheets("Sheet1")
Set rngU = shtA.Range("A1").CurrentRegion
' フィルタオプションを使って重複するレコードを無視する
rngU.Columns(1).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
idx = -1
' A列の可視セルに対してループ
For Each rngI In rngU.Columns(1).SpecialCells(Type:=xlCellTypeVisible)
If rngI.Row > 1 Then
idx = idx + 1
' 配列を拡張して最後の要素にセルの値を入れる
ReDim Preserve aryCode(0 To idx) As String
aryCode(idx) = rngI.Text
Debug.Print idx, aryCode(idx), "DD 確認? DD"
End If
Next rngI
' フィルタオプションを解除する
shtA.ShowAllData
shtA.AutoFilterMode = False
For i = 0 To idx
Debug.Print i, aryCode(i), "DD 確認? DD"
' オートフィルタをかける
rngU.AutoFilter Field:=1, Criteria1:=aryCode(i)
Set bkS = Workbooks.Add
' フィルタしたセルをコピーする
shtA.AutoFilter.Range.Copy Destination:=bkS.Worksheets(1).Range("A1")
' 保存する
bkS.SaveAs Filename:=cDir & aryCode(i) & ".csv", FileFormat:=xlCSV
bkS.Close SaveChanges:=False
Next i
shtA.AutoFilterMode = False
End Sub