teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2020/04/29 14:53

投稿

mattuwan
mattuwan

スコア2167

answer CHANGED
@@ -156,4 +156,10 @@
156
156
 
157
157
  この辺で一通り網羅していると思いますが、
158
158
  ExcelVBAの情報は多数ありますので検索してみて、
159
- 上手くいかなければ、別途質問してください。
159
+ 上手くいかなければ、別途質問してください。
160
+
161
+ >>Setファイルのプルパス一覧
162
+ プルパスってなんだ^^;
163
+ 誤字です。
164
+ 愛嬌ということで訂正しません^^;;
165
+ 誰かに見られて恥ずかしければそちらで直してください。

3

追記

2020/04/29 14:53

投稿

mattuwan
mattuwan

スコア2167

answer CHANGED
@@ -49,4 +49,111 @@
49
49
 
50
50
  その後は文字列の加工等いろいろなことを覚えてください。
51
51
  シート上に一覧ができたら、それをリストボックスに転記してみてください。
52
- (シート上にリストを作らなくてもいいけど、そうなると配列変数とかも勉強する必要が出てきます)
52
+ (シート上にリストを作らなくてもいいけど、そうなると配列変数とかも勉強する必要が出てきます)
53
+
54
+ ---
55
+ 追記
56
+
57
+ > Excelファイルの一覧を作ることはできたのですが、
58
+ > その後が全くできません。
59
+ > せっかく詳しく教えていただいたのですが、
60
+ > これ以上できる気がしません。
61
+ > 申し訳ありません。
62
+
63
+ 一朝一夕で出来るものではありません。
64
+ 気長に根気強く勉強していくしか道はありません。
65
+ やりたいことと並行して、基礎をある程度やっておかないと、
66
+ メンテナンスまではこちらは面倒見きれません。
67
+ 1つのプログラミング言語を覚えるのに、
68
+ 最低200時間はかかると言われているようです。
69
+
70
+ 以下をユーザーフォームのモジュールに書きます。
71
+
72
+ ```ExcelVBA
73
+ Option Explicit
74
+
75
+ Private Sub UserForm_Initialize()
76
+ Set一覧取得
77
+ With Me.ListBox1
78
+ .List = ThisWorkbook.Worksheets(1).Range("B1").CurrentRegion.Value
79
+ .ColumnWidths = "100;0;0;0"
80
+ End With
81
+ End Sub
82
+
83
+ Sub Set一覧取得()
84
+ With ThisWorkbook.Worksheets(1).Cells(1)
85
+ 'シートの初期化
86
+ .CurrentRegion.ClearContents
87
+
88
+ 'ファイルのフルパス一覧の取得
89
+ Setファイルのプルパス一覧 .Cells
90
+
91
+ 'シート名の一覧取得
92
+ Setシートの一覧 .CurrentRegion
93
+
94
+ '作業列のクリア
95
+ .EntireColumn.ClearContents
96
+ End With
97
+ End Sub
98
+
99
+ Sub Setファイルのプルパス一覧(ByRef c As Range)
100
+ Const csPath As String = "C:\Users\Public\test\"
101
+ Dim ixRow As Long
102
+ Dim buf As String
103
+
104
+ buf = Dir(csPath & "*.xlsx")
105
+ Do Until Len(buf) = 0
106
+ ixRow = ixRow + 1
107
+ c(ixRow, "A").Value = csPath & buf
108
+ buf = Dir()
109
+ Loop
110
+ End Sub
111
+
112
+ Sub Setシートの一覧(ByRef rng As Range)
113
+ Dim c As Range
114
+ Dim wbk As Workbook
115
+ Dim wsh As Worksheet
116
+ Dim ixRow As Long
117
+
118
+ For Each c In rng
119
+ Set wbk = Workbooks.Open(c.Value)
120
+ For Each wsh In wbk.Worksheets
121
+ ixRow = ixRow + 1
122
+ With rng(ixRow, "B")
123
+ .Offset(, 1).Value = wbk.FullName
124
+ .Offset(, 2).Value = wsh.Name
125
+ .Offset(, 3).Value = wsh.UsedRange.Address(False, False, xlA1, True)
126
+ .Value = Get表示名(.Offset(, 3).Value)
127
+ End With
128
+ Next
129
+ wbk.Close False
130
+ Next
131
+ End Sub
132
+
133
+ Function Get表示名(ByVal sName As String) As String
134
+ Dim i As Long
135
+
136
+ i = InStr(sName, "'")
137
+ If i > 0 Then
138
+ Get表示名 = Left(sName, i - 1)
139
+ End If
140
+ End Function
141
+ ```
142
+
143
+ 動きを目視で確認しやすいように、逐一シート上に展開してます。
144
+ 実行して「出来た!」で終わらず、
145
+ ヘルプなりWebなりで調べて一行一行を理解されることを望みます。
146
+ ↓を参考にしてステップ実行をしながら、シート上の結果と、
147
+ コードを見比べてみてください。
148
+ [プロパティ、メソッドの探り方 マクロ記録とF1のHelpを使う](http://www.ken3.org/vba/excel-help.html)
149
+
150
+ その他参考サイト
151
+ [Excel(エクセル)VBA入門:目次](http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/index.html)
152
+ [「VBA基本」のメニュー](http://www.asahi-net.or.jp/~ef2o-inue/menu/menu04.html)
153
+ [Excel VBAコンテンツ](http://officetanaka.net/excel/vba/)
154
+ [エクセルマクロ・Excel VBAの使い方](https://www.relief.jp/Excel-VBA/)
155
+ [初めてのVBAマクロ "Hello World!"](http://home.att.ne.jp/zeta/gen/excel/c03p01.htm)
156
+
157
+ この辺で一通り網羅していると思いますが、
158
+ ExcelVBAの情報は多数ありますので検索してみて、
159
+ 上手くいかなければ、別途質問してください。

2

修正

2020/04/29 14:47

投稿

mattuwan
mattuwan

スコア2167

answer CHANGED
@@ -45,7 +45,7 @@
45
45
 
46
46
  いずれもまだ出来てないという事なら、
47
47
  マクロのあるブックと同じフォルダーから、
48
- フルパスの一覧をシート上に作ってみるところから始めるといいと思います。
48
+ Excelァイのフルパスの一覧をシート上に作ってみるところから始めるといいと思います。
49
49
 
50
50
  その後は文字列の加工等いろいろなことを覚えてください。
51
51
  シート上に一覧ができたら、それをリストボックスに転記してみてください。

1

追記

2020/04/29 10:37

投稿

mattuwan
mattuwan

スコア2167

answer CHANGED
@@ -31,4 +31,22 @@
31
31
  7)取得したリストをリストボックスに入れる
32
32
 
33
33
  というような流れになるかと(漏れがあるかも?)思います。
34
- これらを一つづ解決していく必要があります。
34
+ これらを一つづ解決していく必要があります。
35
+
36
+ ----
37
+ そして、出来たリストボックスを選択することで、
38
+ 1)フルパスとシート名などをを取得し、
39
+ 2)指定のファイルを開く
40
+ 3)指定のシートのセルをコピーする
41
+ 4)ファイルを閉じる
42
+ (複数のブックにまたがる場合は、上記を繰り返す。)
43
+
44
+ というプログラムを起動したらいいと思います。
45
+
46
+ いずれもまだ出来てないという事なら、
47
+ マクロのあるブックと同じフォルダーから、
48
+ フルパスの一覧をシート上に作ってみるところから始めるといいと思います。
49
+
50
+ その後は文字列の加工等いろいろなことを覚えてください。
51
+ シート上に一覧ができたら、それをリストボックスに転記してみてください。
52
+ (シート上にリストを作らなくてもいいけど、そうなると配列変数とかも勉強する必要が出てきます)