DOBON.NET DOBON.NETプログラミング掲示板過去ログ

EXCELのシートを複数選択して印刷(プレビュー)したい

環境/言語:[OS : Windows Vista / 言語 : Visual Basic .NET]
分類:[.NET]

【解決したい問題】

はじめまして、
VB.netからEXCELを起動して印刷するプログラムを作成しています。
1.EXCELの起動/終了(解放)
2.セルへ値を送る
3.印刷プレビューから印刷

上記の動作はできるようになりましたが、
複数のシートを選択してのプレビュー(印刷)の方法が解らなく、
ネット上を調べましたが解決できずにいます。
よろしくお願いします。

具体的に実現したい動作は、

@既存のEXCELブックを開く(5枚のシートがあります)
B指定した複数のシート(シート1と3など)のみのプレビューを開く
C印刷

1つのシートのみプレビュー(印刷)する時は
objExcel = New Excel.Application
objWorkBooks = CType(objExcel.Workbooks, Excel.Workbooks)
objWorkBook = CType(objWorkBooks.Open(BookPath), Excel.Workbook)
objSheets = objWorkBook.Sheets
objSheet = objSheets(1) 'シート指定
objSheet.PrintPreview() 'プレビュー表示

全てのシートの時は
objSheets.PrintPreview()

で出来たのですが、複数の選択がどうしても解りません。
よろしくお願い致します。
■No26487に返信(hskk6511さんの記事)
> ネット上を調べましたが解決できずにいます。
Excel VBA のヘルプは参照されましたか?

なお VBA ヘルプは、カスタム インストールを行わないと
インストールされていない可能性があります。

Office PIA のヘルプでも良いかも。
http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.sheets%28office.11%29.aspx


> (1)既存のEXCELブックを開く(5枚のシートがあります)
> (3)指定した複数のシート(シート1と3など)のみのプレビューを開く
# 2番が無い…。


> 1つのシートのみプレビュー(印刷)する時は
> objSheet.PrintPreview() 'プレビュー表示
> 
> 全てのシートの時は
> objSheets.PrintPreview()
後者の方法でいけますよ。
つまり、「すべてのシートを表す Sheets オブジェクト」の代わりに
「シート1とシート3を表す Sheets オブジェクト」を使えば OK です。

すべてのシートを表す Sheets オブジェクトは、
 oSheets = oWorkbook.Sheets
で得られますよね。特定の複数シートを表す Sheets は、
 Dim sheetNames() As String = {"Sheet1", "Sheet3"}
 oSelectedSheets = oSheets.Item(sheetNames)
のように、シート名配列を指定することで得られます。
■No26488に返信(魔界の仮面弁士さんの記事)

魔界の仮面弁士さん

ありがとうございます!
一発で解決できました!

ヘルプの参照も大変勉強になりました。
これからはMSDNのヘルプを活用できるように
努力したいと思います。

ネット上で質問させて頂くのは
今回が初めてでした。
緊張しましたが思い切って質問して
本当に良かったです。

一人で悩んでいた昨日がウソのように
今日は気持ちが軽くなりました。

本当にありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板