ACCESSで作成した在庫作成リストをEXCELへ出力
前回、ACCESSで出庫リクエストに対して在庫数の不足している品目リストをPDFで出力する様にしました。
各部署へ配布するには都合が良いのですが、それに対する作成状況を把握するのにEXCELへもデータを出力する事にしました。
本日はその機能を実装です。
取り合えず、メインの取引先2社分の不足数作成依頼リスト、適正在庫数を確保する為の作成依頼リストの計3つのリストを出力します。
不足数作成依頼リストは前回のクエリがあるので簡単簡単 ^_~
クエリからデータを取得するSQLを引数としたFunction Procedureを作成。
後は取得するるリスト毎にSQLを替えるだけ。
このFunction Procedureでデータを2次元配列に格納し戻り値にします。
で、今回新たに適正在庫数を保つ為のクエリを1つ作成しました。
在庫数を求めるクエリは元からあるので、マスタテーブルに下限在庫数フィールドを追加し、それと在庫数を参照します。
EXCELにシートを3枚追加し、それぞれにデータを書き込めばOK。
以下受け取った配列をシートへ書き込むコードです。
Sub WriteRequestList(ByVal flg As Integer)
Dim strSql As String, queryName As String
Dim dataArray As Variant
Dim i As Long, j As Long, lastRow As Long
Dim ws As Worksheet
Select Case flg
Case 1
queryName = "q_○○作成依頼"
Set ws = Worksheets(●●_IRAI)
Case 2
queryName = "q_●●●作成依頼"
Set ws = Worksheets(●●●_IRAI)
Case 3
queryName = "q_在庫作成依頼"
Set ws = Worksheets(ZAIKO_IRAI)
End Select
strSql = "SELECT * FROM " & queryName
dataArray = ReturnData(strSql)
Application.ScreenUpdating = False
With ws
If .Range("A1") = "" Then ItemInput2 ws
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row + 1
For i = 0 To UBound(dataArray)
For j = 0 To UBound(dataArray, 2)
.Cells(lastRow, j + 1).Value = dataArray(i, j)
Next j
lastRow = lastRow + 1
Next i
.Columns("A:J").AutoFit
End With
Set ws = Nothing
Application.ScreenUpdating = True
End Sub