@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

複数のWordやExcelファイルを高速に印刷したい

1
投稿者投稿内容
ジン
常連さん
会議室デビュー日: 2008/07/22
投稿数: 33
投稿日時: 2008-11-27 16:37
VB2008、VSTO2008で開発しています。
Officeは2007を使用しています。

複数のWordやExcelファイルを同時に印刷したいのですが、
それぞれのファイルを開いて、印刷して、閉じて、
また次のファイルを開いて、、、
としていると、とても時間が掛ってしまいます。

これをどうにかしたいと考えているのですが、
何か良い案はございませんでしょうか?

印刷時には、他の関係ないWordやExcelのファイルが
開かれていることが考えられまして、
そのファイルへは影響させたくありません。

何か方法はないものかと自分なりに考えてみたのですが、
どうしても良い案が思い浮かびませんでした。

ぜひご回答よろしくお願い致します。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2008-11-27 17:37
検索語
Word 連続印刷
の結果を 取り合えず。
----
Word文書を個別に印刷する時と、つなげて1文書にしたものを印刷では結果が
異なることがある。文書の設定が途中のページで変更されてるような場合は。
文書構成作業では注意点。

[ メッセージ編集済み 編集者: MMX 編集日時 2008-11-28 12:03 ]
ジン
常連さん
会議室デビュー日: 2008/07/22
投稿数: 33
投稿日時: 2008-11-27 19:19
引用:

MMXさんの書き込み (2008-11-27 17:37) より:
検索語
Word 連続印刷
の結果を 取り合えず。



ありがとうございます。
大変参考になりました。

検索してみたところ、以下のURLが参考になりそうだと思いました。
http://wiki.fdiary.net/NishikataLab/?word%A4%C7%CF%A2%C2%B3%B0%F5%BA%FE

上記URLのプログラムを見ると、マクロでWordファイルを複数印刷しているのですが、
これをVB2008などで記述する場合、どのようなプログラムになるでしょうか?

私なりに調べてみたのですが、
良い方法を調べられませんでした。
(PrintDocumentの印刷方法などしか見付けられず。。。)

.net frameworkの機能でファイルを指定して印刷をしたいと思っております。
もしよろしければ、ご教示お願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-11-27 19:43
引用:

ジンさんの書き込み (2008-11-27 19:19) より:

上記URLのプログラムを見ると、マクロでWordファイルを複数印刷しているのですが、
これをVB2008などで記述する場合、どのようなプログラムになるでしょうか?


言い方が難しいのですが、.NET ではこの方法を取ることはできません。 ただし .NET から参考 URL で利用しているマクロあるいは Excel PIA は利用できます。 目的は同じではないものの、こちらのフォーラムで何度も話題としてあがっているので検索してみると良いでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
hebikuzure
ベテラン
会議室デビュー日: 2006/03/11
投稿数: 56
投稿日時: 2008-11-27 22:06
単純にWord VBA か Excel VBA で作りこんでしまった方が簡単かもしれないですね。
仮に .NET でアプリケーションを作っても、結局印刷するために Word なり Excel なりのプロセスを起動する事には変わりが無いわけですし。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2008-11-27 23:35
こんばんは。

複数の種類のファイルを連続印刷したいなら、VBA使うと面倒でしょう!?
シェル使ったほうがシンプルにいけると思いますよ。

以下、参考までに。

コード:
Imports System.Runtime.InteropServices

Public Class Form1

    <DllImport("shell32.dll")> _
    Private Shared Function ShellExecute(ByVal hWnd As IntPtr, ByVal lpOperation As String, _
                                         ByVal lpFile As String, ByVal lpParameters As String, _
                                         ByVal lpDirectory As String, ByVal nShowCmd As Integer) As Int32
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim strFiles() As String = {"F:\\aaa.xlsx", "F:\\bbb.docx", "F:\\ccc.pdf", "F:\\ddd.doc"}

        For Each strFile As String In strFiles
            ShellExecute(IntPtr.Zero, "print", strFile, "", "", 0)
        Next

    End Sub
End Class


ジン
常連さん
会議室デビュー日: 2008/07/22
投稿数: 33
投稿日時: 2008-11-28 20:02
引用:

末端技術者Aさんの書き込み (2008-11-27 22:06) より:
単純にWord VBA か Excel VBA で作りこんでしまった方が簡単かもしれないですね。
仮に .NET でアプリケーションを作っても、結局印刷するために Word なり Excel なりのプロセスを起動する事には変わりが無いわけですし。


ほかの処理も.net側で行わせたいため、なるべく.netで作りたかったのです。
参考になりました。
ご回答ありがとうございます。
ジン
常連さん
会議室デビュー日: 2008/07/22
投稿数: 33
投稿日時: 2008-11-28 20:09
引用:

Tdnr_Symさんの書き込み (2008-11-27 23:35) より:
こんばんは。

複数の種類のファイルを連続印刷したいなら、VBA使うと面倒でしょう!?
シェル使ったほうがシンプルにいけると思いますよ。

以下、参考までに。

コード:
Imports System.Runtime.InteropServices

Public Class Form1

    <DllImport("shell32.dll")> _
    Private Shared Function ShellExecute(ByVal hWnd As IntPtr, ByVal lpOperation As String, _
                                         ByVal lpFile As String, ByVal lpParameters As String, _
                                         ByVal lpDirectory As String, ByVal nShowCmd As Integer) As Int32
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim strFiles() As String = {"F:\aaa.xlsx", "F:\bbb.docx", "F:\ccc.pdf", "F:\ddd.doc"}

        For Each strFile As String In strFiles
            ShellExecute(IntPtr.Zero, "print", strFile, "", "", 0)
        Next

    End Sub
End Class






ご回答ありがとうございます。
とても便利ですね。
これで作成させて頂こうと思います。
とても助かりました。
1

スキルアップ/キャリアアップ(JOB@IT)