
お世話になっております
VB2010でのEXCEL書き込みで質問です
今、VB2010で、EXCELに書き込む処理を行っています
EXCELの参照を追加はせず、Object型にEXCELをセットして、EXCEL参照がなくても使用できるようになっています
問題は、VB2010でEXCELでファイルを書き込み中にスタートメニュー等からEXCELを開き、そこから他のEXCELファイルを開くとVBで実行中のEXCELも開いてしまい、そのVB2010での実行中のEXCELを閉じるとVBの方でエラーが起きてしまいます
VB2010で使用するEXCELを、スタートメニューから開いたEXCELが使用しないようにすむ方法はありますでしょうか
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
再度tsukapsです。
検索してみたところ、
objApl.Interactive = False
(処理)
objApl.Interactive = True
というので、この間の別のEXCELを動かしてもVB側EXCELを表示されず、干渉しないようです。
試したわけではないのですが、
質問者さんの趣旨に近ければ、詳しくは検索してみてください。
No.6
- 回答日時:
私の場合は以下のようなソースで呼び出しています。
'エクセルを起動
Set AppXl = CreateObject("Excel.Application")
AppXl.Visible = False
AppXl.Workbooks.Add
Set objWorkingBook = AppXl.ActiveWorkbook
Set objWorkingSheet = AppXl.ActiveSheet
'Excelを起動終わり
これで、VBから呼び出したExcelを明示に指定できます。
ただし、エラーで止まってしまったときには、別のExcelを開くと、非表示だったExcelも表示されていまいます。
VBまで使ったシステムならば、
1.使用前に全てのExcelを閉じる。
2.作業中は、Excelの機動を含め、他の操作はしない
ということを、ユーザーに徹底していただく方法もあります。
(昼休みに入る直前に起動して、昼休みが終わる頃には作業が終了しているような内容なら、できない運用でないと思います)
もしくは、VBからExcelを操作せずに、Excel VBA に移植してしまうという手もあります。
No.5
- 回答日時:
こんばんは。
詳細は分かりませんので、ある程度、状況を想像しながらのアドバイスです。
>EXCELの参照を追加はせず、Object型にEXCELをセットして、EXCEL参照がなくても使用できるようになっています
まず、VBからExcelを起動することをお勧めします。
Excelが開いた状態でExcelをつかうVBを起動すると、VBの側で「どのExcelを使うのか」を迷ってしまう状況が生じます。
VBからExcelを起動すれば、対象となるExcelが明確になります。
この回答への補足
回答ありがとうございます
vbからEXCELを起動とのことですが、どのような命令のことでしょう・・・
↓の命令とはまた違う命令なのでしょうか
objApl = CreateObject("Excel.Application")
objbooks = objApl.Workbooks
詳細が分かりづらくてすいません
すでに、VB側でEXCEL処理をしている最中に、スタートメニューからEXCELを起動してファイルを開いた際にVB側で処理しているEXCELも一緒に開いてしまい、スタートメニューから開いたEXCELを閉じるとVBで処理中のEXCELも一緒に閉じてしまうようでVBでシステムエラーが起きます
エラーの内容は
呼び出し先が呼び出しを拒否しました。 (HRESULT からの例外:0x80010001 (RPC_E_CALL_REJECTED))
です
No.4
- 回答日時:
再度 tsukapsです。
>EXCELの参照を追加はせず、Object型にEXCELをセットして、EXCEL参照がなくても使用できるようになっています
原因との関係は不明ですが、
私の場合、Microsoft.Office.Interop.Excel.dllを参照に追加しています。
office関係でその他には何も参照を追加していません。
この回答への補足
回答ありがとうございます
No.3も含めて補足させてもらいます
visible = Falseをためさせてもらいましたが、結果は同じでした・・・
標準化の都合上、office関係のdllを追加できないのでobject型にEXCELをセットして書き込む方法しかとれません
visible = Falseのように、書き込んでいるアプリを外側から隠したり、呼べなくするような命令を捜し中です
No.3
- 回答日時:
tsukapsです。
私とどうして違うのか不明なのですが、
試していませんが
objApl = CreateObject("Excel.Application")
のあと
objApl.Visible = False
と入れたらどうなりますか?
画面には表示されないと思いますが、別のEXCELを起動するとつられて出てきますか?
No.2
- 回答日時:
私、素人自己流プログラマなのですが、
自分のアプリで試したけど、他のEXCEL起動は干渉しませんでした。
ファイルを開くという形ですけど。
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
xlApp = CreateObject("Excel.Application")
xlBook = xlApp.Workbooks.Open(dirPath + "\xxxx.xlsx")
(途中省略)
xlSheet = xlBook.Worksheets(s)
(途中省略)
EXL_DATA(s, i, k) = xlSheet.Cells._Default(i, k).Value 読出し
あともう一つ、
エラーだけを無くすだけなら、Try Catch ではだめですか?
開放できるときは開放し、出来ないときには例外処理ルーチンへ
この回答への補足
回答ありがとうございます
テンプレートファイル(xls/xlsxファイル)を作成し、それを読み込み→書き込み→別名で保存する
という方法を取ったのですが起動した別EXCELで、プログラムで使用中のEXCELも開いてしまいました
環境や手順が違うのでしょうか・・・
objApl = CreateObject("Excel.Application")
objbooks = objApl.Workbooks
'↓を、新規からファイル読込に変更
'objBook = objBooks.add
objBook = objBooks.Open(ファイル名, ReadOnly:=False)
objSheets = objBook.WorkSheets
objSheet = objSheets(シート番号)
objRange = objSHeet.Range("A1")
~~書き込みや罫線処理~~
objApl.DisplayAlerts = False
objBook.SaveAs("ファイル名", フォーマット)
objApl.DisplayAlerts = True
解放
今回の目的は、「こちらのプログラム起動中でもEXCELが使用でき、なおかつこちらのEXCELも正常に終わらせたい」のが目的なので、エラーも起こさせたくないのですが・・・
(こちらのEXCEL書き込みプログラムが、件数多いと2時間以上かかってしまうので(これも問題なのですが;)その間にEXCEL作業ができないため問題となりました)
No.1
- 回答日時:
過去にVB2010でExcel参照のプログラミングをした者です。
Excel.Application
Excel.Workbook
Excel.Worksheet
この3つを分けて考えれば出来ませんか?
この回答への補足
素早い回答ありがとうございます
申し訳ないのですが、3つを分けて考えるというのはどういうことでしょう?
質問の場所に書くのを忘れてしまったのですが、プログラムとしては
objApl = CreateObject("Excel.Application")
objbooks = objApl.Workbooks
objBook = objBooks.add
objSheets = objBook.WorkSheets
objSheet = objSheets(シート番号)
objRange = objSHeet.Range("A1")
~~書き込みや罫線処理~~
objApl.DisplayAlerts = False
objBook.SaveAs("ファイル名", フォーマット)
objApl.DisplayAlerts = True
解放
という感じです
解放はきちんとされています
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBでExcelの表形式の様なデザインを作りDBと連携させる。 4 2023/02/28 11:39
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) Excel起動時にエラーダイアログが表示される 3 2022/07/28 19:52
- Excel(エクセル) csvファイルをExcel形式で読み込むには 2 2023/07/03 13:09
- Excel(エクセル) csvに別のExcelの文章を差し込む 2 2023/04/01 16:06
- その他(Microsoft Office) PCを買い換えました。 今使っているノートパソコンが10年以上使っており新しく買い換えました。Win 5 2023/03/26 00:18
- その他(パソコン・スマホ・電化製品) CMD等でPC操作(excel開く等)を自動化させたい 1 2023/03/15 09:53
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Excel(エクセル) マイクロソフトのノートパソコンを使用しているものです。 Excelで練習をしていたところ上下矢印が出 3 2023/03/01 18:29
- Visual Basic(VBA) Vba 互換モードでのAppActiveについて教えてください 2 2022/06/27 18:47
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jtrim 1.53cが正常な動きをし...
-
至急!教えてください!!「Mic...
-
CD Manipulatorで作ったイメー...
-
C#でUWSCを起動したい。
-
postmaster.pid とは?
-
ACCESS エクスポートしたEXCEL...
-
B'z gold7でチャプターわけする...
-
EXCELを起動したとき120%の表...
-
ABIT・BH6のBIOSの...
-
outlookの起動について
-
μtorrentのアンインストール方法
-
アクセス97でシフト押しなが...
-
CADソフト ユニドラフ(Unidraf...
-
Word パラメーターが違いますと...
-
PCの再起動に対応しないアンイ...
-
VBによるEXCELの書き込み
-
メールソフトThunderbirdに関して
-
Flash Player起動時のフルスク...
-
office2000だけが開かな...
-
Excel に貼り付けた図形が、保...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!教えてください!!「Mic...
-
jtrim 1.53cが正常な動きをし...
-
EXCELを起動したとき120%の表...
-
LANケーブルを挿すとEXCELが重...
-
VBによるEXCELの書き込み
-
メールソフトThunderbirdに関して
-
It works! が表示されるという...
-
Atok に詳しい方。お願いします。
-
エクセルの起動時にbook1を開き...
-
CADソフト ユニドラフ(Unidraf...
-
Wordで数式エディタを使うとフ...
-
Windows Media Playerが起動直...
-
Wordを起動したときのタイトル...
-
パソコン買い換えたいのですが...
-
pcゲームのセットアップが出来...
-
USBメモリーのセキュリティ...
-
office起動時に設定画面が表示...
-
ACCESS VBA からのワードファ...
-
outlookの起動について
-
ABIT・BH6のBIOSの...
おすすめ情報