質問編集履歴

2

修正

2021/01/11 06:32

投稿

NGK
NGK

スコア1

test CHANGED
File without changes
test CHANGED
@@ -86,6 +86,8 @@
86
86
 
87
87
  標準モジュールに書いた以下のコードを、フォームのクリック時イベントで複数回よびだしてExcelブックを開いています。
88
88
 
89
+ ```ここに言語を入力
90
+
89
91
 
90
92
 
91
93
  Function ExcelData(frm As Form)
@@ -199,3 +201,5 @@
199
201
  Resume Exit_cmdExcel_Click
200
202
 
201
203
  End Function
204
+
205
+ ```

1

追加

2021/01/11 06:32

投稿

NGK
NGK

スコア1

test CHANGED
File without changes
test CHANGED
@@ -77,3 +77,125 @@
77
77
  End Sub
78
78
 
79
79
  ```
80
+
81
+
82
+
83
+ 追記:2021/01/11 15:30
84
+
85
+ 事前にエクセルを開いているコードはこちらです。
86
+
87
+ 標準モジュールに書いた以下のコードを、フォームのクリック時イベントで複数回よびだしてExcelブックを開いています。
88
+
89
+
90
+
91
+ Function ExcelData(frm As Form)
92
+
93
+ On Error GoTo Err_cmdExcel_Click
94
+
95
+ 'DAOで抽出結果のクローンを作成
96
+
97
+ Dim xlsx As Object 'Excel.Applicationを代入するオブジェクト変数
98
+
99
+ Dim wkb As Object 'Excel.Wookbookを代入するオブジェクト変数
100
+
101
+ Dim rst As DAO.Recordset '現在のレコードセットを入れる変数
102
+
103
+ Dim idx As Long 'フィールド数変数
104
+
105
+ Dim j As Long ' 最終行取得用
106
+
107
+ Const xlUp As Integer = -4162
108
+
109
+
110
+
111
+ Set rst = Nothing 'データリストの初期化
112
+
113
+ Set rst = frm.RecordsetClone 'フォームのレコードセットのクローンを代入
114
+
115
+
116
+
117
+ 'レコードが存在しない場合、処理を中止
118
+
119
+ If rst.BOF = True And rst.EOF = True Then
120
+
121
+ MsgBox "出力出来るデータがありません。", vbOKOnly + vbExclamation, "出力不可"
122
+
123
+ 'レコードセットを閉じる
124
+
125
+ rst.Close: Set rst = Nothing
126
+
127
+ Exit Function
128
+
129
+ End If
130
+
131
+
132
+
133
+ 'レコードが存在する場合、Excelに出力
134
+
135
+ 'レコードセットの最初のデータにカーソルを移動
136
+
137
+ rst.MoveFirst
138
+
139
+
140
+
141
+ 'Excelファイルを内部的に作成
142
+
143
+ Set xlsx = CreateObject("Excel.Application")
144
+
145
+ '作成されたExcelファイルにワークブックを追加
146
+
147
+ Set wkb = xlsx.Workbooks.Add()
148
+
149
+
150
+
151
+ '追加されたワークブックに、レコードセットのデータをコピー
152
+
153
+ With wkb.Worksheets(1)
154
+
155
+
156
+
157
+ For idx = 1 To rst.Fields.Count
158
+
159
+ .cells(1, idx).Value = rst.Fields(idx - 1).Name
160
+
161
+ Next
162
+
163
+
164
+
165
+ .Range("A2").CopyFromRecordset Data:=rst
166
+
167
+
168
+
169
+ 'レコードセットを閉じる
170
+
171
+ rst.Close: Set rst = Nothing
172
+
173
+ 'Excelデータを表示
174
+
175
+ xlsx.Visible = True
176
+
177
+ xlsx.UserControl = True
178
+
179
+ 'メモリに展開されたExcel用オブジェクト変数を開放
180
+
181
+ Set wkb = Nothing
182
+
183
+ Set xlsx = Nothing
184
+
185
+
186
+
187
+ Exit_cmdExcel_Click:
188
+
189
+ Exit Function
190
+
191
+
192
+
193
+ Err_cmdExcel_Click:
194
+
195
+ MsgBox "エラーのため、Excelへ出力できません。" & vbCrLf & "一旦フォームを閉じ、再度トライしてください。" & vbCrLf & Err.Number & Err.Description, _
196
+
197
+ vbOKOnly + vbCritical, "Excel出力不可!"
198
+
199
+ Resume Exit_cmdExcel_Click
200
+
201
+ End Function