• 締切済み

EXCELのマクロを使って、テキストファイル(タブ区切り)の行列の一部

EXCELのマクロを使って、テキストファイル(タブ区切り)の行列の一部分をコピーし、それを別の一つのシートに貼り付けていくことはできますでしょうか? (複数のテキストファイルの行列を一つのシートにまとめたい、ということです) 現在やり方がわからないので、手動でEXCELを使って全てのファイルを開き、コピー、貼り付けをしています。 インポート元のファイル名はいつも異なるため、自動記録ではうまくいかなそうです。 複数のインポートファイル名を選択し、ボタン一つでコピー、ペーストが終了するのが理想的です。 よろしくお願いいたします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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, ",") 'カンマ区切り

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

http://officetanaka.net/excel/vba/file/file02.htm 上記のページを参考に複数のファイルを開く部分を作成して、あとはループでコピーペーストの部分を作成してください。 自動記録をしてファイル名を、上記のページで参考にしたファイル名取得方法で得たファイル名に変更すれば殆ど出来上がるでしょう。 感じとして(ファイルを複数選択したらあとは自動でコピーペーストされるとしたら) ファイルを開く部分 For i = 1 To UBound(OpenFileName) ここにコピーペーストの部分を作成します。 OpenFileName(i)が個々のファイル名になります。 Next i こんな流れになるでしょう。

関連するQ&A

  • エクセルのデータをTAB区切りテキストに出力

    エクセルのデータをTAB区切りテキストに出力 1.エクセルのデータをTAB区切りテキストに出力して 2.そのテキストを入力としてrubyでデータ加工 という作業があります。現在1を手動で行っておりますが、ファイルが多いためこの操作をファイル名とシート名を指定してrubyから操作できればと考えております。 できれば追加でライブラリをインストールすることなく実現できればありがたいのですが、簡単な方法がございましたらご教示ください。 環境は、Win XP、Office 2003、ruby 1.9.1です。 最終的にはエクセルファイルから直接データを取得できるようにしたいのですが、当面は上記の方法で凌ぎたいと考えております。

    • ベストアンサー
    • Ruby
  • Excel(2000)形式のファイルを一括でタブ区切りテキストに変換

    Excell形式の複数のファイル(あるフォルダの中にある全てのxlsファイル)を一括で、タブ区切りのテキストファイルに変換する必要があります。 このような操作をできるツールまたはマクロを教えていただけませんでしょうか。 ExcelはExcel2000を使っています。

  • スペース区切りのテキストファイルをExcelで開く

    テキストファイルをExcelファイルとして読み込む必要が多いです 毎回Excelの 開く を使ってテキストファイルを開くのは面倒なので、右クリックの 送る にExcelの実行ファイルをコピーしてそこに送っています ただ、この方式だとスペース区切りで改列出来ず、タブと改行(エンターキー)のみ反映したファイルが開きます 最初からスペース区切りも列区切りにした形でテキストファイルを開く方法(Excelの 開く を使わずに)はないでしょうか

  • EXCELのマクロでテキストを読み込む方法

    EXCELのマクロを使って、テキストファイルから、ある文字列を検索し、コピーしEXCELのシートのセルにペーストするマクロの書き方をご存知の方は、ご教示願います。 例えば、テキストファイル中の「dog」という文字列を検索して、EXCELの決まったセル(A、1)にコピペするというマクロです。 よろしくお願い申し上げます。

  • タブ区切りテキストに現れる「”」について

    エクセルシートを「名前をつけて保存」でタブ区切りテキストにしました。すると「”」がついている部分が出来ました。この「”」は必用なものなのでしょうか? 一部にだけついているので不思議に思い、調べてみたのですが、わかりませんでした。初歩的なことで申し訳ありませんが、教えていただきたくお願い申し上げます。

  • テキストファイルをEXCELにコピー

    OS:XP EXCEL:2003 現在、エクセルの最大行数を超えるテキストファイルがあり、 それを、エクセルに貼り付けたいと考えています エクセルにイメージを貼り付けるように大きなテキストファイルを 貼り付けできないのでしょうか? エクセルにテキストファイルをインポートする機能があるのは了解しています。 やはり、ファイルを分割して複数シートに貼り付けるべきでしょうか? 何か良いアイデアがありましたら、教えて下さい。 どうぞ宜しくお願い致します。

  • エクセルのテキスト形式(””区切り)保存の仕方

    弥生会計の仕訳日記帳にインポートするため、エクセルデータを テキスト形式で保存しようとしています。 エクセルでデータを作成し、ファイル形式を選択して保存しようと するのですがその中にはテキスト形式は「タブ区切り」と「スペース区切り」 しかありません。 弥生のインポート対応形式はテキストの””区切りです。 (エクセル)20080101 0 0 2000 売掛金 (テキスト)"20080101""0""0""2000""売掛金" というようにしたいのですが。 CSV(タブ区切り)で保存してやってみましたが、インポート できませんでした。 いくつか検索したところ、形式を選択して保存すれば…という 回答が見つかったのですが、どれも上記のような状態になりません。 ちなみにエクセルのバージョンは2003です。 よろしくお願いします。

  • VBからテキストファイル(タブ区切り)をエクセルで開く方法

    VBからテキストファイル(タブ区切り)をエクセルで開く方法を探しています。CSVデータを出力する方法や、テキストファイルを読み込む方法等の情報はたくさんあるのですが、直接エクセルを起動し、それにテキストファイルを出力するのはなかなか見当たらない状況です。 質問の主旨は、もともと、参照ボタンを押下すると、選択されている指定のテキストファイルを保存するダイアログが出力される仕組みであったものを、どうせ開くのはエクセルだからと言うユーザーの要望から、参照ボタンクリックと同時にエクセルが起動し指定のテキストファイルをエクセルで開いて見ることができるように改造するといったものです。(参照のみですので読み取り専用で見たい) テキストファイルをドラッグしてエクセルシートに持っていけばタブを認識して格セルに分割して開いてくれるのですが、VBから同じような動作をさせることは可能なのでしょうか? よいヒントになるような情報でもかまいません うまく説明できずわかりにくいかも知れませんがご助言をお願いいたします。 【環境】 WindowsXP、VB6.0、EXCEL2002

  • エクセルからテキスト(タブ区切り)で保存したら""が付きます

    エクセル2002で編集したデータをテキスト(タブ区切り)で保存しました。 それをメモ帳で開いたら文字の前後に「""」が付いていました。 エクセルで開いたときにはセル内が「A 123」となっているのに メモ帳で開いたときは「"A 123 "」となってしまいます。 コピー→値貼付しても直りません。 これはどうしてなのでしょうか?直す方法はありますか?

  • エクセルのVBAでタブ区切りのテキスを出力したい。

    エクセルのVBAでテキスト出力をしたいのですが、 ・タブ区切りで保存 ・A列の最終行×1行目の最終列の範囲指定が対象 ・範囲内の空欄もタブ区切りにする(最終列には必ず数値あり) ・出力テキストはシートと同じフォルダ内へ格納 ・テキストファイル名はシート名 という感じにしたいのです。 いろいろ検索はしているのですが、これといった回答やサンプルは 見つかっておりません(><) ちなみに、私は、自動記録をしたものを改良して少し使えるレベルです。 よろしくお願いします。

専門家に質問してみよう