Access VBA質問箱 IV

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

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


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

【11490】エクセル出力について たつ 10/2/26(金) 15:02 質問[未読]
【11494】Re:エクセル出力について 小僧 10/2/26(金) 17:43 発言[未読]
【11509】Re:エクセル出力について たつ 10/3/3(水) 12:35 発言[未読]
【11513】Re:エクセル出力について 小僧 10/3/5(金) 11:30 発言[未読]

【11490】エクセル出力について
質問  たつ  - 10/2/26(金) 15:02 -

引用なし
パスワード
   アクセスデータが6万件を超える為、シートを分けて、エクスポートしたいのですが、うまくいきません

Form1に、コンボボックスがあり、そこで品目を選択します

Form1で選択した品目だけを抽出したデータ
クロス集計のクエリ1のデータをエクセルにエクスポートします

データが6万件を超える為、
5万件までいったら、次のシートへ…エクスポートさせる
といったようにするにはどうしたらよいのでしょうか?

どうかアドバイスお願いします


現在はこんな感じで書いてます

Private Sub コマンド12_Click()
On Error GoTo エラー

Dim Strac As String
Dim Varxls As Variant
Dim Strmsg As String


Strac = "Q_クロス集計"
Varxls = "D:\ファイル\Data.xls"
Strmsg = Strac & "を、Excelファイルへ出力します。" & Chr(13) & _
    "出力先は" & Varxls & "、シート名は" & Strac & "です" & _
    Chr(13) & "よろしければ、OKをクリックしてください"
   
If MsgBox(Strmsg, vbOKCancel) = vbOK Then

  DoCmd.TransferSpreadsheet acExport, _
      acSpreadsheetTypeExcel9, Strac, Varxls, True, Me![HinmokuCmb]
 
 MsgBox "データ出力は正常に完了しました"
End If
Exit Sub

エラー:
  If Err.Number = 3044 Then
    MsgBox "パスの指定が誤っている可能性があります", vbCritical
  Else
    MsgBox "予期せぬエラーが発生しました", vbCritical
  End If
End Sub

【11494】Re:エクセル出力について
発言  小僧  - 10/2/26(金) 17:43 -

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

> データが6万件を超える為、
> 5万件までいったら、次のシートへ…エクスポートさせる
> といったようにするにはどうしたらよいのでしょうか?

ExcelVBAの知識が必要となりますが
TransferSpreadsheet で出力するのではなく、
オートメーションで操作するのが良さそうですね。

CopyFromRecordset メソッドには
MaxRows を指定できますので
お望みの様な動作が可能かと思われます。

【11509】Re:エクセル出力について
発言  たつ  - 10/3/3(水) 12:35 -

引用なし
パスワード
   ▼小僧 さん:

アドバイスありがとうございます

あれから、CopyFrom Recordsetについていろいろと調べてみましたが、
いまいち、どう作成したらよいのかわかんなくて悩んでます

もしよろしければ、もう少し詳しく教えていただけるとうれしいです

アクセスのクエリデータが6万件以上ありますが、
それをエクセルへ5万件毎にシートを替えたいとおもっています

よろしくお願いします

【11513】Re:エクセル出力について
発言  小僧  - 10/3/5(金) 11:30 -

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

> あれから、CopyFrom Recordsetについていろいろと調べてみましたが、
> いまいち、どう作成したらよいのかわかんなくて悩んでます

こういったWeb上の掲示板でのやり取りですので
上記の様な事を仰られても
たつ さんがどの様な箇所で悩まれていて
何がうまくいかないのかが解りかねます。

以下は以前にこちらの掲示板で
当方が回答したものです。

h tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=6597;id=access


プロシジャ名に「20行毎」とあるとおり、
たつ さんの仕様とは違いますが
指定した行ずつExcelに吐き出すサンプルになるかと思われます。

後は別シートへの吐き出しの指定の処理を加えれば
お望みの様な動作になるかと思われます。


> アクセスのクエリデータが6万件以上ありますが、
> それをエクセルへ5万件毎にシートを替えたいとおもっています

まずは600件程度のデータを500件ごとに吐き出すサンプルを
作ってみて、その後件数を増やすと良さそうですね。

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