- PR -

Excelファイルの別名での保存で困ってます

1
投稿者投稿内容
dembo
会議室デビュー日: 2003/04/01
投稿数: 8
投稿日時: 2003-07-15 20:05
いつも印刷は、Excelへ書き込んで、印刷をしていますが、
今回そのExcelファイルを、Mailで送ることになり。
ファイルの別名での保存が、うまく出来ません。
プログラムは現在下記のようにしています。
Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;

//Start Excel and get Application object.
oXL = new Excel.Application();
oWB = (Excel._Workbook)(oXL.Workbooks.Add( Application.StartupPath + "\\\\ABC.xls" ));
oWB.Application.Visible = false ; //true;
oSheet = (Excel._Worksheet)oWB.ActiveSheet;

//以下 oSheet.Cells[nn,mm] にデータSet

//Excel印刷
oSheet.PrintOut(Missing.Value,Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,Missing.Value);
oWB.Saved = true; //ワークシートを保存せずに閉じる 保存するときは false?
oXL.Quit();

oWB.Saved = false; では [ABC1.xls]で保存を聞いてきます。
本当は,[XYZ.xls]等で保存したいのですが。
oWB.SaveAs もうまく使えません。
どうかよろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-07-16 12:05
引用:

demboさんの書き込み (2003-07-15 20:05) より:
oWB.SaveAs もうまく使えません。


 どう使えませんか?もしくは、使ったらどうなりましたか?
FOX
ベテラン
会議室デビュー日: 2002/04/08
投稿数: 63
お住まい・勤務地: いなか
投稿日時: 2003-07-16 12:56
これってたぶんExcelオートメーションを使った例ですよね。
#違ったらごめんなさい。

確かエクセルのSavedプロパティってエクセルのブックの内容を変更したあとにセーブしていない場合にTrueになるよいうやつだと思ったのですが…。
以前試したサンプルは以下のような感じで実装すれば使えました。
なお環境はOffice 2000 + .NET v1.1 + VS .NET 2003です。
Officeのバージョンによって動作しないかもしれません。

コード:
Application app = new Application();
app.Visible = false;
//ブックを新規作成し一枚目のシートを取得
Worksheet sheet = (Worksheet)app.Workbooks.Add(Missing.Value).Sheets[1];
Range r = ((Range)sheet.Cells[1,1]) ;
r.Value= "test";
((Workbook)sheet.Parent).Saved = true;
//マイドキュメントに別名保存する
((Workbook)sheet.Parent).SaveAs("a.xls",
    Missing.Value,
    Missing.Value,
    Missing.Value,
    Missing.Value,
    Missing.Value,
    XlSaveAsAccessMode.xlExclusive,
    Missing.Value,
    Missing.Value,
    Missing.Value,
    Missing.Value);
app.Quit();


※ExcelとSystem.Reflectionをusingしています。
dembo
会議室デビュー日: 2003/04/01
投稿数: 8
投稿日時: 2003-07-16 19:02
出来ました。どうもありがとうございます。
尚 [XlSaveAsAccessMode.xlExclusive]ではビルドエラー
('XlSaveAsAccessMode' が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。)
が出ましたが、[Excel.XlSaveAsAccessMode.xlExclusive]でうまくいきました。
なお環境はOffice 2000 + .NET v1.0 + アカデミック版です。
1

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