advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 1215 for (Mook) (0.001 sec.)
[[20150427163551]]
#score: 9211
@digest: 0fbeed22961d28808ad317acab69b445
@id: 67867
@mdate: 2015-04-28T10:03:41Z
@size: 7696
@type: text/plain
#keywords: txtfiles (96032), joinfile (66427), jointextfiles (44989), ftarget (29523), dstfile (19644), 回固 (17063), 名jo (15497), arguments (11138), kanabun (9602), toto (8926), 合. (8314), getsaveasfilename (5336), 合後 (4764), isarray (3809), vbboolean (3450), ファ (3379), ル行 (3328), ウッ (3289), 結合 (2815), vartype (2704), ァイ (2616), テキ (2605), トル (2468), キス (2408), txt (2282), イル (2260), ッシ (2234), 、ka (2180), wscript (2129), 2015 (2042), タイ (1962), トフ (1930)
『複数のテキストファイルを1つにする』(TOTO)
4つのテキストデータを取得し、それを1つのテキストファイルに 保存する事は可能でしょうか? テキストファイルの項目名は4つとも同じですが、 行数は取得都度異なります。 < 使用 Excel:Excel2010、使用 OS:Windows7 > ---- 4つのテキストデータはテキストファイルでしょうか。 一つのブック内の4シートでしょうか。 それとも4つの EXCEL ファイルでしょうか。 (Mook) 2015/04/27(月) 16:43 ---- こんにちは それぞれ項目名が有るという事は コマンドプロンプトで、 C*¥> copy aaa.txt + bbb.txt zzz.txt とかではダメって事ですよね? (ウッシ) 2015/04/27(月) 16:45 ---- 4つともテキストファイルです。 無知のため噛み砕いてご教授願います。 (TOTO) 2015/04/27(月) 16:55 ---- ウッシさんの質問は、単純に二つのファイルの中身をくっつけた場合、 タイトル行が途中に入るからダメなのかどうか。 ということを確認したいコメントなのですが、その点はどうなのでしょうか。 また、EXCEL とはまったく関係無いところの処理でも良いのでしょうか。 ファイル名が毎回固定で、タイトル行の重複が問題ないのであれば、 ウッシさんのコマンドをバッチにすれば出来そうですけれど。 (Mook) 2015/04/27(月) 19:05 ---- 私も ウッシさん、Mookさんの提案に賛成です。 余分なタイトル行は、メモ帳等で開いて削除すれば、あっというまでしょうし。 (β) 2015/04/27(月) 19:20 ---- おじゃまします。 こんなふうに Get#, Put# を繰り返したらどうでしょう? (2ファイル目から 一行目は読み飛ばして、 Put# しています) Public Sub trial() Dim txtFiles Dim joinFile '結合する 元のテキストファイルを CtrlやShiftを使って選択 txtFiles = Application.GetOpenFilename("Text,*.txt;*.csv", MultiSelect:=True) If Not IsArray(txtFiles) Then Exit Sub '結合後のファイル名 joinFile = Application.GetSaveAsFilename("Join.txt") If VarType(joinFile) = vbBoolean Then Exit Sub JoinTextFiles txtFiles, joinFile End Sub Private Sub JoinTextFiles(fArray, fTarget) Dim buf() As Byte Dim f Dim b&, k&, io%, oo% Dim ss As String oo = FreeFile() Open fTarget For Binary Access Write As oo io = FreeFile() For Each f In fArray If k > 0 Then Open f For Input As io Line Input #io, ss 'ヘッダ行1行読み込み b = Seek(io) Close io Else b = 1 k = 1 End If Open f For Binary Access Read As io ReDim buf(b To LOF(io)) Get #io, b, buf Close io Put #oo, , buf Next Close oo MsgBox "結合しました", , fTarget End Sub . (kanabun) 2015/04/27(月) 20:33 ---- どうしたいか詳細の回答を待っていましたが、kanabun さんからマクロ案も出たので、 とりあえずのVBS 案です。 下記をメモ帳に貼り付け、結合.vbs の名前でデスクトップにでも保存してから、 結合したいドキュメントをすべて選択して「まとめて」結合.vbs へドロップしてください。 先頭のファイルと、2番目以降は2行目以降を結合したファイルが *_ALL.txt 等の名前で 生成されると思います。 Set fso = CreateObject("Scripting.FileSystemObject") Set dstFile = fso.CreateTextFile( Replace( WScript.Arguments(i), ".", "_ALL." ), True ) For i=0 To WScript.Arguments.Count - 1 txt = fso.OpenTextFile( WScript.Arguments(i) ).ReadAll() If i = 0 Then pos = 1 Else pos = InStr( txt, vbNewLine ) + 1 dstFile.Write Mid( txt, pos, Len( txt ) ) Next dstFile.Close 先の条件でよければ、 Copy %1 + %2 + %3 + %4 All.txt という一行のバッチを 結合.bat というよう作って、そこにファイルをドロップすれば、 All.txt が出来ると思うので、こちらの方がお手軽ですけれど。 (Mook) 2015/04/27(月) 20:52 ---- 返信が遅くなりました。 ウッシさんの質問は、単純に二つのファイルの中身をくっつけた場合、 タイトル行が途中に入るからダメなのかどうか。 ということを確認したいコメントなのですが、その点はどうなのでしょうか。 →タイトルは毎回固定にします また、EXCEL とはまったく関係無いところの処理でも良いのでしょうか。 ファイル名が毎回固定で、タイトル行の重複が問題ないのであれば、 ウッシさんのコマンドをバッチにすれば出来そうですけれど。 →エクセルと関係なくても大丈夫です。 バッチでも・・マクロでも。 しかし、kanabunさん、Mookさんからいただいたコメントを見て 固まっています。 (TOTO) 2015/04/28(火) 14:19 ---- →タイトルは毎回固定にします 回答間違えました。 タイトルは重複すると困るので2行目から一番下までを合体したいです。 (TOTO) 2015/04/28(火) 14:42 ---- よこから失礼します。 >しかし、kanabunさん、Mookさんからいただいたコメントを見て >タイトルは重複すると困るので2行目から一番下までを合体したいです。 kanabunさんのVBA,MookさんのVBSともに、選択したテクストファイルを2つめ以降のタイトル行をのぞいて結合していますよ? 固まる前に、実際にやってみられたらいかがでしょうか? ただ、kanabunさんの例では、どれが先頭ファイルかの指定ができず、エクスプローラ上で上にあるもの、(名前が若いもの)が 先頭になると思われますが、いずれのファイルにもタイトル行があるわけですから、いいですよね。 (β) 2015/04/28(火) 15:14 ---- kanabunさんのコード、そっくりそのままで、テキストファイルの選択を複数一挙ではなく1つずつにしたものです。 選択が終われば、キャンセルボタンをおします。 選択した順序にしたがってファイルが結合されます。 JoinTextFiles は変更有りません。そのまま使います。 Public Sub trial2() Dim fPath Dim txtFiles Dim joinFile '結合する 元のテキストファイルを選択 Do fPath = Application.GetOpenFilename("Text,*.txt;*.csv") If fPath = False Then Exit Do If IsArray(txtFiles) Then ReDim Preserve txtFiles(1 To UBound(txtFiles) + 1) Else ReDim txtFiles(1 To 1) End If txtFiles(UBound(txtFiles)) = fPath Loop If Not IsArray(txtFiles) Then Exit Sub If MsgBox("以下の順番でファイルを結合します。よろしいですか?" & vbLf & Join(txtFiles, vbLf), vbYesNo) = vbNo Then Exit Sub '結合後のファイル名 joinFile = Application.GetSaveAsFilename("Join.txt") If VarType(joinFile) = vbBoolean Then Exit Sub JoinTextFiles txtFiles, joinFile End Sub (β) 2015/04/28(火) 15:28 ---- すみませんVBA、VBS、バッチファイルを1回も作った事がないので チャレンジはしたのですがエラーとなってしまいます。 もう少しやってみます。 ちなみに、 4つのテキストファイルを合算した後、 続けてマクロでデータ加工予定です。 (TOTO) 2015/04/28(火) 15:37 ---- コンパイルエラー SubまたはFunctionが定義されていません となりますが、 どのように定義設定すればよいのでしょうか (TOTO) 2015/04/28(火) 16:03 ---- βさんのコードだけじゃ動きません >JoinTextFiles は変更有りません。そのまま使います。 のとおりに、kanabunさんのPrivate Sub JoinTextFiles(fArray, fTarget)から下を全部、βさんのコードの続きにコピペしてください >kanabunさん、βさん わたしのPCでは、Join.txtがダイアログのファイル名に入らず手入力しました とりあえず以下でしのぎましたが、せっかくファイル名入ってるのになぜなんでしょう?? joinFile = Application.GetSaveAsFilename("Join.txt", fileFilter:="Text Files (*.txt), *.txt") (もあ) 2015/04/28(火) 17:48 ---- >わたしのPCでは、Join.txtがダイアログのファイル名に入らず手入力しました >とりあえず以下でしのぎましたが、せっかくファイル名入ってるのになぜなんでしょう?? こちらでも同じ状況でした。フィルター規定していないからかな?と、同じように"Text Files (*.txt), *.txt"を指定しても同じでした。 以前(2003時代)は確か表示されたような記憶があります。 バージョンアップで何かかわったんでしょうかねぇ?? 追伸です。 フィルター文字を "Text,*.txt" だけにすると ファイル名(join.txt)が表示されました。 なぜなのかはわかりませんが。 (β) 2015/04/28(火) 18:57 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201504/20150427163551.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97013 documents and 608132 words.

訪問者:カウンタValid HTML 4.01 Transitional