こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

AccessからExcelへの出力

質問します。
AccessからExcelへ、VBAで指定セルに指定データを落としこむコーディングをしています。
とあるサイトを参考に、下記のコードを組みましたが、実行すると砂時計のまま動かなくなってしまいます。
何が悪いのでしょうか?
SQLでしょうか?

時間がなくて困っています。
何卒よろしくお願いします。(><)


Option Compare Database

Private Sub output()
On Error Resume Next

Dim app As Object
Set app = CreateObject("Excel.Application")

Dim oRs As Recordset
Dim strSQL As String

Dim Wb As Excel.Workbook
Dim Ws As Excel.Worksheet

Dim FileName As String
Dim Worksheet As String

Dim X As Long
Dim Y As Long


FileName = "C:\nouhinnsyo.xls" 'エクセルのファイル名
Worksheet = "納品書" 'ワークシート名

Set Wb = app.Workbooks.Open(FileName) 'ワークブックの指定
Set Ws = Wb.Worksheets(1) 'ワークシートの指定


strSQL = "SELECT 日付,伝票番号,品番,商品名,出庫数,摘要"
strSQL = strSQL & vbCrLf & "FROM 棚卸マスタ"

'出力用レコードセット
Set oRs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

Y = 12
X = 0

Do Until oRs.EOF
Ws.Cells(Y, X + 1) = oRs("日付")
Ws.Cells(Y, X + 2) = oRs("品番")
Ws.Cells(Y, X + 3) = oRs("商品名")
Ws.Cells(Y, X + 4) = oRs("出庫数")
Ws.Cells(Y, X + 9) = oRs("摘要")
oRs.MoveNext
Y = Y + 1
Loop

oRs.Close
Wb.SaveAs FileName 'ファイルの保存
Wb.Close 'ワークブックのクローズ
Ex.Quit 'エクセルセッションをクローズする。

Set Ws = Nothing '変数の初期化
Set Wb = Nothing '変数の初期化
Set Ex = Nothing '変数の初期化
Set oRs = Nothing



End Sub

投稿日時 - 2009-10-30 19:24:17

QNo.5409273

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

嘘を書いているかもしれませんが、気になったところ2つ

1)変数 Worksheet

変数名を変えてみるとか?(大丈夫なのかもしれませんが)、

> Worksheet = "納品書" 'ワークシート名

せっかくワークシート名を設定しているので、指定時に使用したらどうでしょう

> Set Ws = Wb.Worksheets(1) 'ワークシートの指定


2)Excel の Object名

> Dim app As Object
> Set app = CreateObject("Excel.Application")

なので、最後の方の以下

> Ex.Quit 'エクセルセッションをクローズする。

> Set Ex = Nothing '変数の初期化

部分は app ?

このミス(?)を防止するには、コードの先頭に

Option Compare Database
Option Explicit

のように Option Explicit を書いておくと、宣言していない変数を使っていると
コンパイル時にエラーになるので、、、



後は主要なところにブレイクポイントを設定し、ステップ実行した方が早そうです。
(On Error Resume Next はコメントにしてから)

投稿日時 - 2009-10-31 02:35:47

ANo.1

とりあえず
On Error Resume Next
をけして実行してみてください

投稿日時 - 2009-10-30 22:53:05

あなたにオススメの質問