過去ログ

                                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

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : かみちゃん  ■日付 : 04/4/29(木) 19:50  -------------------------------------------------------------------------
   こんにちは。かみちゃん です。

>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

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : smith <hac32840@rio.odn.ne.jp>  ■日付 : 04/4/30(金) 9:07  -------------------------------------------------------------------------
   完璧です!自由に開けるようになりました。
ありがとうございました。

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : smith  ■日付 : 04/5/1(土) 13:35  -------------------------------------------------------------------------
   ついでといっては何ですが、もう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

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : かみちゃん  ■日付 : 04/5/1(土) 13:56  -------------------------------------------------------------------------
   こんにちは。かみちゃん です。

>ですから、さきほどと同じように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〜を記述したほうがいいと思います。

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : smith <hac32840@rio.odn.ne.jp>  ■日付 : 04/5/3(月) 11:58  -------------------------------------------------------------------------
   ▼かみちゃん さん:
>これでは、Workbooks.OpenしているExcelファイルをインポートしようとしていませんか?
>記述が正しいのか("A:" & Z & ""もよくわからないので)わかりませんが

>
>>  objExlApp.Quit
>>
>>  Set objExlSheet = Nothing
>>  Set objExlBook = Nothing
>>  Set objExlApp = Nothing
>
>この次の行にDoCmd.TransferSpreadsheet〜を記述したほうがいいと思います。

 やっぱりインポートできませんでした。
 Workbooks.Openしている間でないとファイルを認識してくれないのです。
 Quitした後だと、またファイルを見つけられません。
 DoCmd.TransferSpreadsheet〜の中にobjExlSheetなどを書けないものですかね。
 ちょっとしたところだと思うのですが。

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : かみちゃん  ■日付 : 04/5/3(月) 13:08  -------------------------------------------------------------------------
   こんにちは。かみちゃん です。

>>この次の行にDoCmd.TransferSpreadsheet〜を記述したほうがいいと思います。
>
> やっぱりインポートできませんでした。
> Workbooks.Openしている間でないとファイルを認識してくれないのです。
> Quitした後だと、またファイルを見つけられません。

少なくとも、このままのコードではできないようです。
とりあえず、コードの見直しを強くオススメします。

> DoCmd.TransferSpreadsheet〜の中にobjExlSheetなどを書けないものですかね。

できないと思います。

よろずやさんも書かれていますが、

> >このExcelが特別で、開いてやらないとデータを持ってこれないのです。
>
> これを解決するのが先です。
> 何が特別なんでしょう?

これが原因の可能性が大ですね。

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : よろずや  ■日付 : 04/5/3(月) 12:46  -------------------------------------------------------------------------
   >このExcelが特別で、開いてやらないとデータを持ってこれないのです。

これを解決するのが先です。
何が特別なんでしょう?

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : smith <hac32840@rio.odn.ne.jp>  ■日付 : 04/5/3(月) 13:50  -------------------------------------------------------------------------
   ▼よろずや さん:
>>このExcelが特別で、開いてやらないとデータを持ってこれないのです。
>
>これを解決するのが先です。
>何が特別なんでしょう?

このExcelなんですけれど、あるソフトとリンクしていて多くのマクロが入っているやつなんです。そのソフトとは、宅急便の伝票データを蓄積していくやつです。
Excelを開かずAccessにインポートしようとすると、「ファイルを解読できません」と出ます。うーん困ったものです。

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : かみちゃん  ■日付 : 04/5/3(月) 15:05  -------------------------------------------------------------------------
   こんちには。かみちゃん です。

>>>このExcelが特別で、開いてやらないとデータを持ってこれないのです。
>>
>>これを解決するのが先です。
>>何が特別なんでしょう?
>
>このExcelなんですけれど、あるソフトとリンクしていて多くのマクロが入っているやつなんです。そのソフトとは、宅急便の伝票データを蓄積していくやつです。
>Excelを開かずAccessにインポートしようとすると、「ファイルを解読できません」と出ます。うーん困ったものです。

もしかして、このExcelファイル単独で開こうとしても、「パスワード保護」がかかっていて、開けないのではないでしょうか?
http://support.microsoft.com/default.aspx?scid=kb;ja;257819

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : smith <hac32840@rio.odn.ne.jp>  ■日付 : 04/5/10(月) 19:46  -------------------------------------------------------------------------
   ご回答ありがとうございます。
パスワードが付いてるかもしれないのであきらめました。
今度は既に開いている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を閉じることは可能でしょうか。
欲張り言ってすみません。

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : よろずや  ■日付 : 04/5/10(月) 21:47  -------------------------------------------------------------------------
   CreateObject の代わりに GetObject を使います。
ヘルプをよく読んでください。

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : smith <hac32840@rio.odn.ne.jp>  ■日付 : 04/5/10(月) 22:17  -------------------------------------------------------------------------
   すいません。それはマイクロソフトホームページのヘルプでしょうか。
ACCESSに付いてるヘルプでしょうか

 ───────────────────────────────────────  ■題名 : Re:ACCESSからExcelを操作  ■名前 : smith <hac32840@rio.odn.ne.jp>  ■日付 : 04/5/11(火) 14:55  -------------------------------------------------------------------------
   マイクロソフトのサイトにありました。
GetObjectで動作しました。
ありがとうございました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 619