過去ログ

                                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

 ───────────────────────────────────────  ■題名 : Re:Excelのプロセスが残る事象  ■名前 : かみちゃん  ■日付 : 04/7/8(木) 22:54  -------------------------------------------------------------------------
   こんにちは。かみちゃん です。

>下記のようなエクスポートを行ったのですが、これを行った後、何故か作成済みの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

 ───────────────────────────────────────  ■題名 : Re:Excelのプロセスが残る事象  ■名前 : ビバジャイアンツ! <t1312865@hotmail.com>  ■日付 : 04/7/8(木) 23:39  -------------------------------------------------------------------------
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>下記のようなエクスポートを行ったのですが、これを行った後、何故か作成済みの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なのかが把握できません。詳細を具体的にお願いします。

 ───────────────────────────────────────  ■題名 : Re:Excelのプロセスが残る事象  ■名前 : かみちゃん  ■日付 : 04/7/9(金) 20:38  -------------------------------------------------------------------------
   こんにちは。かみちゃん です。

>ExcelからAccessのデータをインポートしたときの記述においては成功しました。

今回の事象は、AccessからExcelにエクスポートなのではないでしょうか?
ちょっとおっしゃっている意味がよく理解できていません。

> が、エクセルにおいても同様なのですね。でも、把握できないのは、何故、エクセルアプリ、ワークブック、ワークシートの,Dimの後のデータ型が、WorkbooksやExcel.ApplicationでなくてObjectなのかが把握できません。詳細を具体的にお願いします。

私も、詳細を具体的に理解できているわけではなく、経験上でコメントさせていただいたのですが、少なくとも言えるのは、ワークブック、ワークーシートは、Accessから見ると1つのオブジェクトだからではないでしょうか?
それ以外のことは、わかりませんので、さらに詳細をお求めであれば、他の方のコメントをお待ちください。

 ───────────────────────────────────────  ■題名 : Re:Excelのプロセスが残る事象  ■名前 : ビバ!ジャイアンツ <t1312865@hotmail.com>  ■日付 : 04/7/10(土) 1:56  -------------------------------------------------------------------------
   ▼かみちゃん さん:
>>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を行うことが出来るのかと思って試てみたのですが、いまだに成功していないのです。まぁ、もう少し自分で試みてみます。変身ありがとうございました。

 ───────────────────────────────────────  ■題名 : Re:Excelのプロセスが残る事象  ■名前 : かみちゃん  ■日付 : 04/7/10(土) 7:53  -------------------------------------------------------------------------
   こんには。かみちゃん です。

>すみません。理解できていないのではなく、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つの方法のどちらなのでしょうか?

 ───────────────────────────────────────  ■題名 : Re:Excelのプロセスが残る事象  ■名前 : ビバ!ジャイアンツ <t1312865@hotmail.com>  ■日付 : 04/7/10(土) 11:25  -------------------------------------------------------------------------
   すみません、かなり混同させてしまいましたね。

>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以外に固有のオブジェクトのデータ型は出来ないのかと思ったのです。
 かみさんの記述で今私のほうはうまく成功しています。ありがとうございます。少々長い説明になりましたが、一応こういったことです。把握できますでしょうか?

 ───────────────────────────────────────  ■題名 : Re:Excelのプロセスが残る事象  ■名前 : かみちゃん  ■日付 : 04/7/10(土) 11:43  -------------------------------------------------------------------------
   こんにちは。かみちゃん です。

> テキストファイル(.txt)やワード(.doc)へのインポートの場合も、同様にObjectと記述するのか、それともExcelの時のように、固有のオブジェクトのデータ型が必要なのかと思ったのです。

「アクセスのファイル、テーブルを開けて閉じるためのコマンド」の記述は必ずいりますが、テキストファイルのときは、Object型の宣言は、特に必要なかったのではないでしょうか?
また、インポートではなく、AccessからExcel・Word・テキストファイルのエクスポートのことですよね?
Wordへのエクスポートは、よくわかりません。

 ───────────────────────────────────────  ■題名 : Re:Excelのプロセスが残る事象  ■名前 : ビバ!ジャイアンツ <t1312865@hotmail.com>  ■日付 : 04/7/10(土) 14:59  -------------------------------------------------------------------------
   ▼かみちゃん さん:
>> テキストファイル(.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

という記述になり、変数を開放するのみで、閉じるコマンドはありませんでした。
アクセスでも同様なのかは自分で調べてみます。

文章力が少し欠けているせいでなかなか質問を把握させることが出来ませんでした。大変お手数をおかけいたしました。

 ───────────────────────────────────────  ■題名 : Re:エクスポートした後  ■名前 : さんきん  ■日付 : 04/7/15(木) 15:16  -------------------------------------------------------------------------
   exapp.Quit

はしてるのかしら?

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