- 締切済み
VBAでテキストファイルのデータを読み込んでExcelで開く+α
noname#22222の回答
![noname#22222](https://gazo.okwave.jp/okwave/images/contents/av_nophoto_60_4.gif)
s_husky です。 ライブラリは、VBエディターを起動し 1、[挿入]-[標準ライブラリ]で作成します。 2、生成された<Module1>に全てをコピーします。 ※コピーは一度切りです。その後の、コピーは厳禁です。 3、<Module1>は、’FileSystem’ などとリネームします。 ※これは、他のブックにもエクスポート・インポートして利用します。 ’FileSystem’は、広域に通用する関数ですから、どのシートからも利用できます。 なお、’FileSystem’として完備するには、次の関数もコピーされるといいでしょう。 ' ------------------------------------------------- ' ファイルサイズを取得する関数 ' ------------------------------------------------- Public Function FileSize(ByVal FileName As String) As Variant On Error GoTo Err_FileSize Dim fso As FileSystemObject Dim fil As File Dim lngSize As Long Set fso = New FileSystemObject Set fil = fso.GetFile(FileName) lngSize = fil.Size Exit_FileSize: FileSize = lngSize Exit Function Err_FileSize: lngSize = -1 Resume Exit_FileSize End Function ' ------------------------------------------------- ' 指定のディレクトリのファイルリストを配列で返す関数 ' ------------------------------------------------- Public Function GetFileList(ByVal strDir As String, _ ByRef strFileNames() As String, _ Optional strName As String = "*") As Integer On Error GoTo Err_GetFileList Dim I As Integer Dim J As Integer Dim N As Integer Dim fso As FileSystemObject Dim fol As Folder Dim fil As File Dim fils As Files Set fso = New FileSystemObject Set fol = fso.GetFolder(strDir) Set fils = fol.Files I = I - 1 N = UBound(strFileNames()) For Each fil In fils If fil.Name Like strName And fil.Attributes = Archive Then I = I + 1 strFileNames(I) = fil.Name End If If I = N Then MsgBox N & " 件でファイル名の取得を中止します。(GetFileList)", vbExclamation, " 関数メッセージ" End If Next For J = I + 1 To N strFileNames(J) = Empty Next J Exit_GetFileList: GetFileList = I Exit Function Err_GetFileList: I = -1 MsgBox Err.Description & "(GetFileList)", vbExclamation, " 関数エラーメッセージ" Resume Exit_GetFileList End Function ' ------------------------------------------------- ' 指定のファイルを単一の文字列で戻す関数 ' ------------------------------------------------- Public Function FileReadAll(ByVal FileName As String) As String On Error GoTo Err_FileReadAll Dim fso As FileSystemObject Dim fil As File Dim txs As TextStream Set fso = New FileSystemObject Set fil = fso.GetFile(FileName) Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault) FileReadAll = txs.ReadAll Exit_FileReadAll: Exit Function Err_FileReadAll: MsgBox Err.Description & "(FileReadAll)", vbExclamation, " 関数エラーメッセージ" Resume Exit_FileReadAll End Function ' ------------------------------------------------- ' 指定のフォルダが存在するか否かを真・偽で返す関数 ' ------------------------------------------------- Public Function FolderExists(ByVal FolderName As String) As Boolean Dim fso As FileSystemObject Set fso = New FileSystemObject FolderExists = fso.FolderExists(FolderName) End Function ' ------------------------------------------------- ' 指定のファイルを順次呼び込む関数 ’ ' FileRead("Test.txt") ---1行目を返す。 ' FileRead("Test.txt") ---2行目を返す。 ' FileRead関数が実行される都度に次行を呼び込みます。 ' ------------------------------------------------- Public Function FileRead(ByVal FileName As String) As String On Error GoTo Err_FileRead Static isOpen As Boolean Static fso As FileSystemObject Static fil As File Static txs As TextStream If Not isOpen Then isOpen = True Set fso = New FileSystemObject Set fil = fso.GetFile(FileName) Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault) End If FileRead = IIf(fil.Name = FileName, txs.ReadLine, "") Exit_FileRead: If Len(FileRead) = 0 Then isOpen = False Set txs = Nothing Set fil = Nothing Set fso = Nothing End If Exit Function Err_FileRead: Resume Exit_FileRead End Function
関連するQ&A
- (VBA)フォルダの中の複数のテキストファイルをエクセルに取り込みたい
フォルダの中に複数のテキストファイルがあります。 それをVBAで1シートに1テキストファイルづつで取り込んで(区切り文字(#)、列のデータ形式(文字列)を指定して)作成済みのマクロを実行し、出力させたいのですが。。 データが大きいので5シートで1つのファイルにしたいです。フォルダの中にはテキストファイルが100ほどあるので、結果、エクセルファイルが20できればいいのですが。。 できればデスクトップに新しいフォルダが作成されてその中に出力されていくようにしたいです。 お力を貸してください。よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセルのデータをTAB区切りテキストに出力
エクセルのデータをTAB区切りテキストに出力 1.エクセルのデータをTAB区切りテキストに出力して 2.そのテキストを入力としてrubyでデータ加工 という作業があります。現在1を手動で行っておりますが、ファイルが多いためこの操作をファイル名とシート名を指定してrubyから操作できればと考えております。 できれば追加でライブラリをインストールすることなく実現できればありがたいのですが、簡単な方法がございましたらご教示ください。 環境は、Win XP、Office 2003、ruby 1.9.1です。 最終的にはエクセルファイルから直接データを取得できるようにしたいのですが、当面は上記の方法で凌ぎたいと考えております。
- ベストアンサー
- Ruby
- VBからテキストファイル(タブ区切り)をエクセルで開く方法
VBからテキストファイル(タブ区切り)をエクセルで開く方法を探しています。CSVデータを出力する方法や、テキストファイルを読み込む方法等の情報はたくさんあるのですが、直接エクセルを起動し、それにテキストファイルを出力するのはなかなか見当たらない状況です。 質問の主旨は、もともと、参照ボタンを押下すると、選択されている指定のテキストファイルを保存するダイアログが出力される仕組みであったものを、どうせ開くのはエクセルだからと言うユーザーの要望から、参照ボタンクリックと同時にエクセルが起動し指定のテキストファイルをエクセルで開いて見ることができるように改造するといったものです。(参照のみですので読み取り専用で見たい) テキストファイルをドラッグしてエクセルシートに持っていけばタブを認識して格セルに分割して開いてくれるのですが、VBから同じような動作をさせることは可能なのでしょうか? よいヒントになるような情報でもかまいません うまく説明できずわかりにくいかも知れませんがご助言をお願いいたします。 【環境】 WindowsXP、VB6.0、EXCEL2002
- ベストアンサー
- Visual Basic
- エクセルで作ったデータをテキストに貼り付けたいです。
エクセルで作ったデータをテキストに貼り付けたいです。 Excelの表を範囲選択してコピーしてメモ帳/またはメールに貼り付けると、タブ区切りのテキストとして貼り付けられてしまいます。 そうなると、データがデコボコになりすごく見づらいです。 毎日使うので、すべての行を手作業でスペースを入れるのも大変です。 なにか方法等ご存知でしたらお教えいただけると助かります。 よろしくお願いいたします。
- 締切済み
- オフィス系ソフト
- VBAでEXCELから固定長のテキストデータにしたい
VBAにてEXCELに展開されたデータを固定長のテキストデータに落としたい。 EXCEL側の用件 (1)シート1にボタンを用意して、ボタンをクリックしたらテキストファイルを作成する処理にしたい。 (2)シート2にデータが展開されている。 列は10個程度、行は場合によりけり(MAX65536?) 固定長にする箇所とかはわかるのですが、ボタンクリックしたらシート2を見て、セル(もしくはrange)をどのように取得すればいいのかVBAがよくわからないのです。
- ベストアンサー
- その他(プログラミング・開発)
- エクセルのVBAでタブ区切りのテキスを出力したい。
エクセルのVBAでテキスト出力をしたいのですが、 ・タブ区切りで保存 ・A列の最終行×1行目の最終列の範囲指定が対象 ・範囲内の空欄もタブ区切りにする(最終列には必ず数値あり) ・出力テキストはシートと同じフォルダ内へ格納 ・テキストファイル名はシート名 という感じにしたいのです。 いろいろ検索はしているのですが、これといった回答やサンプルは 見つかっておりません(><) ちなみに、私は、自動記録をしたものを改良して少し使えるレベルです。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- VB6.0でTextファイルをExcel出力
お世話になります。 VB6.0でTextファイル(カンマ区切りのデータが入っているもの)をExcelに出力するものを作成しました。 基本的に読込んだファイルをArrayで型を指定してExcelに出力する形です。 ですが、印刷するときにA4横に収まらない長さになってしまったので、 Textファイルの1行のデータをExcelには2行にして出力させることは可能ですか? Textファイルのデータはこんなのです。 XXXX,SS,SS,AA,DD,WW,Fed,fk,aaa,aqee このような形で数百件入っています。 何か参考になりそうなものがあったら教えてください。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- エクセルのVBAについて
ある装置のデータをRS232C経由でMSCommを利用し、EXCELに直接取り込みたいのですが、そのデータにはタブ区切りが設定してあるのでEXCELの1つのセルに1区切りのデータごと出力されてほしいのですが、区切られず1つのセルにすべて出力されてしまいます。どうしたらよいのでしょうか宜しくお願いします。
- ベストアンサー
- Visual Basic
- EXCELのVBAでの他EXCELデータ取得&表示
EXCELのVBAを使い、実行したEXCELのシートに他のEXCELから読み込んだデータを取得&表示させたいと思っています。 取り込むEXCELファイルは、フォルダに格納された複数の同フォーマットのデータになります。 指定したフォルダの中の全てのEXCELファイルのデータを読み込んで、 実行したEXCELファイルのシートに複数行書き込んでいくような形になります。 機能として必要なのは以下の通りです。 ・取り込みファイルの保存されたフォルダの選択 ・選択したフォルダ内のファイルを開き、VBA側で設定した箇所のデータを読み込み、それを実行側のシートに出力する。(1ファイルにつき1行表示させる形。読込元と出力先のデータの位置関係は違います。色々入力されているファイルの必要部分だけを抜き出し、一行に出力する感じです) ・フォルダ内の全ファイルに対して同じ処理を繰り返す。(出力先の行は1行ずつ下にずれる) このようなVBAはどのように作ればよろしいでしょうか?
- 締切済み
- オフィス系ソフト
- テキストデータ量が膨大で、エクセルに取り込めない
テキストファイル形式で作成したデータをエクセルで読み込むようにデータ変換ができますが、そのデータ数量がレコード数(行)にして20万件あります。エクセルの1つのシートでは65,500行位だと思いましたが、これを何とか複数のシート、もしくは、別のファイル名に分けてエクセルに全て取り込めるようにはできないものでしょうか?それを一度、エクセルで加工後にアクセスにインポートしたいのです。もしくは、テキストデータをいくつかのファイルに分割できるのでしょうか? よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
補足
返答が大変遅くなり、申し訳ありませんでした。 丁寧にご回答頂いて本当に嬉しい限りなんですが...。 > 1、[挿入]-[標準ライブラリ]で作成します。 > 2、生成された<Module1>に全てをコピーします。 ANo.1とANo.4とご回答頂いた分のプログラム全てですか? Private Sub CommandButton1_Click() から解釈してANo.1の分のコードはシート記述の方だと思ってたんですが 。 結構こんがらがってよく分からなくなってます(-_-;) > なお、’FileSystem’として完備するには、次の関数もコピーされるといいでしょう。 は、Module1=FileSystem(リネーム後)にということですよね。