回答編集履歴
2
修正
answer
CHANGED
@@ -61,6 +61,8 @@
|
|
61
61
|
Exit Sub
|
62
62
|
End If
|
63
63
|
|
64
|
+
Set wb = Workbooks.Open(OpenFileName)
|
65
|
+
|
64
66
|
Dim nameFile As String
|
65
67
|
Dim Filenum As Long
|
66
68
|
Dim msg As String
|
@@ -77,8 +79,6 @@
|
|
77
79
|
Filenum = FreeFile()
|
78
80
|
Open nameFile For Append As #Filenum
|
79
81
|
|
80
|
-
Set wb = Workbooks.Open(OpenFileName)
|
81
|
-
|
82
82
|
' ブックの全シートを 1 つずつループして処理する
|
83
83
|
For Each ws In wb.Worksheets
|
84
84
|
|
1
修正案
answer
CHANGED
@@ -46,4 +46,89 @@
|
|
46
46
|
```VBA
|
47
47
|
wb.Close
|
48
48
|
```
|
49
|
-
で良いと思います。
|
49
|
+
で良いと思います。
|
50
|
+
|
51
|
+
---
|
52
|
+
修正案です。
|
53
|
+
```VBA
|
54
|
+
Sub Run()
|
55
|
+
Dim OpenFileName As String
|
56
|
+
Dim wb As Workbook
|
57
|
+
|
58
|
+
'ファイルを開くダイアログ
|
59
|
+
OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")
|
60
|
+
If OpenFileName = "False" Then
|
61
|
+
Exit Sub
|
62
|
+
End If
|
63
|
+
|
64
|
+
Dim nameFile As String
|
65
|
+
Dim Filenum As Long
|
66
|
+
Dim msg As String
|
67
|
+
|
68
|
+
nameFile = Format(Now(), "yyyymmdd") & ".csv"
|
69
|
+
nameFile = ActiveWorkbook.Path & "\" & nameFile
|
70
|
+
|
71
|
+
'同じファイル名があるとき警告
|
72
|
+
If Dir(nameFile) <> "" Then
|
73
|
+
msg = "同じ名前のファイルが存在します。上書きしますか?"
|
74
|
+
If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub
|
75
|
+
End If
|
76
|
+
|
77
|
+
Filenum = FreeFile()
|
78
|
+
Open nameFile For Append As #Filenum
|
79
|
+
|
80
|
+
Set wb = Workbooks.Open(OpenFileName)
|
81
|
+
|
82
|
+
' ブックの全シートを 1 つずつループして処理する
|
83
|
+
For Each ws In wb.Worksheets
|
84
|
+
|
85
|
+
Dim maxCol, maxRow As Integer
|
86
|
+
maxCol = ws.UsedRange.Columns(ws.UsedRange.Columns.Count).Column
|
87
|
+
maxRow = ws.UsedRange.Rows(ws.UsedRange.Rows.Count).Row
|
88
|
+
For i = 10 To maxRow Step 4
|
89
|
+
|
90
|
+
'----T----
|
91
|
+
'改行とスペースを削除
|
92
|
+
Dim Tcode As String
|
93
|
+
Tcode = Replace(ws.Cells(i, 1).Value, vbCrLf, "")
|
94
|
+
'----K----
|
95
|
+
Dim Kcode As String
|
96
|
+
Kcode = ws.Cells(i, 3).Value
|
97
|
+
|
98
|
+
'----J----
|
99
|
+
Dim Jcode As String
|
100
|
+
Jcode = ws.Cells(i + 2, 2).Value
|
101
|
+
|
102
|
+
'----ナンバー----
|
103
|
+
Dim Number String
|
104
|
+
|
105
|
+
If maxCol = 20 Then
|
106
|
+
|
107
|
+
'----ナンバー----
|
108
|
+
Number = ws.Cells(i, 19).Value
|
109
|
+
|
110
|
+
ElseIf maxCol = 30 Then
|
111
|
+
|
112
|
+
'----ナンバー----
|
113
|
+
Number = ws.Cells(i, 19).Value
|
114
|
+
|
115
|
+
Else
|
116
|
+
|
117
|
+
'----ナンバー----
|
118
|
+
Number= ws.Cells(i, 20).Value
|
119
|
+
|
120
|
+
End If
|
121
|
+
|
122
|
+
Print #Filenum, Tcode + "," + Kcode + "," + Jcode + "," + Number
|
123
|
+
Next
|
124
|
+
|
125
|
+
Next
|
126
|
+
|
127
|
+
Close #Filenum
|
128
|
+
wb.Close
|
129
|
+
|
130
|
+
MsgBox "処理が完了しました"
|
131
|
+
|
132
|
+
End Sub
|
133
|
+
|
134
|
+
```
|