0

現在、以下の例のような MS Access 07 に関するクエリがあります。データは動的であるため、ゾーンの数は毎週変わります。

     ZONE     ERROR

    ZONE 1 | ERROR 1
    ZONE 1 | ERROR 3
    ZONE 2 | ERROR 4
    ZONE 2 | ERROR 5
    ZONE 3 | ERROR 1
    ZONE 3 | ERROR 3

毎週、この手順を実行して、その週に存在するゾーンごとに個別の Excel ファイルを作成する必要があります。現時点では、データを Excel にインポートし、高度なフィルターを使用して各ゾーンを新しい列の [一意のゾーン] に識別し、VBA コードを実行して、に基づいて新しいファイルを作成する必要があると考えています。 Unique Zones 列のデータ...正しい道を進んでいるかどうかわかりません。

4

1 に答える 1

0

既に Excel で VBA コードを使用することについて話しているので、Access での VBA ソリューションを嫌う人ではないかもしれません。

テーブル (またはクエリ) の名前が [ZoneErrors] だとします。Access で次の VBA 関数のようなものを作成し、Access マクロから呼び出すことができます。

Public Function ExportZoneErrors()
Dim cdb As DAO.Database, rst As DAO.Recordset, qdf As DAO.QueryDef, _
        excelFileName As String

Set cdb = CurrentDb
Set rst = cdb.OpenRecordset("SELECT DISTINCT [ZONE] FROM [ZoneErrors]", dbOpenSnapshot)
Do While Not rst.EOF
    On Error Resume Next
    cdb.QueryDefs.Delete "tmpErrorsForJustOneZone"
    On Error GoTo 0
    Set qdf = cdb.CreateQueryDef("tmpErrorsForJustOneZone", _
            "SELECT * FROM [ZoneErrors] WHERE [ZONE]='" & rst!ZONE & "'")
    qdf.Close
    cdb.QueryDefs.Refresh

    ' build Excel file name (probably needs to be fancier in production)
    excelFileName = "Errors for " & rst!ZONE & ".xlsx"  ' e.g., "Errors for ZONE 1.xlsx"

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "tmpErrorsForJustOneZone", excelFileName

    rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Set cdb = Nothing
End Function
于 2013-03-11T15:21:28.013 に答える