アプリ版:「スタンプのみでお礼する」機能のリリースについて

Accessフォームで入力したレコードを指定のエクセルのセルへ転送し印刷できるようにしました。
「Excelへ出力」ボタンをクリックすると、一件分のレコードのみ転送され印刷できましたが、残りのレコードも印刷できるようにしたいですが直し方がわからないため、コードの修正箇所を教えていただきたいです。分かる方がいましたらご教授ください。コードは以下の通りです。
よろしくお願いします。

Private Sub Excelへ出力_Click()

Dim WB1 As Workbook
Dim WS1 As Worksheet
Dim D8 As String

On Error GoTo ProcessError

MsgBox "本日の体力測定結果を印刷します"

'ファイルopen
Workbooks.Open filename:="C:\体力測定\TEST.xlsx"
Set WB1 = Workbooks("TEST.xlsx")
Set WS1 = WB1.Worksheets(1)




WS1.Cells(3, 1).Value = Me.部課CD.Value
WS1.Cells(3, 2).Value = Me.職場.Value
WS1.Cells(3, 3).Value = Me.氏名コード.Value
WS1.Cells(3, 4).Value = Me.氏名.Value
WS1.Cells(3, 5).Value = Me.身長.Value


'ファイル保存

D8 = "C:\体力測定\" & "_" & Format(CStr(Now), "yyyymmddhhmmss") & ".xlsx"

WS1.Activate
Activesheet.PrintOut


ActiveWorkbook.SaveAs D8
ActiveWorkbook.Close SaveChanges:=False


Exit Sub


ProcessError:
MsgBox "エラー番号:" & Err.Number & vbCrLf & _
"エラーの種類:" & Err.Description, vbExclamation
Exit Sub

End Sub

A 回答 (2件)

Excel自身のセットが不明ですが、大体こんな感じではないかと



Private Sub Excelへ出力_Click()

Dim WB1 As Workbook
Dim WS1 As Worksheet
Dim D8 As String
dim RS as dao.recordset '参照設定の変更が必要かもしれません

On Error GoTo ProcessError

MsgBox "本日の体力測定結果を印刷します"

'ファイルopen
Workbooks.Open filename:="C:\体力測定\TEST.xlsx"
set rs=me.recordsetclone 'このフォームのレコードセット

Set WB1 = Workbooks("TEST.xlsx")
Set WS1 = WB1.Worksheets(1)

do until rs.eof

WS1.Cells(3, 1).Value = rs!部課CD
WS1.Cells(3, 2).Value = rs!職場
WS1.Cells(3, 3).Value = rs!氏名コード
WS1.Cells(3, 4).Value = rs!氏名
WS1.Cells(3, 5).Value = rs!身長
'未入力を考慮してnz(rs!部課CD,0) とか nz(rs!部課CD,"") などがベターかも

'ファイル保存

D8 = "C:\体力測定\" & "_" & Format(CStr(Now), "yyyymmddhhmmss") & ".xlsx"

'WS1.Activate
ws1.PrintOut
wb1.SaveAs D8
'ActiveWorkbook.Close SaveChanges:=False

rs.movenext
loop

wb1.Close SaveChanges:=False
rs.close:set rs=nothing
set ws1=nothing:set wb1=nothing
'Excel自身を閉じる処理が必要なのですが
'どうやってセットしたかが不明なので割愛
Exit Sub

ProcessError:
MsgBox "エラー番号:" & Err.Number & vbCrLf & _
"エラーの種類:" & Err.Description & vbCrLf & _
"エラーの発生したレコード" & rs.currentrecord, vbExclamation
rs.close:set rs=nothing
'Exit Sub

End Sub
    • good
    • 0

Me.~.Value ってフォームに配置したコントロール(書き込み最新版?)の値ですよね。


それしか指示してませんのでそれしか実行もされないでしょう。

具体的に(データがダミーでも)どのような仕組みで作られているかが、回答者に不明なので回答も困難なのではと思います。
Excel側に新規で追加したデータのみ書き込むのか、既存のデータを編集したらその内容もExcelにリンクさせるのか等でも変わるのでは?

Excelに出力するよりAccessファイルからデータを引っ張ってきて処理させるように、Excel側にその機能を追加するとかじゃダメなのでしょうか?

ちなみに私はAccessほぼ皆無の初心者レベルなので間違った解釈であればスル~してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!