Page 619 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ACCESSからExcelを操作 smith 04/4/29(木) 16:56 ┗Re:ACCESSからExcelを操作 かみちゃん 04/4/29(木) 19:50 ┗Re:ACCESSからExcelを操作 smith 04/4/30(金) 9:07 ┗Re:ACCESSからExcelを操作 smith 04/5/1(土) 13:35 ┣Re:ACCESSからExcelを操作 かみちゃん 04/5/1(土) 13:56 ┃ ┗Re:ACCESSからExcelを操作 smith 04/5/3(月) 11:58 ┃ ┗Re:ACCESSからExcelを操作 かみちゃん 04/5/3(月) 13:08 ┗Re:ACCESSからExcelを操作 よろずや 04/5/3(月) 12:46 ┗Re:ACCESSからExcelを操作 smith 04/5/3(月) 13:50 ┗Re:ACCESSからExcelを操作 かみちゃん 04/5/3(月) 15:05 ┗Re:ACCESSからExcelを操作 smith 04/5/10(月) 19:46 ┗Re:ACCESSからExcelを操作 よろずや 04/5/10(月) 21:47 ┗Re:ACCESSからExcelを操作 smith 04/5/10(月) 22:17 ┗Re:ACCESSからExcelを操作 smith 04/5/11(火) 14:55 ─────────────────────────────────────── ■題名 : ACCESSからExcelを操作 ■名前 : smith <hac32840@rio.odn.ne.jp> ■日付 : 04/4/29(木) 16:56 -------------------------------------------------------------------------
ACCESSからExcelのデータを消すコードです。 データはちゃんと消えるのですが、実行した後Excelを開こうとすると ツールバーなどの外枠しか開かず、データの部分(セルが並んでいる部分) がセルさえも表示されません。データを消そうとしたファイルのみでなく他の ファイルも同じ状態でしか開きません。空のExcelを開いた上でファイルを開くとちゃんと開くのですが・・・。なんとか実行後も普通に開くようにコードを修正したいので教えてください。 Dim objExlApp As Object Dim objExlBook As Object Dim objExlSheet As Object Set objExlApp = CreateObject("Excel.Application") Set objExlBook = objExlApp.Workbooks.Open("C:\a\test1.xls") objExlApp.Visible = True Rows("5:50000").Select Selection.ClearContents objExlBook.SaveAs "C:\a\test1.xls" objExlApp.Quit Set objExlBook = Nothing Set objExlApp = Nothing |
こんにちは。かみちゃん です。 >ACCESSからExcelのデータを消すコードです。 >データはちゃんと消えるのですが、実行した後Excelを開こうとすると >ツールバーなどの外枠しか開かず、データの部分(セルが並んでいる部分) >がセルさえも表示されません。 VBAのコード内に修飾子がひとつでも抜けていると終了してもExcel.exeのプロセスが残る事象になります。 書いていただいたコードだけでは、すべてではないようなので、検証のしようがありません。ちなみに以下のコードであれば、この事象にはなりません。(WindowsXP + Access2002で検証) Sub Test() Dim objExlApp As Object Dim objExlBook As Object Dim objExlSheet As Object Set objExlApp = CreateObject("Excel.Application") Set objExlBook = objExlApp.Workbooks.Open("C:\a\test1.xls") objExlApp.Visible = True Set objExlSheet = objExlBook.Sheets(1) With objExlSheet .Rows("5:50000").ClearContents End With objExlBook.SaveAs "C:\a\test1.xls" objExlApp.Quit Set objExlSheet = Nothing Set objExlBook = Nothing Set objExlApp = Nothing End Sub |
完璧です!自由に開けるようになりました。 ありがとうございました。 |
ついでといっては何ですが、もう1パターンうまくいかないコードがあります。 こんどはAccessのインポート機能でExcelからデータを持ってくるものです。 このExcelが特別で、開いてやらないとデータを持ってこれないのです。 ですから、さきほどと同じようにExcelを開いてやるコードを使った後にインポート させているのですが、また実行後にExcelが開かなくなってしまうのです。同じような 質問で恐縮ですが、解決策をお願いします。 Sub Test() Dim objExlApp As Object Dim objExlBook As Object Dim objExlSheet As Object Set objExlApp = CreateObject("Excel.Application") Set objExlBook = objExlApp.Workbooks.Open("C:\a\test1.xls") objExlApp.Visible = False Set objExlSheet = objExlBook.Sheets(1) DoCmd.TransferSpreadsheet acImport, 8, "test1", "C:\a\test1.xls", True, "A:" & Z & "" objExlApp.Quit Set objExlSheet = Nothing Set objExlBook = Nothing Set objExlApp = Nothing End Sub |
こんにちは。かみちゃん です。 >ですから、さきほどと同じようにExcelを開いてやるコードを使った後にインポート >させているのですが、また実行後にExcelが開かなくなってしまうのです。 > DoCmd.TransferSpreadsheet acImport, 8, "test1", "C:\a\test1.xls", True, "A:" & Z & "" > > objExlApp.Quit これでは、Workbooks.OpenしているExcelファイルをインポートしようとしていませんか? 記述が正しいのか("A:" & Z & ""もよくわからないので)わかりませんが > objExlApp.Quit > > Set objExlSheet = Nothing > Set objExlBook = Nothing > Set objExlApp = Nothing この次の行にDoCmd.TransferSpreadsheet〜を記述したほうがいいと思います。 |
▼かみちゃん さん: >これでは、Workbooks.OpenしているExcelファイルをインポートしようとしていませんか? >記述が正しいのか("A:" & Z & ""もよくわからないので)わかりませんが > >> objExlApp.Quit >> >> Set objExlSheet = Nothing >> Set objExlBook = Nothing >> Set objExlApp = Nothing > >この次の行にDoCmd.TransferSpreadsheet〜を記述したほうがいいと思います。 やっぱりインポートできませんでした。 Workbooks.Openしている間でないとファイルを認識してくれないのです。 Quitした後だと、またファイルを見つけられません。 DoCmd.TransferSpreadsheet〜の中にobjExlSheetなどを書けないものですかね。 ちょっとしたところだと思うのですが。 |
こんにちは。かみちゃん です。 >>この次の行にDoCmd.TransferSpreadsheet〜を記述したほうがいいと思います。 > > やっぱりインポートできませんでした。 > Workbooks.Openしている間でないとファイルを認識してくれないのです。 > Quitした後だと、またファイルを見つけられません。 少なくとも、このままのコードではできないようです。 とりあえず、コードの見直しを強くオススメします。 > DoCmd.TransferSpreadsheet〜の中にobjExlSheetなどを書けないものですかね。 できないと思います。 よろずやさんも書かれていますが、 > >このExcelが特別で、開いてやらないとデータを持ってこれないのです。 > > これを解決するのが先です。 > 何が特別なんでしょう? これが原因の可能性が大ですね。 |
>このExcelが特別で、開いてやらないとデータを持ってこれないのです。 これを解決するのが先です。 何が特別なんでしょう? |
▼よろずや さん: >>このExcelが特別で、開いてやらないとデータを持ってこれないのです。 > >これを解決するのが先です。 >何が特別なんでしょう? このExcelなんですけれど、あるソフトとリンクしていて多くのマクロが入っているやつなんです。そのソフトとは、宅急便の伝票データを蓄積していくやつです。 Excelを開かずAccessにインポートしようとすると、「ファイルを解読できません」と出ます。うーん困ったものです。 |
こんちには。かみちゃん です。 >>>このExcelが特別で、開いてやらないとデータを持ってこれないのです。 >> >>これを解決するのが先です。 >>何が特別なんでしょう? > >このExcelなんですけれど、あるソフトとリンクしていて多くのマクロが入っているやつなんです。そのソフトとは、宅急便の伝票データを蓄積していくやつです。 >Excelを開かずAccessにインポートしようとすると、「ファイルを解読できません」と出ます。うーん困ったものです。 もしかして、このExcelファイル単独で開こうとしても、「パスワード保護」がかかっていて、開けないのではないでしょうか? http://support.microsoft.com/default.aspx?scid=kb;ja;257819 |
ご回答ありがとうございます。 パスワードが付いてるかもしれないのであきらめました。 今度は既に開いているExcelのデータの中身を消したいのです。 Sub Test() Dim objExlApp As Object Dim objExlBook As Object Dim objExlSheet As Object Set objExlApp = CreateObject("Excel.Application") Set objExlBook = objExlApp.Workbooks.Open("C:\a\test1.xls") objExlApp.Visible = True Set objExlSheet = objExlBook.Sheets(1) With objExlSheet .Rows("5:50000").ClearContents End With objExlBook.SaveAs "C:\a\test1.xls" objExlApp.Quit Set objExlSheet = Nothing Set objExlBook = Nothing Set objExlApp = Nothing End Sub これではC:\a\test1.xlsが閉じていないと動きません。 読み取り専用で開いてしまってうまくいきません。 既に開いているやつの中身を消すことは出来るのでしょうか。 Workbook.Openを変えるのでしょうか。 これができなかったら、openしているかどうか見分けることは可能でしょうか。 またopenしているExcelを閉じることは可能でしょうか。 欲張り言ってすみません。 |
CreateObject の代わりに GetObject を使います。 ヘルプをよく読んでください。 |
すいません。それはマイクロソフトホームページのヘルプでしょうか。 ACCESSに付いてるヘルプでしょうか |
マイクロソフトのサイトにありました。 GetObjectで動作しました。 ありがとうございました。 |