回答編集履歴

2

修正

2018/04/17 06:23

投稿

ttyp03
ttyp03

スコア16998

test CHANGED
@@ -124,6 +124,10 @@
124
124
 
125
125
 
126
126
 
127
+ Set wb = Workbooks.Open(OpenFileName)
128
+
129
+
130
+
127
131
  Dim nameFile As String
128
132
 
129
133
  Dim Filenum As Long
@@ -156,10 +160,6 @@
156
160
 
157
161
 
158
162
 
159
- Set wb = Workbooks.Open(OpenFileName)
160
-
161
-
162
-
163
163
  ' ブックの全シートを 1 つずつループして処理する
164
164
 
165
165
  For Each ws In wb.Worksheets

1

修正案

2018/04/17 06:23

投稿

ttyp03
ttyp03

スコア16998

test CHANGED
@@ -95,3 +95,173 @@
95
95
  ```
96
96
 
97
97
  で良いと思います。
98
+
99
+
100
+
101
+ ---
102
+
103
+ 修正案です。
104
+
105
+ ```VBA
106
+
107
+ Sub Run()
108
+
109
+ Dim OpenFileName As String
110
+
111
+ Dim wb As Workbook
112
+
113
+
114
+
115
+ 'ファイルを開くダイアログ
116
+
117
+ OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")
118
+
119
+ If OpenFileName = "False" Then
120
+
121
+ Exit Sub
122
+
123
+ End If
124
+
125
+
126
+
127
+ Dim nameFile As String
128
+
129
+ Dim Filenum As Long
130
+
131
+ Dim msg As String
132
+
133
+
134
+
135
+ nameFile = Format(Now(), "yyyymmdd") & ".csv"
136
+
137
+ nameFile = ActiveWorkbook.Path & "\" & nameFile
138
+
139
+
140
+
141
+ '同じファイル名があるとき警告
142
+
143
+ If Dir(nameFile) <> "" Then
144
+
145
+ msg = "同じ名前のファイルが存在します。上書きしますか?"
146
+
147
+ If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub
148
+
149
+ End If
150
+
151
+
152
+
153
+ Filenum = FreeFile()
154
+
155
+ Open nameFile For Append As #Filenum
156
+
157
+
158
+
159
+ Set wb = Workbooks.Open(OpenFileName)
160
+
161
+
162
+
163
+ ' ブックの全シートを 1 つずつループして処理する
164
+
165
+ For Each ws In wb.Worksheets
166
+
167
+
168
+
169
+ Dim maxCol, maxRow As Integer
170
+
171
+ maxCol = ws.UsedRange.Columns(ws.UsedRange.Columns.Count).Column
172
+
173
+ maxRow = ws.UsedRange.Rows(ws.UsedRange.Rows.Count).Row
174
+
175
+ For i = 10 To maxRow Step 4
176
+
177
+
178
+
179
+ '----T----
180
+
181
+ '改行とスペースを削除
182
+
183
+ Dim Tcode As String
184
+
185
+ Tcode = Replace(ws.Cells(i, 1).Value, vbCrLf, "")
186
+
187
+ '----K----
188
+
189
+ Dim Kcode As String
190
+
191
+ Kcode = ws.Cells(i, 3).Value
192
+
193
+
194
+
195
+ '----J----
196
+
197
+ Dim Jcode As String
198
+
199
+ Jcode = ws.Cells(i + 2, 2).Value
200
+
201
+
202
+
203
+ '----ナンバー----
204
+
205
+ Dim Number String
206
+
207
+
208
+
209
+ If maxCol = 20 Then
210
+
211
+
212
+
213
+ '----ナンバー----
214
+
215
+ Number = ws.Cells(i, 19).Value
216
+
217
+
218
+
219
+ ElseIf maxCol = 30 Then
220
+
221
+
222
+
223
+ '----ナンバー----
224
+
225
+ Number = ws.Cells(i, 19).Value
226
+
227
+
228
+
229
+ Else
230
+
231
+
232
+
233
+ '----ナンバー----
234
+
235
+ Number= ws.Cells(i, 20).Value
236
+
237
+
238
+
239
+ End If
240
+
241
+
242
+
243
+ Print #Filenum, Tcode + "," + Kcode + "," + Jcode + "," + Number
244
+
245
+ Next
246
+
247
+
248
+
249
+ Next
250
+
251
+
252
+
253
+ Close #Filenum
254
+
255
+ wb.Close
256
+
257
+
258
+
259
+ MsgBox "処理が完了しました"
260
+
261
+
262
+
263
+ End Sub
264
+
265
+
266
+
267
+ ```