【VBA】DocuWorks(.dwx)ファイルでNASに保存したい

VBA
スポンサーリンク

社内でDocuWorksを使用してデータのやり取りをすることがあります。今回の依頼はexcelで作成したデータをDocuWorks形式(.dwx)に変換して共有フォルダ(NAS)に保存したいというものでした。

スポンサーリンク

やり方

excelからdwxファイルを生成して直接NASに保存するのは難しいです。Fuji XeroxからAPIが提供されているのでそれを使用すればできると思うのですが、管理やメンテナンスが複雑になります。APIと聞くとやってみたくなるのがプログラマーなのですが、それは単なるプログラマーのエゴなので、もっと簡単にできる方法をご紹介します。

  1. dwxファイルを生成する
  2. いったん自分のPCに保存する
  3. PCに保存したdwxをNASに保存する

こうすればAPIを使用することなくdwxをNASに保存できます。

準備

必要なのはDocuWorksです。(当たり前ですが…)それから「DocuWorks Printer」もインストールされているか確認してください。dwxファイルを生成する方法はこの 「DocuWorks Printer」 を使用するからです。

ソフトウェア : ダウンロード : 富士フイルムビジネスイノベーション : 富士フイルムビジネスイノベーション

おソース

Const XDW_PATH = "\\nas\share\docu"

Sub exeDocuPrint()
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set wsh = CreateObject("WScript.Shell")

    
    '自分のDocuWorksに保存する
    docufld = wsh.specialfolders("mydocuments") & "\Fuji Xerox\DocuWorks\DWFolders\ユーザーフォルダ"
    
   
 'ファイル名
    Filename = "docu_" & Format(Now, "yyyymmddhhnnss")


    xdwfile = docufld & "\" & ThisWorkbook.Name & ".xdw"
    srvfile = XDW_PATH & "\" & Filename & ".xdw"

    
    'Docuファイル保存--------------------------------------------------------------
    On Error Resume Next
    
    'ユーザーフォルダに保存される。ほかの場所に直接保存するにはAPIを使うなど手間がかかるため、この方法でやる。
    With Application
        PRN_NM = "DocuWorks Printer"
        tmp = .ActivePrinter

        ActiveSheet.PrintOut ActivePrinter:=PRN_NM, from:=1, To:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False
        .ActivePrinter = tmp
    End With
    
    ntime = Now + "00:00:02"
    Do Until fso.FileExists(xdwfile) = True
        DoEvents
        If ntime < Now Then
            MsgBox "タイムアップエラー:dwxファイル生成"
            Exit Sub
        End If
    Loop

    
    'docuファイルを目的地へコピー
    FileCopy xdwfile, srvfile
    
    ntime = Now + "00:00:02"
    Do Until fso.FileExists(srvfile) = True
        DoEvents
        If ntime < Now Then
            MsgBox "タイムアップエラー:dwxファイルコピー"
            Exit Sub
        End If
    Loop
    
    'コピーが完了したら元を削除
    If Dir(srvfile) <> "" Then
        Kill xdwfile
    End If
    
    On Error GoTo 0
    
End Sub

解説

docufld = wsh.specialfolders("mydocuments") & "\Fuji Xerox\DocuWorks\DWFolders\ユーザーフォルダ"

いったんdwxファイルを保存する場所の指定は決め打ちです。デフォルトではこのパスですが、もし変更していましたらそれに合わせてください。

xdwfile = docufld & "\" & ThisWorkbook.Name & ".xdw"

生成されるxdwのファイル名はこちらで指定できません。エクセルのブック名に自動的になります。ですのでThisWorkbook.Name で指定します。

With Application
    PRN_NM = "DocuWorks Printer"
    tmp = .ActivePrinter

    ActiveSheet.PrintOut ActivePrinter:=PRN_NM, from:=1, To:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False
    .ActivePrinter = tmp
End With

dwxを生成する方法は「DocuWorks Printer」を使用して印刷します。単純にPrintOut関数を使用します。

おまけ

DocuWorksのAPIに関心がある方は下記のサイトにアクセスしてみてください。DocuWorks Development Toolkitを利用してみてください。VBAでも利用できます。

よくあるご質問 富士フイルムビジネスイノベーション
サポート -

コメント

タイトルとURLをコピーしました