
EXCELのマクロを使って、テキストファイル(タブ区切り)の行列の一部分をコピーし、それを別の一つのシートに貼り付けていくことはできますでしょうか?
(複数のテキストファイルの行列を一つのシートにまとめたい、ということです)
現在やり方がわからないので、手動でEXCELを使って全てのファイルを開き、コピー、貼り付けをしています。
インポート元のファイル名はいつも異なるため、自動記録ではうまくいかなそうです。
複数のインポートファイル名を選択し、ボタン一つでコピー、ペーストが終了するのが理想的です。
よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
#2の修正・補足
#開いたときのエラーに対するエラー処理はされていませんせ。
最後の「せ」は余分でした。
今のところ、On Error Goto ErrorHandler 程度ぐらいしか思いつきません。
拡張子の間違いなどの処理は考えていなません。
一応、
If FileLen(Fname) = 0 Then Exit Sub
は、空のファイルは実行しない、ということです。
CSVに変更するには、
"TSVファイル(*.txt),*.txt", MultiSelect:=True
↓
"CSVファイル(*.csv),*.csv", MultiSelect:=True
Ar = Split(TextLine, vbTab) 'Tab区切り
↓
Ar = Split(TextLine, ",") 'カンマ区切り
No.2
- 回答日時:
これは、あくまでも、タブ区切りファイルのみですから、CSVには変更が必要です。
ファイルを開いたときのエラーに対するエラー処理はされていませんせ。
'//
Sub CSVMultiImport()
Dim FileNames As Variant
Dim f As Variant
Dim i As Long
Dim num As Long '初期行(0 が、1行目)
Const nSTART As String = "A1" 'スタートセル
FileNames = Application.GetOpenFilename("TSVファイル(*.txt),*.txt", MultiSelect:=True)
If VarType(FileNames) = vbBoolean Then
Exit Sub
End If
For Each f In FileNames
CSV2Sheet f, Range(nSTART), num
i = i + 1
Next
If num > 0 Then
MsgBox CStr(i) & " 個のファイルを処理しました。", vbInformation
End If
End Sub
Sub CSV2Sheet(ByVal Fname As String, rng As Range, ByRef num As Long)
'引数 Fname:CSVファイル名,スタートセル,数字-ユーザー設定不要
Dim FNumber As Integer
Dim TextLine As String
Dim Ar As Variant
Dim i As Long, j As Long
FNumber = FreeFile()
If FileLen(Fname) = 0 Then Exit Sub
Application.ScreenUpdating = False
Open Fname For Input As #FNumber
Do Until EOF(FNumber)
Line Input #FNumber, TextLine
If TextLine <> "" Then
Ar = Split(TextLine, vbTab) 'Tab区切り
j = UBound(Ar) + 1
rng.Offset(num).Resize(, j).Value = Application.Transpose(Ar)
On Error GoTo 0
End If
num = num + 1
Loop
Close #FNumber
Application.ScreenUpdating = False
num = num + 1 '次のファイルのインポート時に一行空ける
End Sub
No.1
- 回答日時:
上記のページを参考に複数のファイルを開く部分を作成して、あとはループでコピーペーストの部分を作成してください。
自動記録をしてファイル名を、上記のページで参考にしたファイル名取得方法で得たファイル名に変更すれば殆ど出来上がるでしょう。
感じとして(ファイルを複数選択したらあとは自動でコピーペーストされるとしたら)
ファイルを開く部分
For i = 1 To UBound(OpenFileName)
ここにコピーペーストの部分を作成します。
OpenFileName(i)が個々のファイル名になります。
Next i
こんな流れになるでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2010のVBAで起動時に連続...
-
EXCELファイルが開けない(-_-;)
-
EXCELのVBAで画像を選んだ順に...
-
Notes 開発で、 excelファイル...
-
Excelで特定のファイルを開くには
-
エクセル マクロの式を教えてく...
-
excelに貼り付けた数値が勝手に...
-
Excel教えてください!!
-
複数のcsvファイルの結合
-
エクセルVBAでセルに入力したパ...
-
=CELL("filename")で取得したフ...
-
エクセル:フォルダ内のファイ...
-
Teraマクロで日付ディレクトリ...
-
Excelでリンクを使用すると#N/A...
-
タスクバーのアプリ開閉を回避...
-
【マクロ】シート名を取得する...
-
EXCELで工場別人数を出し...
-
あるフォルダ内のすべてのファ...
-
PPTのコマンドボタンがクリック...
-
押したボタンの位置取得(共通の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
excelに貼り付けた数値が勝手に...
-
Teraマクロで日付ディレクトリ...
-
EXCELのVBAで画像を選んだ順に...
-
ファイルを並び替えるときの「...
-
エディタで効率的な切り出し方法
-
VBAでFileDialogを利用してファ...
-
VLOOKUP関数とネットワークに置...
-
EXCELのマクロを使って、テキス...
-
初めまして、VBA初心者です。 ...
-
ハイパーリンクで前回値をひき...
-
excel INDIRECT 他ファイル参照
-
エクセルファイルから指定した...
-
PDF ファイルが開けません。
-
=CELL("filename")で取得したフ...
-
CSVで文字化けしてしまうのを直...
-
エクセルVBAで複数のファイ...
-
エクセルからスキャナVBAで連動...
-
「やよいの青色申告」のファイ...
-
【マクロ】2回実行したら、エ...
おすすめ情報