|
こんにちは。かみちゃん です。
> CopyFromRecordsetとは、どのような機能なのですか?
CopyFromRecordsetメソッドのヘルプを参照していただいたほうがいいのですが、
ADO または DAO の Recordset オブジェクトの内容をワークシートにコピーします。
指定されたセル範囲の左上端を起点として、データを貼り付けます
とあります。
なお、以下のURLなどが参考になりますでしょうか?
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_030.html
過去ログや、Webを検索するといろいろ出てきます。
さらに簡単なサンプルとしては、
http://billyboy.blog81.fc2.com/blog-entry-191.html#extended
に出ているのですが、以下のような感じです。
ActiveCellを左上とした範囲に出力されます。
Sub Sample()
Dim con, rec, i As Integer
'ADOのConnectionオブジェクトを作成
Set con = CreateObject("ADODB.Connection")
With con
'接続文字列:接続するデータベースによって異なる
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" _
& ";Data Source=C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
.Open
End With
'ADOのRecordsetオブジェクトを作成
Set rec = CreateObject("ADODB.Recordset")
'Northwind.mdbの社員テーブルを開く
rec.Open "社員", con
For i = 0 To rec.Fields.Count - 1
ActiveCell.Offset(0, i).Value = rec(i).Name
Next i
ActiveCell.Offset(1, 0).CopyFromRecordset rec
End Sub
今回は、必要なさそうですが、
CopyFromRecordsetを使うと、Excelの最大行を超える場合は、シートに分割することなどが簡単なので、便利です。
> [P列]のステータスが"試済"の場合、ACCESSで、データを抽出した時点で既に
> [H列]の完了実績日の各欄に、試済完了実績日が入力されているのですが、
> [P列]のステータスが"未"の場合、[H列]の完了実績日の各欄は、データが何も
> 入力されていないタダの空欄になっています。
>
> この空欄に"―"を入力したいのですが、どのようにマクロを記述すればよろしいでしょうか?
空欄というのは、一般操作で
A列の値が入っている最終行が163行とした場合、
H2:H163を選択して、「編集」−「ジャンプ」の[セル選択]をクリックし、
「空白」にチェックをして、[OK]をクリックしたときに選択される範囲
でいいのでしょうか?
それでいいのであれば、その操作を「マクロの記録」で記録してみて、さらに修正を加えます。
修正の際、セル範囲については、[62479]で解決した範囲設定方法を応用します。
On Error Resume Next
Range("H2:H" & Range("A" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Value = "-"
On Error GoTo 0
元々のデータベースの内容としたいことがわかれば、もっと効率のよい方法はアドバイスできるかもしれません。
|
|