Access VBAを使用してDocuWorks 9の印刷時にファイル名を変更する方法

テクノロジー・ガジェット

Access VBAとDocuWorks 9を使用して、印刷時にファイル名を変更する方法を解説します。この記事は、Access VBAとDocuWorks 9の基本的な知識を持つ方を対象にしています。

Access VBAとは

Access VBA(Visual Basic for Applications)は、Microsoft Accessのためのプログラミング言語です。Access VBAを使用すると、データベースの操作を自動化したり、カスタムフォームやレポートを作成したりすることが可能になります。

1-1. Access VBAの基本的な概念

Access VBAは、Accessのデータベースオブジェクト(テーブル、クエリ、フォーム、レポートなど)を操作するためのコードを記述するための言語です。VBAコードは、モジュールと呼ばれるコンテナに保存され、イベント(ボタンのクリックなど)や手動で実行することができます。

1-2. Access VBAの主要な機能と利点

Access VBAの主要な機能は、データベースの操作を自動化することです。これにより、手動で行うことが難しいまたは時間がかかるタスクを効率的に行うことができます。また、Access VBAは、カスタムフォームやレポートを作成するための強力なツールでもあります。

DocuWorks 9の概要

DocuWorks 9は、富士ゼロックスが提供する文書管理ソフトウェアです。このソフトウェアは、文書の作成、編集、管理を一元化することができます。

2-1. DocuWorks 9の特徴

DocuWorks 9は、文書の作成、編集、管理を一元化することができるソフトウェアです。また、多様なファイル形式をサポートしており、ユーザーは自由に文書を作成、編集、印刷することができます。

2-2. DocuWorks 9で可能な主要な操作

DocuWorks 9では、文書の作成、編集、印刷、保存など、様々な操作を行うことができます。また、文書の管理機能も充実しており、大量の文書を効率的に管理することが可能です。

Access VBAを使用した印刷操作の基本

Access VBAを使用して印刷操作を自動化することができます。具体的には、DoCmd.OpenReportメソッドを使用してレポートを開き、印刷します。

3-1. Access VBAでの印刷コマンドの使用方法

Access VBAで印刷操作を行うには、DoCmd.OpenReportメソッドを使用します。このメソッドは、指定したレポートを開き、印刷します。以下にその基本的な構文を示します。

DoCmd.OpenReport "ReportName", acViewNormal

ここで、”ReportName”は印刷するレポートの名前を指定します。acViewNormalはレポートを通常のビューで開くことを指定します。

3-2. Access VBAでの印刷設定のカスタマイズ方法

DoCmd.OpenReportメソッドは、さまざまなパラメータを指定して印刷設定をカスタマイズすることができます。例えば、特定の条件を満たすレコードのみを印刷する場合、WhereConditionパラメータを使用してSQL WHERE句を指定します。

DocuWorks 9でのファイル名変更の基本

DocuWorks 9では、印刷時にファイル名を変更することができます。これにより、印刷した文書を効率的に管理することが可能になります。

4-1. DocuWorks 9のファイル名変更機能の概要

DocuWorks 9のファイル名変更機能は、印刷時に出力するファイルの名前を指定することができます。これにより、印刷した文書を特定の規則に基づいて命名し、管理を容易にすることができます。

4-2. DocuWorks 9でのファイル名変更の手順

DocuWorks 9でファイル名を変更するには、印刷設定の中の「出力ファイル名」を変更します。この設定は、印刷ダイアログボックスの「詳細設定」タブからアクセスすることができます。

Access VBAを使用してDocuWorks 9の印刷時にファイル名を変更する方法

それでは、Access VBAを使用してDocuWorks 9の印刷時にファイル名を変更する具体的な方法を見ていきましょう。

5-1. VBAコードの準備

まず、ファイル名を変更するためのVBAコードを準備します。以下にそのコードを示します。

Option Compare Database
Option Explicit

Private Declare PtrSafe Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" ( _
    ByVal hKey As LongPtr, _
    ByVal lpSubKey As String, _
    ByVal Reserved As Long, _
    ByVal lpClass As String, _
    ByVal dwOptions As Long, _
    ByVal samDesired As Long, _
    ByVal lpSecurityAttributes As LongPtr, _
    phkResult As LongPtr, _
    lpdwDisposition As Long) As Long

Private Declare PtrSafe Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" ( _
    ByVal hKey As LongPtr, _
    ByVal lpValueName As String, _
    ByVal Reserved As Long, _
    ByVal dwType As Long, _
    lpData As Any, _
    ByVal cbData As Long) As Long

Private Declare PtrSafe Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As LongPtr) As Long

Private Const HKEY_CURRENT_USER As LongPtr = &H80000001
Private Const REG_SZ As Long = 1
Private Const KEY_ALL_ACCESS As Long = &H3F

Private Sub SetRegistryValue(ByVal strSubKey As String, ByVal strValueName As String, ByVal strValue As String)
    Dim hKey As LongPtr
    Dim lResult As Long
    Dim lDisposition As Long
    
    ' Create or open the registry key
    lResult = RegCreateKeyEx(HKEY_CURRENT_USER, strSubKey, 0&, vbNullString, 0&, KEY_ALL_ACCESS, 0&, hKey, lDisposition)
    
    If lResult = 0 Then
        ' Set the registry value
        lResult = RegSetValueEx(hKey, strValueName, 0&, REG_SZ, ByVal strValue, Len(strValue) + 1)
        
        ' Close the registry key
        lResult = RegCloseKey(hKey)
    End If
End Sub

Public Sub OrderForm(ByVal stDocName As String)
    On Error GoTo Err_OrderForm

    DoCmd.OpenReport stDocName, acPreview
    
    Dim regKey As Object
    Set regKey = CreateObject("WScript.Shell")

    ' Set the registry key path
    Dim registryPath As String
    registryPath = "HKEY_CURRENT_USER\Software\FujiXerox\MPM3\Driver\OutputPath"
    
    ' Set the output file name
    Dim outputFolder As String
    outputFolder = Environ("USERPROFILE") & "\Documents\Fuji Xerox\DocuWorks\DWFolders\TS\"
    
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT ID, Number FROM Orders GROUP BY ID, Number ORDER BY ID, Number", dbOpenSnapshot)
    rs.MoveLast
    rs.MoveFirst
    Dim outputFileName As String
    If rs.RecordCount > 1 Then
        Dim numberList As String
        Dim previous_id As String
        previous_id = rs("ID")
        Do While Not rs.EOF
            If previous_id = rs("ID") Then
                numberList = numberList & rs("Number") & ","
            Else
                numberList = numberList & rs("ID") & rs("Number") & ","
            End If
            previous_id = rs("ID")
            rs.MoveNext
        Loop
        rs.MoveFirst
        numberList = Left(numberList, Len(numberList) - 1) 'Remove the trailing comma
        outputFileName = rs("ID") & "_" & numberList & ".xdw"
    Else
        outputFileName = rs("ID") & "_" & rs("Number") & ".xdw"
    End If
    rs.Close
    Set rs = Nothing
    
    ' Set the registry value
    SetRegistryValue registryPath, "OutputPath", outputFolder & outputFileName
    
    ' Print the report
    DoCmd.OpenReport stDocName, acViewNormal
    
    Exit_OrderForm:
    Exit Sub
    
    Err_OrderForm:
    MsgBox Err.Description
    Resume Exit_OrderForm
End Sub

このコードは、レジストリを操作してDocuWorks 9の出力ファイル名を変更します。具体的には、SetRegistryValue関数でレジストリの値を設定し、OrderForm関数でレポートを印刷します。

5-2. VBAコードの実行と結果の確認

VBAコードを準備したら、次にそのコードを実行します。コードを実行すると、指定したレポートが印刷され、出力ファイルの名前が指定したものに変更されます。

具体的には、AccessのVBAエディターで上記のコードをモジュールに貼り付け、OrderForm関数を呼び出します。関数の引数には、印刷するレポートの名前を指定します。

OrderForm "ReportName"

ここで、”ReportName”は印刷するレポートの名前を指定します。

コードを実行した後、指定した出力フォルダを確認します。そこには、指定した名前のファイルが新しく作成されているはずです。

まとめ

この記事では、Access VBAを使用してDocuWorks 9の印刷時にファイル名を変更する方法を解説しました。この方法を利用すれば、大量の文書を効率的に管理することが可能になります。

Access VBAとDocuWorks 9の基本的な知識があれば、このコードを自由にカスタマイズして、自分のニーズに合わせた印刷操作を自動化することができます。

この記事で紹介したコードは一例であり、読者の環境によってレジストリのDriverの位置が異なる場合があります。また、富士ゼロックスの社名変更に伴い、レジストリのパスも変わっている可能性があります。

そのため、実際にコードを使用する際には、自身の環境に合わせて適切にパスを変更することが必要です。この記事が、あなたの文書管理作業をより効率的にする一助となれば幸いです。

ITスキルを磨きたいなら、Tech Academyがおすすめです。今すぐこちらからチェックして、あなたのスキルを次のレベルへと引き上げましょう!

コメント