[リストへもどる]
一括表示

投稿時間:2004/06/23(Wed) 17:33
投稿者名:くるりん
Eメール:
URL :
タイトル:
エクセルが開放されません(TT
こんばんわ、お世話になっております。
VBでDAOをつかってエクセルの表をアクセスの表へインサートするという作業をしております。
下記のコードで行っているのですが、メモリからエクセルが開放されません(TT


Public sqlstr As String
Dim work_que As DAO.QueryDef
'xls用
Dim xlapp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As String
Dim xlsconnect As String

  With CommonDialog1
      .CancelError = True
      .Flags = cdlOFNPathMustExist Or cdlOFNFileMustExist
      .Filter = "xls,csvファイル(*.xls;*.csv)|*.xls;*.csv;|"
        
      .ShowOpen          '[ファイルを開く]ダイアログの表示
        
      '[開く]ボタンをクリックしたらファイルパス退避
      filepath = .FileName
      
  End With

  Set xlapp = CreateObject("Excel.Application")   'エクセルオブジェクトセット
  Set xlbook = xlapp.Workbooks.Open(filepath)     '対象ファイルオープン
  xlsheet = xlbook.Sheets(1).Name   '1個めのシート名
        
  xlsconnect = "[Excel 8.0;Database=" & filepath & "]."
      
  sqlstr = "Insert into MST " & "Select * from " & xlsconnect & "[" & xlsheet & "$]"
  Debug.Print sqlstr
  work_que.SQL = sqlstr
  work_que.Execute
        
  xlapp.Quit
  Set xlbook = Nothing
  Set xlapp = Nothing
'---------------------------------------------------------------------------------------

ここのExcel&Word関連、を見比べてみたのですがきちんと宣言されているはずなのに
Set xlapp = Nothing 以降に終了して、元のエクセルが開けずタスクマネージャーにExcelが残ってしまっています。

おかしいところのご指摘をお願いいたします

投稿時間:2004/06/23(Wed) 18:50
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: エクセルが開放されません(TT
私は、DBの方は詳しくないので確認という事で!

これってどこかで、On Error Resume Next のようなエラー処理をしていませんか?

work_que.SQL = sqlstr
work_que.Execute

この部分でエラーが発生していませんか?
この部分をコメント化すればキチンと開放されますが。
又、DAOの方の開放やCloseが必要な気がするのですが?

こういった場合、怪しそうなところをコメント化して順番に確認していけばその箇所が
つかめますよ。

同じファイルを両方で使用するのはあまり好ましくないし
又、このプログラムならExcelを起動する必要がないと思うのですが、シート名の
取得なら DAO でできますので。(ここのExcel関係を参照)

後は、詳しい方にバトンタッチします。<m(__)m>

投稿時間:2004/06/24(Thu) 11:20
投稿者名:くるりん
Eメール:
URL :
タイトル:
ありがとうございました〜
> 私は、DBの方は詳しくないので確認という事で!
>
> これってどこかで、On Error Resume Next のようなエラー処理をしていませんか?
してました。。

> work_que.SQL = sqlstr
> work_que.Execute
>
> この部分でエラーが発生していませんか?
> この部分をコメント化すればキチンと開放されますが。
> 又、DAOの方の開放やCloseが必要な気がするのですが?
開放は、記述してませんが後ろの方でしてますのでそこは大丈夫だと思います。

> こういった場合、怪しそうなところをコメント化して順番に確認していけばその箇所が
> つかめますよ。
なるほど、勉強になります・・・。

> 同じファイルを両方で使用するのはあまり好ましくないし
2回目動かすと動作がおかしかったので、確認のためエクセルを開こうとしたら開けなかったので
両方で使用することはないです^^;

> 又、このプログラムならExcelを起動する必要がないと思うのですが、シート名の
> 取得なら DAO でできますので。(ここのExcel関係を参照)
参考にさせていただきました。いろいろ変えてみて無事動作しました。
どうもありがとうございました〜。