
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
excelに貼り付けた数値が勝手に...
-
Teraマクロで日付ディレクトリ...
-
エクセル:フォルダ内のファイ...
-
VLOOKUP関数とネットワークに置...
-
ハイパーリンクで前回値をひき...
-
エクセルにファイルを添付したい
-
Excelでファイル指定してopenで...
-
エクセル 一括リンクの解除
-
EXCELのマクロを使って、テキス...
-
=CELL("filename")で取得したフ...
-
Excelでリンクを使用すると#N/A...
-
ローマ字→カタカナへ変換(エク...
-
コマンドボタンを押すたびに大...
-
Excel:コマンドボタンの移動
-
スクロールしてもボタンを常に...
-
マクロ 実行ボタンを押さずに...
-
Excelを開いた時に表示さ...
-
押したボタンの位置取得(共通の...
-
Accessのコマンドボタンの立体...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
excelに貼り付けた数値が勝手に...
-
EXCELのVBAで画像を選んだ順に...
-
Teraマクロで日付ディレクトリ...
-
ファイルを並び替えるときの「...
-
ハイパーリンクで前回値をひき...
-
エディタで効率的な切り出し方法
-
=CELL("filename")で取得したフ...
-
エクセルからスキャナVBAで連動...
-
VBAでFileDialogを利用してファ...
-
エクセルファイルから指定した...
-
EXCEL VBA ー 同一フォルダ内の...
-
Excelでファイル指定してopenで...
-
Notes 開発で、 excelファイル...
-
複数のExcelブックから一覧表を...
-
エクセルにファイルを添付したい
-
Excel VBAで自動的にハイパーリ...
-
Excelvbaで同一フォルダー内の...
-
「やよいの青色申告」のファイ...
-
CSVで文字化けしてしまうのを直...
おすすめ情報