回答編集履歴

4

追記

2020/04/29 14:53

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -315,3 +315,15 @@
315
315
  ExcelVBAの情報は多数ありますので検索してみて、
316
316
 
317
317
  上手くいかなければ、別途質問してください。
318
+
319
+
320
+
321
+ >>Setファイルのプルパス一覧
322
+
323
+ プルパスってなんだ^^;
324
+
325
+ 誤字です。
326
+
327
+ 愛嬌ということで訂正しません^^;;
328
+
329
+ 誰かに見られて恥ずかしければそちらで直してください。

3

追記

2020/04/29 14:53

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -101,3 +101,217 @@
101
101
  シート上に一覧ができたら、それをリストボックスに転記してみてください。
102
102
 
103
103
  (シート上にリストを作らなくてもいいけど、そうなると配列変数とかも勉強する必要が出てきます)
104
+
105
+
106
+
107
+ ---
108
+
109
+ 追記
110
+
111
+
112
+
113
+ > Excelファイルの一覧を作ることはできたのですが、
114
+
115
+ > その後が全くできません。
116
+
117
+ > せっかく詳しく教えていただいたのですが、
118
+
119
+ > これ以上できる気がしません。
120
+
121
+ > 申し訳ありません。
122
+
123
+
124
+
125
+ 一朝一夕で出来るものではありません。
126
+
127
+ 気長に根気強く勉強していくしか道はありません。
128
+
129
+ やりたいことと並行して、基礎をある程度やっておかないと、
130
+
131
+ メンテナンスまではこちらは面倒見きれません。
132
+
133
+ 1つのプログラミング言語を覚えるのに、
134
+
135
+ 最低200時間はかかると言われているようです。
136
+
137
+
138
+
139
+ 以下をユーザーフォームのモジュールに書きます。
140
+
141
+
142
+
143
+ ```ExcelVBA
144
+
145
+ Option Explicit
146
+
147
+
148
+
149
+ Private Sub UserForm_Initialize()
150
+
151
+ Set一覧取得
152
+
153
+ With Me.ListBox1
154
+
155
+ .List = ThisWorkbook.Worksheets(1).Range("B1").CurrentRegion.Value
156
+
157
+ .ColumnWidths = "100;0;0;0"
158
+
159
+ End With
160
+
161
+ End Sub
162
+
163
+
164
+
165
+ Sub Set一覧取得()
166
+
167
+ With ThisWorkbook.Worksheets(1).Cells(1)
168
+
169
+ 'シートの初期化
170
+
171
+ .CurrentRegion.ClearContents
172
+
173
+
174
+
175
+ 'ファイルのフルパス一覧の取得
176
+
177
+ Setファイルのプルパス一覧 .Cells
178
+
179
+
180
+
181
+ 'シート名の一覧取得
182
+
183
+ Setシートの一覧 .CurrentRegion
184
+
185
+
186
+
187
+ '作業列のクリア
188
+
189
+ .EntireColumn.ClearContents
190
+
191
+ End With
192
+
193
+ End Sub
194
+
195
+
196
+
197
+ Sub Setファイルのプルパス一覧(ByRef c As Range)
198
+
199
+ Const csPath As String = "C:\Users\Public\test\"
200
+
201
+ Dim ixRow As Long
202
+
203
+ Dim buf As String
204
+
205
+
206
+
207
+ buf = Dir(csPath & "*.xlsx")
208
+
209
+ Do Until Len(buf) = 0
210
+
211
+ ixRow = ixRow + 1
212
+
213
+ c(ixRow, "A").Value = csPath & buf
214
+
215
+ buf = Dir()
216
+
217
+ Loop
218
+
219
+ End Sub
220
+
221
+
222
+
223
+ Sub Setシートの一覧(ByRef rng As Range)
224
+
225
+ Dim c As Range
226
+
227
+ Dim wbk As Workbook
228
+
229
+ Dim wsh As Worksheet
230
+
231
+ Dim ixRow As Long
232
+
233
+
234
+
235
+ For Each c In rng
236
+
237
+ Set wbk = Workbooks.Open(c.Value)
238
+
239
+ For Each wsh In wbk.Worksheets
240
+
241
+ ixRow = ixRow + 1
242
+
243
+ With rng(ixRow, "B")
244
+
245
+ .Offset(, 1).Value = wbk.FullName
246
+
247
+ .Offset(, 2).Value = wsh.Name
248
+
249
+ .Offset(, 3).Value = wsh.UsedRange.Address(False, False, xlA1, True)
250
+
251
+ .Value = Get表示名(.Offset(, 3).Value)
252
+
253
+ End With
254
+
255
+ Next
256
+
257
+ wbk.Close False
258
+
259
+ Next
260
+
261
+ End Sub
262
+
263
+
264
+
265
+ Function Get表示名(ByVal sName As String) As String
266
+
267
+ Dim i As Long
268
+
269
+
270
+
271
+ i = InStr(sName, "'")
272
+
273
+ If i > 0 Then
274
+
275
+ Get表示名 = Left(sName, i - 1)
276
+
277
+ End If
278
+
279
+ End Function
280
+
281
+ ```
282
+
283
+
284
+
285
+ 動きを目視で確認しやすいように、逐一シート上に展開してます。
286
+
287
+ 実行して「出来た!」で終わらず、
288
+
289
+ ヘルプなりWebなりで調べて一行一行を理解されることを望みます。
290
+
291
+ ↓を参考にしてステップ実行をしながら、シート上の結果と、
292
+
293
+ コードを見比べてみてください。
294
+
295
+ [プロパティ、メソッドの探り方 マクロ記録とF1のHelpを使う](http://www.ken3.org/vba/excel-help.html)
296
+
297
+
298
+
299
+ その他参考サイト
300
+
301
+ [Excel(エクセル)VBA入門:目次](http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/index.html)
302
+
303
+ [「VBA基本」のメニュー](http://www.asahi-net.or.jp/~ef2o-inue/menu/menu04.html)
304
+
305
+ [Excel VBAコンテンツ](http://officetanaka.net/excel/vba/)
306
+
307
+ [エクセルマクロ・Excel VBAの使い方](https://www.relief.jp/Excel-VBA/)
308
+
309
+ [初めてのVBAマクロ "Hello World!"](http://home.att.ne.jp/zeta/gen/excel/c03p01.htm)
310
+
311
+
312
+
313
+ この辺で一通り網羅していると思いますが、
314
+
315
+ ExcelVBAの情報は多数ありますので検索してみて、
316
+
317
+ 上手くいかなければ、別途質問してください。

2

修正

2020/04/29 14:47

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -92,7 +92,7 @@
92
92
 
93
93
  マクロのあるブックと同じフォルダーから、
94
94
 
95
- フルパスの一覧をシート上に作ってみるところから始めるといいと思います。
95
+ Excelァイのフルパスの一覧をシート上に作ってみるところから始めるといいと思います。
96
96
 
97
97
 
98
98
 

1

追記

2020/04/29 10:37

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -65,3 +65,39 @@
65
65
  というような流れになるかと(漏れがあるかも?)思います。
66
66
 
67
67
  これらを一つづ解決していく必要があります。
68
+
69
+
70
+
71
+ ----
72
+
73
+ そして、出来たリストボックスを選択することで、
74
+
75
+ 1)フルパスとシート名などをを取得し、
76
+
77
+ 2)指定のファイルを開く
78
+
79
+ 3)指定のシートのセルをコピーする
80
+
81
+ 4)ファイルを閉じる
82
+
83
+ (複数のブックにまたがる場合は、上記を繰り返す。)
84
+
85
+
86
+
87
+ というプログラムを起動したらいいと思います。
88
+
89
+
90
+
91
+ いずれもまだ出来てないという事なら、
92
+
93
+ マクロのあるブックと同じフォルダーから、
94
+
95
+ フルパスの一覧をシート上に作ってみるところから始めるといいと思います。
96
+
97
+
98
+
99
+ その後は文字列の加工等いろいろなことを覚えてください。
100
+
101
+ シート上に一覧ができたら、それをリストボックスに転記してみてください。
102
+
103
+ (シート上にリストを作らなくてもいいけど、そうなると配列変数とかも勉強する必要が出てきます)