質問者
XPSライターの書き出し先のデフォルトフォルダーの指定について

質問
-
Windows8.1端末で、Office付属のXPSライターを利用して印刷イメージをXPSファイルとして保存する運用を検討しています。このXPSライターのXPSファイル保存先のデフォルト値がデスクトップになっているのですが、このデフォルトの保存先を他のフォルダーに変更することは可能でしょうか?可能でしたらその指定はどのよう行うのでしょうか?もしご存知の方いらっしゃいましたらよろしくお願いいたします。
すべての返信
-
XPSライターというのはOfficeのファイル保存においてXPS形式で保存するということを指していますか?
であれば、VBAにて、
ExcelならWorkSheet.ExportAsFiexedFormatもしくはWorkBook.ExportAsFiexedFormatでTypeをxlTypeXPSにし、Filenameで出力先ファイル名を指定できます。
WordならDocument.ExportAsFiexedFormatでExportFormatをwdExportFormatXPSにし、OutputFileNameで出力先ファイル名を指定できます。
つまり、先にデフォルトの出力先を指定したファイル保存ダイアログを表示させてやり、その結果のファイル名を使って上記のコマンドで印刷を行えばよいということになります。
ファイル保存ダイアログはApplication.GetSaveAsFilenameではカレントフォルダがデフォルトフォルダになります。Officeの機能ではなく、Windowsの機能としてのプリンタであるMicrosoft XPS Document Writerを使って印刷してXPSファイルを作るということを指していますか>
であれば印刷機能においてファイルに出力すると指定して出力先ファイルを指定してやればできますので、同様にファイル保存ダイアログで保存先を決めて印刷すればよいことになります。
C#+WinFormsだと以下のように。
private void button1_Click(object sender, EventArgs e) { using (SaveFileDialog dlg = new SaveFileDialog()) { dlg.Filter = "oxps|*.oxps"; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var doc = new System.Drawing.Printing.PrintDocument(); doc.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"; doc.PrinterSettings.PrintToFile = true; doc.PrinterSettings.PrintFileName = dlg.FileName; doc.PrintController = new System.Drawing.Printing.StandardPrintController(); doc.PrintPage += (sp, ep) => { ep.Graphics.DrawString("A", this.Font, Brushes.Black, new PointF(100, 100)); ep.HasMorePages = false; }; doc.Print(); } } }
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)