掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
プログラムからExcel操作中にExcelファイルを開くには? (ID:88454)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> この処理には1時間〜2時間掛かるのですが、 計算処理とかが入るのなら仕方がないとは思うけれど、単にデータを Excelに渡すだけだとしたら、ちょっと時間がかかりすぎな気がします。 たとえば、 oSheet1.Range("A1:G20").Value = 2次元配列 の1行ですむ所と、 oSheet1.Cells(1, 1).Value = "A" oSheet1.Cells(2, 1).Value = "B" oSheet1.Cells(3, 1).Value = "C" みたいに、セル一つ一つに対して操作してたりしませんか? > その間Excelファイルを開くと、開いたファイルに対してプログラムが操作を行ってしまいます。 それは多分、コーディング側に問題があります。 たとえば、 oApp.Workbooks(1).Worksheets(1).Range("A1").Value = 1234 などのように、常に添え字を使ってアクセスしていたり、あるいは、 Active系/Selection系のプロパティ経由で操作したりしていませんか? たとえば、添え字を使った書き方にしていると、別のブックを開くことで、 添え字の番号がずれたりする可能性があるので危険です。 この場合はたとえば、 Set oBook1 = oApp.Workbooks.Open(〜) Set oSheet1 = oBook.Worksheets(1) oSheet1.Range("A1").Value = 1234 のように、開いた直後に、そのオブジェクトへの参照を変数に保持しておき、 以後はこの oBook1, oSheet1 などの変数経由で操作すれば、別のブックが 開かれたりしても、常に同じオブジェクトを操作できます。 > 通常プログラム実行中はExcelファイルを開かない運用を行って Interactive プロパティを指定しておけば、ユーザー操作を禁止できます。 あるいはExcelを使うにしても、操作中のExcel上でワークブックを開かせるのではなく、 Excelをもうひとつ起動して、そちら側で操作してもらう運用ならば、問題ないのでは。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.