![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Excel VBAを使って、テキストデータをExcelインポートしたいと思っています。
画像を添付していますが、こちらにも例として。
*********************↓例↓***********************
/NAME 1行目
//① 2行目
A,B,C,D 3行目
E,F,G,H 4行目
,,,
,,,
省略
,,, 1026行目
//② 1027行目
AA,BB,CC,DD 1028行目
EE,FF,GG,HH 1029行目
,,,
,,,
省略
,,, 2051行目(データ最終行)
*********************↑例↑***********************
このようなデータを読み込みたいと思っています。
1行目・2行目を無視して、3行目のデータから
ExcelのF列5行目から繁栄をさせたいです。
また、A,B,C,D となっている状態で
F5にA F6にB F7にC F8にE
と繁栄をさせたいと思っています。
そして、1027行目を無視して、1028行目からのデータを
K列5行目から同じように
K5にAA K6にBB K7にCC K8にDD
と言うようなデータ繁栄をさせたいと思うのですが
何か方法が思い付く方がいましたら、教えて頂きたいです。。
![「Excel VBA テキストインポートに」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/d/543151381_623033ba8c2ed/M.png)
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
こんばんは
内容が良く分かりませんが、なんとなくで
新規シート(加工用)にQueryTables.Addでカンマ区切り、必要カラムのみで抽出 一旦 = でVariant配列に入れ Transposeで行列を入れ替え出力、
必要であれば、不要列などを削除(シート上で加工、記録も出来るかな、)
配列出力時などや配列内で加工できるなら飛ばして出力するだけ
加工した場合、改めて= でVariant配列に入れ
対象シートに出力、(出力先が飛び列ならstepでループ)
データの行や値がユニークなら
新規シート(加工用)にQueryTables.Addでカンマ区切り、必要カラムのみ
Find などで データ行を配列へ Transpose で 出力
No.4
- 回答日時:
CSVの読み込み方法|VBAサンプル集
https://excel-ubara.com/excelvba5/EXCEL111.html
> もっとも簡単かつ良くあるCSV読み込みVBAコード
をベースにいじったもの。
質問の内容と解釈変えてますが、希望の操作になると思われます。
1行ずつ読み込む。
2行目まではスルー
書き込み行(RO)は5。
書き込み列(CO)は6(F列)。
各行を読み込み、要素を縦に追加していく。
その過程で、
CSVの1つ目のデータの先頭2文字が"//"の場合は…
書き込み行(RO)を5に戻し、
書き込み列(CO)は+5する(6+5=11列目 → K列)。
Option Explicit
Sub CSV入力1()
Dim varFileName As Variant
Dim intFree As Integer
Dim strRec As String
Dim strSplit() As String
Dim i As Long, j As Long
Dim RO As Long, CO As Long
varFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _
Title:="CSVファイルの選択")
If varFileName = False Then
Exit Sub
End If
intFree = FreeFile '空番号を取得
Open varFileName For Input As #intFree 'CSVファィルをオープン
RO = 5
CO = 6
i = 0
Do Until EOF(intFree)
Line Input #intFree, strRec '1行読み込み
i = i + 1
strSplit = Split(strRec, ",") 'カンマ区切りで配列へ
If i > 2 Then
For j = 0 To UBound(strSplit)
If Left(strSplit(0), 2) <> "//" Then
Cells(RO, CO) = strSplit(j)
RO = RO + 1
Else
RO = 5
CO = CO + 5
Exit For
End If
Next
End If
Loop
Close #intFree
End Sub
コードまで作成して頂いてありがとうございます!
VBA自体初心者でしたので、すごく助かりました!!
Excelから出力したい場合、このサイトを基に作成する事できますでしょうか?
No.3
- 回答日時:
こんにちは
ご説明だけでは、よくわかりませんけれど・・
『テキストファイルの3行目と1028行だけを取り出して、それぞれをF列とK列に行列入換えて転記したい』ってことでしょうか?
>何か方法が思い付く方がいましたら~
VBAとのご質問なので、
◇方法1
1)テキストファイルをカンマ区切りとしてエクセルで開く
2)3行目と1028行目を、F列、K列に転記
3)テキストファイルを閉じる(保存せずに)
◇方法2
1)テキストファイルをシークエンシャルファイルとして開く
2)3行目と1028行目を、F列、K列に転記(不要な部分は読み飛ばす)
3)ファイルを閉じる
あたりが、一般的な方法かと思います。
No.2
- 回答日時:
こんにちは。
データの大きさが決まっているなら、Excelに書き出す配列を用意して、
テキストファイルを1行ずつ読み込んで、カウンタを使って、
Select Caseで Case 3 To 1026,1028 To 2051 などを記載。
もう1つセルの行のカウンタを用意して、Splitで、配列に1つずつ入れて
いくでしょうかね?
最後に、配列からセルへ一気に書き込むのが良いのでは?と思います。
https://jizilog.com/vba-lininputtext
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
<VB>String→Object
-
S9タイプからXタイプにデータ...
-
ハミング窓関数とFFT(高速フー...
-
Fortranで/(スラッシュ)を含...
-
VBAでシートからコンボボックス...
-
Accessで該当データにフラグを...
-
共有メモリへのマッピング(Map...
-
フォートランでの相互相関関数...
-
メモ帳(テキストデータ)をExc...
-
カンマからスラッシュに
-
ブレーカー落ちで壊れたりしな...
-
マクロを使って「円」を消すのは
-
ワイモバイルの速度制限
-
ACCESS VBA インデックスが有効...
-
VBにおいてフォーム間の変数の...
-
EXCELVBAでSQLserverからデータ...
-
[VBA] CountIfに変数を使いたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
あんまり考えたくないけど
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
多量のSUMIF式を軽くしたい
-
この行は既に別のテーブルに属...
-
エクセルで2つの時系列のデー...
-
ブレーカー落ちで壊れたりしな...
-
VBA 空白セルを削除ではない方...
-
S9タイプからXタイプにデータ...
-
Accessで該当データにフラグを...
-
EXCELVBAでSQLserverからデータ...
-
CString型の文字列連結について
-
[C言語] コメント文字列を無視...
-
VBAを使ってOutlookメール本文...
-
シーケンサにパソコンからアク...
-
C# ソケット通信でデータ受信時...
-
パースとはなんですか?
-
ユーザーフォームのテキストボ...
おすすめ情報