tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルExcelの「名前を付けて保存」ダイアログ
記事No5499
投稿日: 2007/05/16(Wed) 15:19
投稿者やなこ
アプリケーションから
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
xlBook = xlApp.Workbooks.Open(ファイルパス)
としてExcelのブックを表示させています。

この起動したExcel上で「名前を付けて保存」メニューを選択されたときに
出てくる保存ダイアログについて質問です。
保存ダイアログで開いているディレクトリをもともとのファイルパスではなくて
こちらから何らかのパスを指定して、(ローカルマシンのマイドキュメントの下
など)そこを開いた状態で指定させることはできますか?

理由としては、ここで開くExcelは共有ファイルサーバにあるドキュメントなので、
所在をできるだけユーザに隠しておきたい(ユーザが上書きするのをできるだけ
防ぎたい)ためです。
無理であればOpenするブックを一旦ローカルのどこかにコピーしてきておいて、
それを開く方法で対処しようと思っているのですが、それだとコピーしてきた
ファイルを何かのタイミングで消さなくてはならないので、開くだけならサーバの
ものを開いて見せて、保存したいときは間違えないようにユーザのディレクトリを
指定するようにしたいのです。

[ツリー表示へ]
タイトルRe: Excelの「名前を付けて保存」ダイアログ
記事No5500
投稿日: 2007/05/16(Wed) 15:43
投稿者魔界の仮面弁士
> xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
そんな面倒な方法をとらずとも、
 xlApp = New Excel.ApplicationClass()
で良いような気がしますけど。

> xlBook = xlApp.Workbooks.Open(ファイルパス)
NG。Workbooks プロパティが返す値を、変数に保持する必要があります。
(詳細は過去ログを参照)

> 保存ダイアログで開いているディレクトリをもともとのファイルパスではなくて
> こちらから何らかのパスを指定して、(ローカルマシンのマイドキュメントの下
> など)そこを開いた状態で指定させることはできますか?
Workbooks.Open で、ファイルを「編集」するのではなく、
Workbooks.Add で、ファイルを「新たに作成」するとか。

[ツリー表示へ]
タイトルRe^2: Excelの「名前を付けて保存」ダイアログ
記事No5501
投稿日: 2007/05/16(Wed) 16:17
投稿者やなこ
やなこです。

> > xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
> そんな面倒な方法をとらずとも、
>  xlApp = New Excel.ApplicationClass()
> で良いような気がしますけど。

あれ?そうなんですね。ご指摘ありがとうございます。

> > xlBook = xlApp.Workbooks.Open(ファイルパス)
> NG。Workbooks プロパティが返す値を、変数に保持する必要があります。
> (詳細は過去ログを参照)

すみません、抜けていました。

> Workbooks.Open で、ファイルを「編集」するのではなく、
> Workbooks.Add で、ファイルを「新たに作成」するとか。

つまり、やはりローカルマシンに一旦ファイルを作成するということでしょうか?

[ツリー表示へ]
タイトルRe^3: Excelの「名前を付けて保存」ダイアログ
記事No5503
投稿日: 2007/05/16(Wed) 17:14
投稿者魔界の仮面弁士
> > Workbooks.Open で、ファイルを「編集」するのではなく、
> > Workbooks.Add で、ファイルを「新たに作成」するとか。
> つまり、やはりローカルマシンに一旦ファイルを作成するということでしょうか?

まぁ、それでも構いませんが、私が書いたのはそういう意味ではありません。
元のファイルをテンプレートにして、新たに未保存の文書を作成する、ということです。

*.xls や *.xlt ファイルを右クリックすると、ポップアップメニューに
[開く]とは別に、[新規作成]という項目がありますよね。それが Open と Add です。
(xls は[開く]がデフォルト、xltは[新規作成]がデフォルト)

[ツリー表示へ]
タイトルありがとうございます!
記事No5508
投稿日: 2007/05/17(Thu) 11:48
投稿者やなこ
やなこです。
すみません、文意を読み違えていたようです…

> *.xls や *.xlt ファイルを右クリックすると、ポップアップメニューに
> [開く]とは別に、[新規作成]という項目がありますよね。それが Open と Add です。
> (xls は[開く]がデフォルト、xltは[新規作成]がデフォルト)

Addメソッドは初めて知りましたが、よさそうですね。
これであれば「元ファイルに触らせたくない、パスも極力知らせたくない」という
要件どおりにできそうです。
どうもありがとうございます。この方向で提案してみます。

[ツリー表示へ]