Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1708 / 2272 ツリー ←次へ | 前へ→

【5664】クエリで作成したデータをエクセルへ吐き出したい 鈴木 05/7/22(金) 11:46 質問[未読]
【5668】Re:クエリで作成したデータをエクセルへ吐... 小僧 05/7/22(金) 14:48 発言[未読]
【5669】Re:クエリで作成したデータをエクセルへ吐... 鈴木 05/7/22(金) 15:30 質問[未読]
【5670】Re:クエリで作成したデータをエクセルへ吐... 鈴木 05/7/22(金) 16:19 発言[未読]
【5671】Re:クエリで作成したデータをエクセルへ吐... 小僧 05/7/22(金) 17:18 回答[未読]
【5674】Re:クエリで作成したデータをエクセルへ吐... 鈴木 05/7/22(金) 18:42 発言[未読]
【5675】Re:クエリで作成したデータをエクセルへ吐... 鈴木 05/7/23(土) 12:53 お礼[未読]

【5664】クエリで作成したデータをエクセルへ吐き...
質問  鈴木  - 05/7/22(金) 11:46 -

引用なし
パスワード
   皆様 こんにちは。
ある企業でシステム担当をしています 鈴木と申します。

私の力だけでは解決しそうもないのでこの場を借りて質問させていただきます。

オラクルからテーブルにリンクさせたデータ(資料)をクエリで加工し
抜き出したい対象項目+検索条件(DELFLG 0=必ず表示させるという意味)をクエリ上に出しました。

その後その対象項目をエクセルのシート(KataZai)のA1セル(既存)に
ボタン一つで書き込みたい(上書き可)のですが

どうすればよいでしょうか? vbもつかわなければだめかと思いますが
アクセスではどこまでできるでしょうか?


アクセスは2003 OSはXPになります。

よろしくお願いします。

【5668】Re:クエリで作成したデータをエクセルへ吐...
発言  小僧  - 05/7/22(金) 14:48 -

引用なし
パスワード
   ▼鈴木 さん:
こんにちは。

>ボタン一つで書き込みたい(上書き可)のですが

Access のクエリにはボタンが配置できないので、
フォームにコマンドボタンを配置してあげる必要があります。

マクロでも処理できますが、VBAの掲示板なのでVBAで行う事とします。

コマンドボタンを仮に「出力」という名前として、クリック時のイベントに

Private Sub 出力_Click()
Dim QName As String
Dim XName As String

  QName = "クエリ名"
  XName = "C:\KataZai.xls"
  
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, QName, XName, True

End Sub

とすればお望みのような動作になるかと思われます。

※こちらの掲示板ではマルチポスト(複数の掲示板にまったく同じ話題を
投稿すること)容認されてますが、他の掲示板には禁止となっている所も
もちろんあります。気をつけましょう。

【5669】Re:クエリで作成したデータをエクセルへ吐...
質問  鈴木  - 05/7/22(金) 15:30 -

引用なし
パスワード
   小僧さん
こんにちは。

すいません。 そんなルールがあるなんて知りませんでした。
以後気をつけます。

さて
教えていただいた通り(ちょっと変更して)書いてみました。

*************************************
Private Sub KTZJYOHO_Click()
Dim QName As String
Dim XName As String

  QName = "KTZJYOHO"
  XName = "C:\XU:\OrderSystem:\KataZai.xls"
 
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, QName, XName, True

End Sub
*************************************

上の中で「KataZai」はシートになりますが書き方はあっていますでしょうか?
シートは.xlsの前に書くのはおかしいような気がしますが・・・。
又吐き出す先のセルを指定したいのですがその指定はどこで書き込みをすれば
よいでしょうか?

実行してみましたがエラーになってしまいデバックで確認してみたところ
DoCmd.Trans・・・・の部分が黄色になってしまいました。

よろしくお願いします。

【5670】Re:クエリで作成したデータをエクセルへ吐...
発言  鈴木  - 05/7/22(金) 16:19 -

引用なし
パスワード
   小僧さん
こんにちは。

もし返事を書き途中だったらごめんなさい。
先ほど教えていただいた構文で新規シート(KTZJYOHO)を作成する事が
できました。
*色々間違いありました。 
1. 吐き出すエクセルを実行時に開いてはいけない。--->>>開いてました。
2. XName = "C:\XU:\OrderSystem:\KataZai.xls"が間違っていました。
  間の「:」は必要ありませんでした。
  又KataZaiも必要ありませんでした。

ここまでできたのですが今回行いたいのは「KataZai」という既存のシートの
A1セル(セル指定)で吐き出したいです。

サイトで該当しそうな検索文字を調べているのですがまだ解決にいたっていません。

尚最終的に行いたいのは複数クエリから一つのシートのセルを指定(クエリAは
セルA1〜・クエリBはセルC1〜・クエリCはセルE1〜)に吐き出す。
このような感じです。

どうぞよろしくお願いします。

【5671】Re:クエリで作成したデータをエクセルへ吐...
回答  小僧  - 05/7/22(金) 17:18 -

引用なし
パスワード
   ▼鈴木 さん:
こんにちは。

「KataZai」はシート名でしたね。すみません。
「TransferSpredSheet」メソッドには残念ながらシート位置やセル位置を決めて
エクスポートする機能がないので、オートメーションと呼ばれる方法で行います。


>尚最終的に行いたいのは複数クエリから一つのシートのセルを指定(クエリAは
>セルA1〜・クエリBはセルC1〜・クエリCはセルE1〜)に吐き出す。
>このような感じです。

クエリA、クエリB、クエリCと3つで固定であるのかや
「A1」「C1」「E1」が規則性ありと判断して良いかが解らなかったので
以下の様なテーブルを作ってみました。

T_出力情報
SEQ シート名  セル番号  クエリ名
1  KataZai   A1    クエリA
2  KataZai   C1    クエリB
3  KataZai   E1    クエリC




Sub KTZJYOHO()
'要参照設定 Microsoft DAO x.x Object Library
Dim RS As DAO.Recordset
Dim Rst As DAO.Recordset
Dim xlsApp As Object
Dim xlsWkb As Object
Dim XName As String
Dim SName As String

  XName = "C:\XU\OrderSystem.xls"
  Set xlsApp = CreateObject("Excel.Application")
  Set xlsWkb = xlsApp.Workbooks.Open(XName)
  Set RS = CurrentDb.OpenRecordset("T_出力情報", dbOpenDynaset)
    
    Do Until RS.EOF
      Set Rst = CurrentDb.OpenRecordset _
                  (RS![クエリ名], dbOpenDynaset)
        SName = RS![シート名]
        With xlsWkb.Sheets(SName)
          .Range(RS![セル番号]).CopyFromRecordset Rst
        End With
      Rst.Close
      RS.MoveNext
    Loop
  Set Rst = Nothing
  RS.Close: Set RS = Nothing
  xlsWkb.Close True: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
End Sub

【5674】Re:クエリで作成したデータをエクセルへ吐...
発言  鈴木  - 05/7/22(金) 18:42 -

引用なし
パスワード
   小僧さん
こんにちは

>クエリA、クエリB、クエリCと3つで固定であるのかや
>「A1」「C1」「E1」が規則性ありと判断して良いかが解らなかったので
>以下の様なテーブルを作ってみました。

とありますが「テーブル」をインポートした事はあるが作った事はないので
そこからやってみます。*クエリはなんとか作りましたが・・・・。

作るのはテーブル?でよいのですよね。
作ったクエリーとエクセルを混ぜたような感じでしたが。

今は会社でしたが今日はもうあがります。
作成していただいた構文を理解するのにかなり時間がかかりそうです。

又明日考えます。 

よろしくお願いします。

【5675】Re:クエリで作成したデータをエクセルへ吐...
お礼  鈴木  - 05/7/23(土) 12:53 -

引用なし
パスワード
   小僧さん
こんにちは。

教えていただいた通り作成してみたところエクセルへ吐出しできました。
(^^:v

ただ一つ問題がありまして吐出し後のエクセルのデータサイズが
とても大きくなってしまいます。(10Mぐらい)。

吐き出しているデータサイズは5000行が二ページなので
たぶん400K程度だと思うのですが

どうやら別のシート(Listシート)がフィルタリングされていて
そのフィルタリングが影響しデータサイズが大きくなっているように
見受けられます。*定かではないですが。

そのエクセルは外注が作成したので本日お休み日なので
休み明けに聞いてみようと思っています。

とりあえず吐き出しは成功しました。
どうもありがとうございました。

又上の件で何か改善しなければいけないことができましたら
質問させていただきます。

本当にありがとうございました。

1708 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078255
(SS)C-BOARD v3.8 is Free