23歳OLです。
会社でマクロを組むことになりましたが、
初心者過ぎて全然よくわかりません。
お忙しいところ大変恐縮ですが、教えていただけないでしょうか。
※やりたいことがわかりづらいと思うのでもう少し詳しく書きます。
▼作っているもの
・複数のデータを読み込み
・その中身を一枚のシートにまとめ
・さらに読み込んだファイルの名前をシートに書き出してくれるツール
▼困っている内容
・複数のファイルは読み込むことができた。
しかし、ファイルの名前をシートに書き出してくる時点で、
ファイルの「名前」をシートに書き出すことができず、
代わりにファイルの「中身」を書き出してしまう。
→ファイルの名前をきちんととってこれるようにしたい。
======================================
▼現在書いているコード
Sub ReadMultiFiles()
' [[ 変数定義 ]]
Dim varFileName As Variant
Dim VWorkSheet As Worksheet
Dim NewWorkSheet As Worksheet
Dim SheetName As String
Dim Filename As Variant
Dim c As Long
Dim a As Variant
Dim dates As Worksheet
Set dates = Worksheets("データ")
' [[ ファイルパスからファイル名を取得 ]]
SheetName = "chushutu"
' [[ ファイル名で新しいシート作成 ]]
Set NewWorkSheet = CreateWorkSheet(SheetName)
' [[ 複数ファイルパス名を取得 ]]
varFileName = Application.GetOpenFilename(FileFilter:="(.),.", _
Title:="ファイルの選択", MultiSelect:=True)
' [[ ファイルパス取得できなかったら ]]
If IsArray(varFileName) = False Then
Exit Sub
End If
' [[ ファイルパス取得できたら ]]
c = 0
For Each Filename In varFileName
' [[ CSVファイルを開く ]] Dim buf As String, n As Long Open Filename For Input As #1 c = c + 1 Do Until EOF(1) Line Input #1, buf n = n + 1
a = Split(buf, vbLf)
Cells(n, c).Resize(UBound(a), 1) = Application.Transpose(a)
Loop
' [[ CSVファイルを閉じる(保存無し) ]] Close #1
Next Filename
dates.Activate
'ファイル名取得()
Dim sPath As String, buf2 As String, cnt As Long
With Application.FileDialog(msoFileDialogFolderPicker) ' ▲
If .Show <> True Then Exit Sub ' ▲
sPath = .SelectedItems(1) ' ▲
End With ' ▲
buf2 = Dir(sPath & "\*.*") Do While buf2 <> "" cnt = cnt + 1 Cells(cnt + 12, 2) = buf buf2 = Dir() Loop
End Sub
' [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
' [[ ]]
' [[ ワークシート名を指定したワークシートの作成 ]]
' [[ ]]
' [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
Function CreateWorkSheet(WorkSheetName As String) As Worksheet
' 変数定義
Dim NewWorkSheet As Worksheet
Dim iCheckSameName As Integer
' ワークシートの作成
' ※一番最後に挿入
Set NewWorkSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
' 同じ名前ワークシートが無いか確認
iCheckSameName = 0
For Each WS In Sheets
If WS.Name = WorkSheetName Then
MsgBox "ワークシート名:" + WorkSheetName + " この名前は既に使われています。"
iCheckSameName = 1
End If
Next
'同じ名前のワークシートがなければ
If iCheckSameName = 0 Then
NewWorkSheet.Name = WorkSheetName
Set CreateWorkSheet = NewWorkSheet
End If
End Function
============================================================================
'ファイル名取得()
Dim sPath As String, buf2 As String, cnt As Long
With Application.FileDialog(msoFileDialogFolderPicker) ' ▲
If .Show <> True Then Exit Sub ' ▲
sPath = .SelectedItems(1) ' ▲
End With ' ▲
buf2 = Dir(sPath & "\*.*") Do While buf2 <> "" cnt = cnt + 1 Cells(cnt + 12, 2) = buf buf2 = Dir() Loop
この部分単品で動かしたときは、きちんとファイルの名前をとってくることができ、ファイルの中身を吐き出したりはしない。
以上です。
お力を貸していただきたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/27 00:30