VBA初心者です。
やりたいことは以下の通りです。
カンマ区切りの文字が記載された.txtデータをExcelファイルに取り込みたいと思っています。
①自動でフォルダを開いて手動で任意のテキストデータを選ぶ
②データを文字
化けなくカンマ区切りでセルごとにExcelに表示
③元データの.txtはファイルによって空白行が1行のときもあれば2行のときもありまちまちなので自動で空白行をスキップして呼び込みたい
④呼び込んだ.txtの内容を元に読み込先のExcelに関数(I列に来るべき.txtのデータを参照してJ列「収支」K列「勝率」が出る)が仕込んであるが、ファイルによってデータの行数が違うため最終行を取得したい
特定の.txtファイルではなくこちらで選べるようにしたいので以下に示したソースの通りGetOpenFilenameで自動でファイルを開いて手動で選べるようにしています。
その際、一部別の漢字に変換されたり、カンマがひとつだけ・に代わっていたり文字化けがあります。
呼び込みたい.txtは空白行が1行あったり、2行あったりするのでそこをスキップして純粋に文字のある行から取り込みたい。読み込み先のExcelには事前に項目を作っているため、空白行をスキップできれば自動的に項目の下にデータが表示されるようになっています。※予め空白のないテキストを呼び込んでテストすると(文字化けは別として)上手くいきました。
④は難しくてもせめて①~③までは自力でできないかと調べていますがうまくいきません。UTF-8をANTI形式に保存しても直ったり直らなかったり、またVBAのADODB.Streamオブジェクト(Microsoft ActiveX Data Objects x.x Library)を試そうとするもファイルパスやターゲットで特定のファイルを指定する部分があり、それを指定しないで使うにはどうすればいいのかがわかりません。
ご査収いただけましたら嬉しいです。
下記はネットのソースを一部直して作成。これを利用してできないでしょうか。
Option Explicit
'===================================================================================================
Private Const g_cnsTitle As String = "テキストファイル読み込み"
Private Const g_cnsFilter As String = "全てのファイル (*.*),*.*"
Sub Txt読み込み()
Dim varFileName As Variant
Dim intFree As Integer
Dim strRec As String
Dim strSplit() As String
Dim i As Long, j As Long
varFileName = Application.GetOpenFilename(FileFilter:="txtファイル(*.txt),*.txt", _
Title:="txtファイルの選択")
If varFileName = False Then
Exit Sub
End If
intFree = FreeFile '空番号を取得
Open varFileName For Input As #intFree 'txtファイルをオープン
i = 0
Do Until EOF(intFree)
Line Input #intFree, strRec '1行読み込み
i = i + 1
strSplit = Split(strRec, ",") 'カンマ区切りで配列へ
For j = 0 To UBound(strSplit)
Cells(i, j + 1) = strSplit(j)
Next
'配列をそのまま入れる方法も、ただし全て文字列として入力される
'Range(Cells(i, 1), Cells(i, UBound(strSplit) + 1)) = strSplit
Loop
Close #intFree
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.txtではなく.logの方が良いの...
-
多数のサブディレクトリ内のフ...
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
ファイルの最後に文字列挿入
-
ファイル内容の修正、行削除に...
-
COPYコマンドで結合すると余計...
-
Windows マシンでFTPバッチが動...
-
UWSCでファイルを開く方法
-
renameコマンドについて
-
accessでSQL文を使ってcsvファ...
-
Windowsのバッチファイルを利用...
-
ExcelVBA テキストファイルUNIC...
-
テキスト(txt)→ワード(docx)へ...
-
MS-DOSのバッチファイルの中で...
-
ファイル名の一部をbatで変更し...
-
VBSでフォルダ内のテキストファ...
-
PowerShellでのテキスト編集に...
-
拡張子を元に戻す
-
バッチにてフォルダ内ファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
多数のサブディレクトリ内のフ...
-
VBAでワークシートを引数として...
-
ファイルの最後に文字列挿入
-
COPYコマンドで結合すると余計...
-
拡張子を元に戻す
-
バッチファイル 複数ファイル...
-
forfilesで検索したファイルを...
-
エクセルの各セルの内容をそれ...
-
txtとはWordでなんですか?
-
バッチファイルで文字列削除に...
-
psqlでエラーログをとりたい
-
renameコマンドについて
-
ファイル内容の修正、行削除に...
-
3つ以上のテキストファイルをコ...
-
UWSCでテキストファイルを開い...
-
バッチファイルからVBAに引数を...
-
コマンドプロンプトで指定した...
-
MS-DOSのバッチファイルの中で...
おすすめ情報