Access VBA質問箱 IV

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

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


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

【10262】EXCEL書き出ししたいのですが NEMO 08/2/27(水) 16:09 質問[未読]
【10263】Re:EXCEL書き出ししたいのですが neptune 08/2/27(水) 23:27 回答[未読]
【10264】Re:EXCEL書き出ししたいのですが NEMO 08/2/28(木) 11:31 発言[未読]
【10265】Re:EXCEL書き出ししたいのですが VBWASURETA 08/2/28(木) 14:07 発言[未読]
【10266】Re:EXCEL書き出ししたいのですが NEMO 08/2/28(木) 14:53 質問[未読]
【10268】Re:EXCEL書き出ししたいのですが neptune 08/2/28(木) 15:40 回答[未読]
【10269】Re:EXCEL書き出ししたいのですが NEMO 08/2/28(木) 15:51 発言[未読]
【10270】Re:EXCEL書き出ししたいのですが NEMO 08/2/28(木) 15:55 質問[未読]
【10271】Re:EXCEL書き出ししたいのですが NEMO 08/2/28(木) 17:27 お礼[未読]

【10262】EXCEL書き出ししたいのですが
質問  NEMO  - 08/2/27(水) 16:09 -

引用なし
パスワード
   データを読み込んでD:\一般\91業務部\積無定期預金顧客管理表(原本).xls
書き込みしているのですが、このシートを30件ごとにシートを追加していき違う名前で保存したいのですがどのような記載をすればいいのかよくわかりません。
丸投げかもしれませんけどどうしていいかわかりません。
よろしくお願いします。

Public Function T明細作成()
Dim objExcel As Object
Dim objBook As Object
Dim objSheet As Object
Dim Db As DAO.Database
Dim INRs As DAO.Recordset
Dim A As String
Dim B As String
Dim 行カウント As Integer

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

Set objBook = objExcel.WorkBooks.Open("D:顧客管理表(原本).xls")
Set objSheet = objBook.Worksheets("偶数月")

Set Db = CurrentDb
Set INRs = Db.OpenRecordset("顧客情報テーブル", dbOpenDynaset)

行カウント = 5

objSheet.RANGE("M4").Value = INRs!店名

Do Until INRs.EOF

If 行カウント > 30 Then


  objBook.Close False
  objExcel.Quit
  Set objExcel = Nothing
 
  Set objExcel = CreateObject("Excel.Application")
  objExcel.Visible = True
  Set objBook = objExcel.WorkBooks.Open("顧客管理表(原本).xls")
  Set objSheet = objBook.Worksheets("偶数月")
  行カウント = 5
End If

行カウント = 行カウント + 1

A = "A" & 行カウント
B = "B" & 行カウント

objSheet.RANGE(A).Value = INRs!漢字氏名
objSheet.RANGE(B).Value = INRs!住所
 
INRs.MoveNext
Loop

INRs.Close
Set INRs = Nothing

objBook.Close False
objExcel.Quit

Set objExcel = Nothing

End Function

【10263】Re:EXCEL書き出ししたいのですが
回答  neptune  - 08/2/27(水) 23:27 -

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

ExcelのRangeオブジェクトにCopyFromRecordset メソッドってのがあります。
ExcelのHelpに使用例もありますから、ご覧になって下さい。
但し、DAOでの使用はレコード数に制限があるのでMSのサポート情報を
探してみて下さい。

ワークシートの追加ですが、Excelにはマクロの記録と言う強力な
サポート機能が用意されていますので、それで基本コードは出来上がります。
それを参考に少し改造すれば良いです。
名前も保存も同様です。

少し気になる点
・Set objExcel = CreateObject("Excel.Application")
が複数記述されているが、1つで十分。
OLEでExcel扱う場合は、常に暗黙の参照が発生しないように気を付けないと
インスタンスが消えないバグを抱え込みます。selectionとか、Activeなんたら
等は使ってはいけません。

Accessの板でデビューでした。

#不明な点で判る所は協力しますが、丸投げには対応しませんので悪しからず。

【10264】Re:EXCEL書き出ししたいのですが
発言  NEMO  - 08/2/28(木) 11:31 -

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

ご指摘ありがとうございます。
いろいろ参考にしてわからないのと丸投げは同じでしょうか?

いろいろがんばって見ます。
ありがとうございます

【10265】Re:EXCEL書き出ししたいのですが
発言  VBWASURETA  - 08/2/28(木) 14:07 -

引用なし
パスワード
   ▼NEMO さん、neptune さん:

こんにちは。

横からすみません。ちょっと丸投げについて記載します。
丸投げというのは質問した方が理解していなくても
そのまま使えてしまうソースを回答することだと思いますよ。

それだと、何故解決したのかわからないままなので
意味がないですよね。

調べてもわからなかったことの経緯と質問するのは別です。

わからなくても良いので回答だけを欲しいというような方に
丸々解決の回答をしたとします。
で、もしそのソースに問題が発生したとしても理解していないと
解決の糸口もわからない状態になりますから。


後、neptune さん回答されてますが、それは参考にされてますか?
Excelの自動マクロ登録で保存したときのソースを見るとわかりますよ。

因みに自分もExcelをAccessで操作する場合はそれで覚えました。


逆に回答がわからなければそれについてレスで質問してください。

【10266】Re:EXCEL書き出ししたいのですが
質問  NEMO  - 08/2/28(木) 14:53 -

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

こんにちは。
私も
Excelの自動マクロ登録で保存したときのソースを参考にしたりします。
でも実際に使用できるときと使用できないときがあります。
イメージ的にはわかるのですか・・・・

CopyFromRecordsetについても調べてみました。

Set DB = OpenDatabase("C:\test.mdb")
Set rst = DB.OpenRecordset("T_data", dbOpenTable)


Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("C:\Book1.xls")
objExcel.Worksheets("T_data").Select

objExcel.Cells(1, 1).CopyFromRecordset rst

objExcel.Quit

rst.Close
DB.Close

Set DB = Nothing
Set rst = Nothing
Set objExcel = Nothing

の参考にしているんですが
objExcel.Cells(1, 1).CopyFromRecordset rst
はどのような意味を表しているのか教えてください。

【10268】Re:EXCEL書き出ししたいのですが
回答  neptune  - 08/2/28(木) 15:40 -

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

VBWASURETA さんフォローありがとうございます。

>いろいろ参考にしてわからないのと丸投げは同じでしょうか?
ですが、参考にしているのは良いのですが、
私は、それをある程度理解し、自分で調べてみて、その上でするのが
質問と思っています。ですから、ある程度、質問内容も絞り込んだものか、
手法そのものの問いになりますし漠然としたものにはなりません。

私はおっさんなので、そのような教え方をされましたし、その教え方
が長い目で見ると本人の役に立つと思っていますし、役立ちました。

ですから、サンプルは書いても、そのまま使えるようなソースは殆ど
このような掲示板では書いた事ありませんし、書きません。
・・・・と言うような意味でした。

 なので、前回のResでは手法を示唆しました。

関係無いですが、私は何度も聞き返してまでResを付けようとも思いません。
何故なら、そのような質問をする方は自分のしようとする事も理解してないし、
調べてもないからそのような質問になると思うからです。

気づいた点を書きます。
>Set DB = OpenDatabase("C:\test.mdb")
>Set rst = DB.OpenRecordset("T_data", dbOpenTable)
>
>
>Set objExcel = New Excel.Application
>objExcel.Workbooks.Open ("C:\Book1.xls")
ここでvisible=trueとしておいた方が良い。場合によっては
Bookか、WorkSheetに不可視の属性がついたままになってしまう恐れがある。
(その場合、次回そのBookをExcelで開いた時不可視となる)

>objExcel.Worksheets("T_data").Select
バージョン(97とか)によってはSelectしなければならないものも
あったような気がするがSelectしなくても良いものはしない。
(画面遷移など無駄な処理を伴う事が多い。)

>objExcel.Cells(1, 1).CopyFromRecordset rst
objExcel.Worksheets("T_data").Cells(1, 1).CopyFromRecordset rst
で、出来ませんかね?

>はどのような意味を表しているのか教えてください。
rstの全てのレコードをA1セルを左端上として、Fieldを右方向に
recordを縦方向にコピーしなさい。

別方法ですが、
ExcelをOLEで扱わないでも、直接、DAOやADOで追加出来ませんでしたっけ??
削除は出来ませんが、追加変更はできたと思います。
但し、頻繁に行うようなら、お勧めしません。
(これもまた、リソース開放のバグの絡みが会ったと思いますので。
詳しくはMSのサポート技術情報で調べてみて下さい。)

参考不具合情報
h tp://support.microsoft.com/kb/414048/ja

【10269】Re:EXCEL書き出ししたいのですが
発言  NEMO  - 08/2/28(木) 15:51 -

引用なし
パスワード
   ▼neptune さん:
いろいろありがとうございます。
VBAは自分なりに調べてやっています。
neptune さんの言うとおり自分でも実際理解していません。(>¥<)
だから実際にモジュールを作成するときも書斎やインターネットをみてパズルのような感覚で作成してみてデバックで値をみなから処理しています。
ですので自分で作成したものはわかるのですが、他人が作成したモジュールはぜんぜんといいほどわかりません。
本当は時間をかけて勉強すればもっともっといいものができると思います。
ただいいわけかもしれませんが今の状態があまりにも悪いので・・・・
とりあえず作成してうまくいけばいい状態なのです。
本当に感謝しています。

【10270】Re:EXCEL書き出ししたいのですが
質問  NEMO  - 08/2/28(木) 15:55 -

引用なし
パスワード
   ▼neptune さん:
だいたい自分の使用としてことができています。
教えていただきたいのですが
Objsheet.Select
Objsheet.COYP Aftre:Objsheet
と記載すると
EXCELシートに
偶数月の後に偶数月(1)とシートができます。
このとき偶数月(1)を2月としたい場合はどう記載すればいいのでしょうか?
よろしくお願いします。

【10271】Re:EXCEL書き出ししたいのですが
お礼  NEMO  - 08/2/28(木) 17:27 -

引用なし
パスワード
   皆さんありがとうございました。
おかげさまで自分のやりたいことができました。

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