
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
参考URLの田中先生のコードを借用して一行付け足すと、下記でできます。
Sub test()
Dim FSO As Object, buf As String
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO.GetFile("C:\Sample.txt").OpenAsTextStream
buf = .ReadAll
.Close
End With
Set FSO = Nothing
'buf = Replace(buf, vbCrLf, vbLf)
ActiveCell.Value = buf
End Sub
セル内改行はVbLFなので、vbCrLFから置換が必要かと思いましたが、しなくても大丈夫な様です。
参考URL:http://officetanaka.net/excel/vba/filesystemobje …
No.2
- 回答日時:
バイナリモードで開いてGetで一度に取得というのではいかがでしょうか。
テキストファイルの文字コードによっては文字化けしそうなので変換が必要そうですが・・。
以下サンプルです。
Sub Sample()
Dim intFileNum As Integer
Dim strFileName As String
Dim strBuf As String
' ファイルを開くダイアログを表示してファイル名を保存
strFileName = Application.GetOpenFilename()
' ファイル番号を取得
intFileNum = FreeFile
' ファイルの大きさ分のバッファを確保
strBuf = Space(FileLen(strFileName))
' ファイルをバイナリモードで開き内容を取得
Open strFileName For Binary As #intFileNum
Get #intFileNum, , strBuf
Close #intFileNum
' A1セルに書き込み
Range("A1").Value = strBuf
End Sub
No.1
- 回答日時:
この質問ぶりからすると、テキストファイルというものの理解が十分で無いようだ。
区切り文字のことも書いてない質問だから。
テキストファイルで、エクセルのシートと親和性の良い形式は
(下記でDはDelimiter区分文字を表す。
http://www.sophia-it.com/content/delimiter
デリミターとは、「カンマ」、「スペース」、「タブ」など(1半角英数の決った1つ)である。)
項目1+D+項目2+D+項目3+D+・・・+改行(+は直後に続いて行くことを示す)
項目1+D+項目2+D+項目3+D+・・・+改行
・・
(本当は「紐」(String)のようにレコード1+レコード2+・・順につながっている。)
の形式だ。ただし項目nが空白(データなし)の場合は「D+D」の場合もある。
改行のコードはどういうものか知ってますか。
OSのIOCSの方で、ある言語がデータを読み込むと、改行までを1レコードとして変数に入れてくれる指令がある場合が多い。
VBAの場合は Line Inputである。
GoogleでLine Inputで照会してみること。
http://officetanaka.net/excel/vba/statement/Line …
ほか沢山在る。こんなの読んで質問してますか。
ーー
1レコードを読むたびに変数にデータが入るが、これをエクセルのシートの各列に分けて代入したいわけ。
これに適したのがVBAのSplit関数だ。
http://officetanaka.net/excel/vba/tips/tips62.htm
など多数。
ーー
後は
・ファイルの1レコードを読むー>変数へ
・その変数をSplitでデリミタで分割ー>配列に
・項目数=シートの列数だけ繰り回して、セルに代入。
のレコード数分の繰り返しがプログラム。
ーー
ファイルのレコードの終わりの判定は勉強のこと。
====
エクセルには「データ」メニューに「区切り文字」があるのをご存知か。
A列の各行にデータを入れて、その後
これをマクロの記録を取り、そのコードを使う手もある。
ーーー
>どのように記述すればよいでしょうか
丸投げ的にコードのことを聞く前に、その前に、上記のような、勉強することがあるといいたい。
ーー
参考
上記で
・その変数をSplitでデリミタで分割ー>配列に
・項目数=シートの列数だけ繰り回して、セルに代入
といったが、繰り回ししなくても、エクセルVBAの場合
Sub test01()
s = "aaa,111,東京"
t = Split(s, ",")
Range("A1:c1") = t
End Sub
こういうこと(一発代入のコード)も、やってみると、出来るようだ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- 会計ソフト・業務用ソフト Excelマクロに詳しい方教えてください 1 2023/06/29 16:18
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で特定の行を抽出する方法...
-
タブの色を変更する方法
-
Arduino Excel
-
perlによるデータのくっつけ方...
-
VBAでタブ区切りテキストの保存...
-
Edge スクレイピング
-
エクセルVBA コードが同じでも...
-
drtファイルはどうしたら開...
-
csvファイル(表計算的な処理)
-
perlでWMV形式のファイルをダウ...
-
batファイルでrenameができませ...
-
<>の意味が分かりません
-
MATLABのm-fileについて
-
1行がやたら長いテキストをバッ...
-
コマンド上の行間
-
ファイルの日付取得
-
JavaでCSVファイルを高速に読む...
-
ディレクトリ構造の表示
-
PerlとUnixの関係
-
[arduino]数値の大きなデータを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルの作り方(CSV→...
-
C言語で特定の行を抽出する方法...
-
空白文字 \\f と\\v の違いに...
-
全角と半角文字が混在している...
-
Edge スクレイピング
-
【Access2003】VBAでタブ区切り...
-
【エクセル】改行無しテキスト...
-
VBAでタブ区切りテキストの保存...
-
\\tはどんなときに使うのでしょ...
-
タブコントロールに付いて
-
Javaのコーディングスタイル
-
エクセルのデータをテキストデ...
-
タブの色を変更する方法
-
デルファイ TabControl タブの...
-
エクセル→XML 要素のコピー
-
掲示板の過去ログDLについて
-
Access2007のADOの使い方が分か...
-
AccessからExcelをタブ指定で開...
-
Excelのマクロで改行を含んだテ...
-
テキストファイル(tsv)を改行...
おすすめ情報