質問編集履歴

3

ソースコード全文記載

2020/05/04 16:47

投稿

2134
2134

スコア3

test CHANGED
File without changes
test CHANGED
@@ -32,9 +32,9 @@
32
32
 
33
33
  ```
34
34
 
35
- 転記元ファイルのファイル名は「◯◯◯_aaa.xlsx」となっており(◯は固定値)
35
+ **転記元ファイルのファイル名は「◯◯◯_aaa.xlsx」となっており(◯は固定値)
36
-
36
+
37
- aaaの部分を一覧のD列に転記しているため、これをキーにソースコードを作成したのですが、うまくいきません。
37
+ aaaの部分を一覧のD列に転記しているため、これをキーにソースコードを作成したのですが、うまくいきません。**
38
38
 
39
39
 
40
40
 
@@ -50,11 +50,55 @@
50
50
 
51
51
 
52
52
 
53
+ Option Explicit
54
+
55
+
56
+
57
+ Dim mFSO As FileSystemObject
58
+
59
+
60
+
61
+ Sub 一覧表更新()
62
+
63
+ Dim rngList As Range
64
+
65
+ Dim vrtSubjectList As Variant
66
+
67
+
68
+
53
- (これより前にもソースコードの記載はありますが、割愛します)
69
+ Set mFSO = New FileSystemObject
70
+
71
+
72
+
54
-
73
+ '一覧表のセル範囲取得
74
+
55
-
75
+ Set rngList = ThisWorkbook.Worksheets("一覧").Range("A12").CurrentRegion
76
+
77
+
78
+
56
-
79
+ '空欄クリア
80
+
81
+ InitializeTable rngList
82
+
83
+
84
+
85
+ '一覧にないファイルのリストを取得
86
+
87
+ vrtSubjectList = Get_UpdatedSubjectList(rngList)
88
+
89
+
90
+
91
+ 'データの転記
92
+
93
+ SetUpdated vrtSubjectList, rngList
94
+
95
+
96
+
97
+ End Sub
98
+
99
+
100
+
57
- '一覧のAQ列が空欄の行をクリア
101
+ '一覧表中のAQ列が空欄の行をクリア
58
102
 
59
103
  Private Sub InitializeTable(ByRef rngList As Range)
60
104
 
@@ -90,6 +134,8 @@
90
134
 
91
135
 
92
136
 
137
+ '一覧表にないファイルのフルパスのリストを取得
138
+
93
139
  Private Function Get_UpdatedSubjectList(ByRef rngList As Range) As Variant
94
140
 
95
141
  Dim WSF As WorksheetFunction
@@ -160,7 +206,67 @@
160
206
 
161
207
 
162
208
 
209
+ 'データの転記
210
+
211
+ Private Sub SetUpdated(ByVal vrtSubjectList As Variant, ByRef rngList As Range)
212
+
213
+ Dim c As Range
214
+
215
+ Dim f As Variant
216
+
217
+ Dim strContent(1 To 66) As String
218
+
219
+ Dim ix As Long
220
+
221
+ Dim vrtNewList() As Variant
222
+
223
+ ReDim vrtNewList(LBound(vrtSubjectList) To UBound(vrtSubjectList), 1 To 66)
224
+
225
+
226
+
227
+ For Each f In vrtSubjectList
228
+
229
+ ix = ix + 1
230
+
163
- (ここからデータの転記処理を記載していますが、データ転記自体はできているため、割愛します)
231
+ With Workbooks.Open(f, UpdateLinks:=False, ReadOnly:=True)
232
+
233
+ vrtNewList(ix, 1) = .Worksheets("単票").Cells(10, 33).Value
234
+
235
+
236
+
237
+   __(※こちらは文字数の制限により、省略致します※)__
238
+
239
+
240
+
241
+ vrtNewList(ix, 66) = .Worksheets("単票").Cells(2, 46).Value
242
+
243
+
244
+
245
+ .Close False
246
+
247
+ End With
248
+
249
+ Next
250
+
251
+
252
+
253
+ With rngList
254
+
255
+ Set rngList = .Cells(.Rows.Count, 2).Resize(UBound(vrtNewList, 1), UBound(vrtNewList, 2))
256
+
257
+ End With
258
+
259
+ rngList.Value = vrtNewList
260
+
261
+
262
+
263
+ End Sub
264
+
265
+
266
+
267
+
268
+
269
+
164
270
 
165
271
 
166
272
 

2

ソースコードを追加

2020/05/04 16:47

投稿

2134
2134

スコア3

test CHANGED
File without changes
test CHANGED
@@ -51,6 +51,42 @@
51
51
 
52
52
 
53
53
  (これより前にもソースコードの記載はありますが、割愛します)
54
+
55
+
56
+
57
+ '一覧のAQ列が空欄の行をクリア
58
+
59
+ Private Sub InitializeTable(ByRef rngList As Range)
60
+
61
+ Dim rngBlank As Range
62
+
63
+
64
+
65
+ With rngList
66
+
67
+ If rngList.Rows.Count > 1 Then
68
+
69
+ On Error Resume Next
70
+
71
+ Set rngBlank = rngList.Columns(43).SpecialCells(xlCellTypeBlanks)
72
+
73
+ On Error GoTo 0
74
+
75
+ If rngBlank Is Nothing Then Exit Sub
76
+
77
+
78
+
79
+ rngBlank.EntireRow.ClearContents
80
+
81
+ rngList.Sort Key1:=rngList(4), Order1:=xlAscending, Header:=xlYes
82
+
83
+ End If
84
+
85
+ Set rngList = rngList.CurrentRegion
86
+
87
+ End With
88
+
89
+ End Sub
54
90
 
55
91
 
56
92
 

1

誤字脱字の修正

2020/04/28 10:07

投稿

2134
2134

スコア3

test CHANGED
File without changes
test CHANGED
File without changes