Page 698 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼エクスポートした後 ビバ!ジャイアンツ 04/7/8(木) 21:56 ┣Re:Excelのプロセスが残る事象 かみちゃん 04/7/8(木) 22:54 ┃ ┗Re:Excelのプロセスが残る事象 ビバジャイアンツ! 04/7/8(木) 23:39 ┃ ┗Re:Excelのプロセスが残る事象 かみちゃん 04/7/9(金) 20:38 ┃ ┗Re:Excelのプロセスが残る事象 ビバ!ジャイアンツ 04/7/10(土) 1:56 ┃ ┗Re:Excelのプロセスが残る事象 かみちゃん 04/7/10(土) 7:53 ┃ ┗Re:Excelのプロセスが残る事象 ビバ!ジャイアンツ 04/7/10(土) 11:25 ┃ ┗Re:Excelのプロセスが残る事象 かみちゃん 04/7/10(土) 11:43 ┃ ┗Re:Excelのプロセスが残る事象 ビバ!ジャイアンツ 04/7/10(土) 14:59 ┗Re:エクスポートした後 さんきん 04/7/15(木) 15:16 ─────────────────────────────────────── ■題名 : エクスポートした後 ■名前 : ビバ!ジャイアンツ <t1312865@hotmail.com> ■日付 : 04/7/8(木) 21:56 -------------------------------------------------------------------------
下記のようなエクスポートを行ったのですが、これを行った後、何故か作成済みのExcelアプリケーションが、起動後にシートを表示しないどころか、データそのものが表示されません。何か行ってはいけないコマンドがあるのでしょうか。どなたか、よきアドバイスをお願いします。 Dim exapp As New Excel.Application Dim exbook As Object Dim exsheet As Object Dim cnc As New ADODB.Connection Dim myPath As String 'パス Dim strFilename As String 'ファイル名 Dim rstKB As New ADODB.Recordset '競馬日程 Dim strSQL As String Dim i As Long myPath = CurrentProject.Path Set exapp = CreateObject("Excel.Application") If Err.Number <> 0 Then Set exapp = CreateObject("Excel.Application") End If Set cnc = CurrentProject.Connection strSQL = "SELECT * FROM 競馬日程 where レース年代日付=#1994/01/01#;" rstKB.Open strSQL, cnc, adOpenForwardOnly, adLockOptimistic exapp.Workbooks.Add Set exbook = exapp.ActiveWorkbook 'ワークブック追加 Set exsheet = exbook.Sheets("Sheet1") 'ワークシート設定 exsheet.Activate 'ワークシートアクティブ For i = 0 To rstKB.Fields.Count - 1 exsheet.Cells(1, i + 1).Value = rstKB.Fields(i).Name Next exsheet.Cells(2, 1).Activate Dim rstTH As New ADODB.Recordset '月基本週日付 Dim rstKH As New ADODB.Recordset '基本日付 Dim rstRZ As New ADODB.Recordset 'レース順 Dim rstRM As New ADODB.Recordset 'レース名 Dim rstZT As New ADODB.Recordset '馬場状態 rstTH.Open "月基本週日付データ", cnc, adOpenForwardOnly, adLockOptimistic rstKH.Open "基本日付データ", cnc, adOpenForwardOnly, adLockOptimistic rstRZ.Open "レース順データ", cnc, adOpenForwardOnly, adLockOptimistic rstRM.Open "レース名データ", cnc, adOpenForwardOnly, adLockOptimistic rstZT.Open "馬場状態データ", cnc, adOpenForwardOnly, adLockOptimistic Do Until rstKB.EOF With ActiveCell With .Offset(0, 0) .NumberFormatLocal = "yyyy/m/d" .Value = rstKB![レース年代日付] End With .Offset(0, 1).Value = rstKB![年代] .Offset(0, 2).Value = rstKB![曜日] If Not IsNull(rstKB![月基本週日付ID]) Then rstTH.Filter = "[月基本週日付ID]=" & rstKB![月基本週日付ID] .Offset(0, 3).Value = rstTH![月基本週日付] Else .Offset(0, 3).Value = "" End If If Not IsNull(rstKB![基本日付ID]) Then rstKH.Filter = "[基本日付ID]=" & rstKB![基本日付ID] .Offset(0, 4).Value = rstKH![基本日付] Else .Offset(0, 4).Value = "" End If If Not IsNull(rstKB![レース順ID]) Then rstRZ.Filter = "[レース順ID]=" & rstKB![レース順ID] .Offset(0, 5).Value = rstRZ![レース順] Else .Offset(0, 5).Value = "" End If If Not IsNull(rstKB![レース名ID]) Then rstRM.Filter = "[レース名ID]=" & rstKB![レース名ID] .Offset(0, 6).Value = rstRM![レース名] Else .Offset(0, 6).Value = "" End If If Not IsNull(rstKB![馬場状態ID]) Then rstZT.Filter = "[馬場状態ID]=" & rstKB![馬場状態ID] .Offset(0, 7).Value = rstZT![馬場状態] Else .Offset(0, 7).Value = "" End If .Offset(1, 0).Activate End With rstKB.MoveNext Loop strFilename = myPath & "\競馬日程.xls" exbook.SaveAs strFilename exbook.Close Set exbook = Nothing rstTH.Close rstKH.Close rstRZ.Close rstRM.Close rstZT.Close rstKB.Close cnc.Close Set rstTH = Nothing Set rstKH = Nothing Set rstRZ = Nothing Set rstRM = Nothing Set rstZT = Nothing Set rstKB = Nothing Set rstKB = Nothing Set cnc = Nothing |
こんにちは。かみちゃん です。 >下記のようなエクスポートを行ったのですが、これを行った後、何故か作成済みのExcelアプリケーションが、起動後にシートを表示しないどころか、データそのものが表示されません。何か行ってはいけないコマンドがあるのでしょうか。どなたか、よきアドバイスをお願いします。 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=2702;id=access VBAのコード内に修飾子がひとつでも抜けていると終了してもExcel.exeのプロセスが残る事象になります。 具体的には、次の箇所ではないでしょうか? >Do Until rstKB.EOF > With ActiveCell Do Until rstKB.EOF With exsheet.ActiveCell |
▼かみちゃん さん: >こんにちは。かみちゃん です。 > >>下記のようなエクスポートを行ったのですが、これを行った後、何故か作成済みのExcelアプリケーションが、起動後にシートを表示しないどころか、データそのものが表示されません。何か行ってはいけないコマンドがあるのでしょうか。どなたか、よきアドバイスをお願いします。 > >http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=2702;id=access >VBAのコード内に修飾子がひとつでも抜けていると終了してもExcel.exeのプロセスが残る事象になります。 > >具体的には、次の箇所ではないでしょうか? > >>Do Until rstKB.EOF >> With ActiveCell > >Do Until rstKB.EOF > With exsheet.ActiveCell ExcelからAccessのデータをインポートしたときの記述においては成功しました。そこでは、アクセスの開閉、テーブルの開閉、レコードセットの開閉を行うのですが、エクセルにおいても同様なのですね。でも、把握できないのは、何故、エクセルアプリ、ワークブック、ワークシートの,Dimの後のデータ型が、WorkbooksやExcel.ApplicationでなくてObjectなのかが把握できません。詳細を具体的にお願いします。 |
こんにちは。かみちゃん です。 >ExcelからAccessのデータをインポートしたときの記述においては成功しました。 今回の事象は、AccessからExcelにエクスポートなのではないでしょうか? ちょっとおっしゃっている意味がよく理解できていません。 > が、エクセルにおいても同様なのですね。でも、把握できないのは、何故、エクセルアプリ、ワークブック、ワークシートの,Dimの後のデータ型が、WorkbooksやExcel.ApplicationでなくてObjectなのかが把握できません。詳細を具体的にお願いします。 私も、詳細を具体的に理解できているわけではなく、経験上でコメントさせていただいたのですが、少なくとも言えるのは、ワークブック、ワークーシートは、Accessから見ると1つのオブジェクトだからではないでしょうか? それ以外のことは、わかりませんので、さらに詳細をお求めであれば、他の方のコメントをお待ちください。 |
▼かみちゃん さん: >>ExcelからAccessのデータをインポートしたときの記述においては成功しました。 >今回の事象は、AccessからExcelにエクスポートなのではないでしょうか? >ちょっとおっしゃっている意味がよく理解できていません。 すみません。理解できていないのではなく、ExcelからAccessへと出来たんで、逆のこともと思ってやってみたのです。 >私も、詳細を具体的に理解できているわけではなく、経験上でコメントさせていただいたのですが、少なくとも言えるのは、ワークブック、ワークーシートは、Accessから見ると1つのオブジェクトだからではないでしょうか? >それ以外のことは、わかりませんので、さらに詳細をお求めであれば、他の方のコメントをお待ちください。 エクセルにおいては、 Dim cnc As New ADODB.Connection "data Source=C:\該当パス\該当.mdb;" cnc.Open dim rst as New ADODB.recordset と、Asの後がObjectでないので、不思議に思ったのです。参照設定でExcel.AlllicationをチェックしてWorkbooks、WorkSheetを行うことが出来るのかと思って試てみたのですが、いまだに成功していないのです。まぁ、もう少し自分で試みてみます。変身ありがとうございました。 |
こんには。かみちゃん です。 >すみません。理解できていないのではなく、ExcelからAccessへと出来たんで、逆のこともと思ってやってみたのです。 Excelで、Accessテーブルへインポートする場合 Accessで、Excelへエクスポートする場合 この2つは、記述方法が違います。 今回の質問がどちらのことをおっしゃっていて、どちらができないのかが「私が」理解できていません。(こんがらがっています) >エクセルにおいては、 >Dim cnc As New ADODB.Connection >"data Source=C:\該当パス\該当.mdb;" >cnc.Open >dim rst as New ADODB.recordset >と、Asの後がObjectでないので、不思議に思ったのです。 この記述は、ExcelでAccessへインポートする場合ではないでしょうか? であれば、As Objectという記述にはならないと思います。 「成功していない」というのは、上記2つの方法のどちらなのでしょうか? |
すみません、かなり混同させてしまいましたね。 >Excelで、Accessテーブルへインポートする場合 >Accessで、Excelへエクスポートする場合 >この2つは、記述方法が違います。 >今回の質問がどちらのことをおっしゃっていて、どちらができないのかが「私が」理解できていません。(こんがらがっています) 実際に私が行いたかったのは、AccessVBAによる、Excelへのエクスポートです。 これは間違いありません。これが成功していなかったのです。 >この記述は、ExcelでAccessへインポートする場合ではないでしょうか? >であれば、As Objectという記述にはならないと思います。 >「成功していない」というのは、上記2つの方法のどちらなのでしょうか? ExcelでAccessへエクスポートする場合にも、同様に ”アクセスのファイル、テーブルを開けて閉じるためのコマンド”の記述が必要です。エクセルにおいても同様といったのはそのことです。エクセルで記述した場合に、Asの後にObjectは使用しなかったので、不思議に思ったのです。テキストファイル(.txt)やワード(.doc)へのインポートの場合も、同様にObjectと記述するのか、それともExcelの時のように、固有のオブジェクトのデータ型が必要なのかと思ったのです。ちなみに、ASPによるAccessへの接続の場合には、 Set cnc=Server.CreateObject("ADODB.connection") Set rst=Server.Createobject("ADODB.recordset") と、記述の仕方は違いますが、オブジェクトを作るという点と、固有のデータ型を使用するという点で同じです。AccessからみたExcelもひとつのオブジェクトであるのは把握できますが、Object以外に固有のオブジェクトのデータ型は出来ないのかと思ったのです。 かみさんの記述で今私のほうはうまく成功しています。ありがとうございます。少々長い説明になりましたが、一応こういったことです。把握できますでしょうか? |
こんにちは。かみちゃん です。 > テキストファイル(.txt)やワード(.doc)へのインポートの場合も、同様にObjectと記述するのか、それともExcelの時のように、固有のオブジェクトのデータ型が必要なのかと思ったのです。 「アクセスのファイル、テーブルを開けて閉じるためのコマンド」の記述は必ずいりますが、テキストファイルのときは、Object型の宣言は、特に必要なかったのではないでしょうか? また、インポートではなく、AccessからExcel・Word・テキストファイルのエクスポートのことですよね? Wordへのエクスポートは、よくわかりません。 |
▼かみちゃん さん: >> テキストファイル(.txt)やワード(.doc)へのインポートの場合も、同様にObjectと記述するのか、それともExcelの時のように、固有のオブジェクトのデータ型が必要なのかと思ったのです。 すみません。エクスポートの間違いでしだ。 >「アクセスのファイル、テーブルを開けて閉じるためのコマンド」の記述は必ずいりますが、テキストファイルのときは、Object型の宣言は、特に必要なかったのではないでしょうか? >また、インポートではなく、AccessからExcel・Word・テキストファイルのエクスポートのことですよね? >Wordへのエクスポートは、よくわかりません。 DoCmd.TransferText acExportDelim, "", "抽出テーブル", "抽出テキスト.txt", False, "" アクセスだとこれで出来ました。申し訳ありません。ちなみに、ワードだと、マクロでやってみようと思ったら出来ませんでした。 エクセルですと、 参照設定のMicrosoft word 10 object.libraryをチェックして、 dim Wd as Word.application dim wdoc as word.document Set wd =Createobject("Word.application.10") 〜 Set ed =nothing Set Wdoc =Nothing という記述になり、変数を開放するのみで、閉じるコマンドはありませんでした。 アクセスでも同様なのかは自分で調べてみます。 文章力が少し欠けているせいでなかなか質問を把握させることが出来ませんでした。大変お手数をおかけいたしました。 |
exapp.Quit はしてるのかしら? |