
データの整理をするように言われ作業をしていたのですが,時間がかかりすぎてしまい他の仕事が出来ません.
マクロを使えば作業時間を短縮できることが分かったのですが,簡単なBASICプログラムしか組んだことがなく困っております.
【やりたい事】
1→C:\データ1 というフォルダの中にある20個のascファイルをシート1にまとめ,次にC:\データ2 というフォルダの中にある20個のascファイルをシート2にまとめたい.(フォルダごとにシートを新しくしたい)
2→さらに,それぞれのシートで1個目のデータはA1から,2個目のデータはD1から…20個目はBF1からはじめるようにしたい
3→列の幅を調整して全ての文字が表示されるようにしたい
とりあえず,テキストファイルのインポートをやって記録してみたので載せておきます.
Sub Macro1()
'
' Macro1 Macro
'
'
With Selection.QueryTable
.Connection = _
"TEXT;C:\データ1\DATA1117.ASC"
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1)
.Refresh BackgroundQuery:=False
End With
End Sub
皆様,よろしくお願いします
No.2ベストアンサー
- 回答日時:
こんばんは。
>1→C:\データ1 というフォルダの中にある20個のascファイルをシート1にまとめ,
> 次にC:\データ2 というフォルダの中にある20個のascファイルをシート2にまとめたい.
今は、こちらでは、フォルダの中に何個のasc ファイルがあるのかは分かりませんので、シート自体は、ご自身で変更し、ファイルを選んでください。
ファイルオープンダイアログが開きますので、フォルダを選んで、その中で、Shift や Ctrl キーを押しながら、マウスで選択しますと、複数のファイルが選択されます。(注:選択した順に、読み込んでいきます。)
QueryTable は、そのまま、生かしてあります。
>3→列の幅を調整して全ての文字が表示されるようにしたい
これは、デフォルフの機能としてはあるはずですが、もう一度、AutoFit で列に対して行いました。
もしかしたら、幅を調整することの意味が違っているかもしれません。
'標準モジュールに入れるのが良いです。
Sub ImportFileQT()
Dim Fnames As Variant
Dim fn As Variant
Dim i As Integer
Dim j As Integer
Dim prtPath As String '現在のパス
prtPath = ThisWorkbook.Path
ChDir "C:\"
' ChDir "C:\データ1\" 'データを取得するパス
'マルチセレクト設定
Fnames = Application.GetOpenFilename("ASCファイル(*.asc),*.asc,全てのファイル(*.*),*.*", , , , True)
If VarType(Fnames) = vbBoolean Then Exit Sub
With ActiveSheet
For i = 1 To UBound(Fnames)
'列の256 を超えたとき
If i > 86 Then MsgBox "それ以上は、インポートできません。", vbCritical: Exit Sub
With .QueryTables.Add(Connection:= _
"TEXT;" & Fnames(i), Destination:=.Cells(1, (i - 1) * 3 + 1))
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1)
.Refresh BackgroundQuery:=False
.Delete
End With
Next i
For j = 1 To .UsedRange.Columns.Count
.Columns(j).AutoFit
Next j
End With
ChDir prtPath
End Sub
Wendy02さん,早々のご回答ありがとうございます.
実行してみたところ,上手くいきました!
ありがとうございます.
プログラム中の注釈(?)で何について記述されているのかがなんとなくわかりました.(←初めてなので完璧には理解できていません)また,ファイルの選択手順なども丁寧に説明していただきありがとうございます.
ファイル選択にすることで汎用性がありますね.他のデータ整理にも使えそうです.
ちなみに256列を超えるように(87個のファイルを)インポートしたら
"それ以上は、インポートできません。"
のメッセージでました.
これで徹夜せずにすみそうです.本当にありがとうございました.
No.1
- 回答日時:
こんにちは。
ちょっと、情報が足りないようですが。
まず、ASCファイルってなんですか? ASCII ファイルのことですか?もし、拡張子、.ascでしたら、たぶん、QueryTable などでは開かないと思います。それは、ASCII ファイルではありませんから。
ASCII ファイルというのは、ASCII コードで出来上がったファイルのことですが、それなのでしょうか?単なるテキストファイルか、CSVファイルではありませんか?
QueryTable とか、コードの雰囲気からして、Excelのような気がしますが、お使いのアプリケーションの名前は書いてほしいです。
TextQualifier = xlTextQualifierDoubleQuote
CommaDelimiter = True
としているので、"abcd","efgh"
のようなファイルの内容を想定しているようです。
こちらの推測で、進めてもうまくいかないような気がします。
もう少し、インポートするデータなど、詳しい情報をお願いします。
この回答への補足
早速の対応ありがとうございます.
情報が足りませんでした.失礼しました.
使用ソフトはOS:win2000pro,アプリケーション:エクセル2000です.インポート先はエクセルです.
ファイルのプロパティを見ると「ファイルタイプ:ASCファイル」と表示されております.また,拡張子は.ascとなっています.
ASCIIファイルかテキストファイルか,あるいはCSVファイルなのかは私には区別する方法が分からないのですが,メモ帳で開いたときは次のように表示されています.
1,0.008,65
2,0.000,65
3,-0.012,65
4,0.000,65
5,0.012,65
6,0.153,0.66
7,0.032,65
8,0.052,0.66
9,0.028,0.66
(このような数字の羅列が2000行程度続きます)
よろしくお願いします.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2002のおせっかい機能につ...
-
OUTLOOKのスケジュール...
-
Excelで複数の他のファイルから...
-
Excelのグラフ、データ範囲につ...
-
エクセル2003 CSVファイルの取...
-
日付の入ったタイトルのファイ...
-
Excelで、任意のCSVファイ...
-
EXCELで外部データの取り込みが...
-
各ファイル中データの張付け操...
-
Excel VBAを使った複数のCSVフ...
-
複数の同じ様式のエクセルデー...
-
VBAでパスを取得しファイル名を...
-
エクセルの指数を無効にしたい
-
エクセルマクロで、他ブックの...
-
コントロールツールボックスの式?
-
エクセル マクロ WEBエクセル...
-
エクセルのマクロでこんな風に...
-
マクロ
-
エクセル2007で、マクロを使う...
-
エクセルのブックを保存すると...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のCSVファイルを横に並べて...
-
excelインポート時の「実行時エ...
-
エクセルの指数を無効にしたい
-
VBAでCSVの1行目だけを書き換え...
-
「ほかのアプリケーションを無...
-
複数のcsvファイルを1つのEXCEL...
-
EXCELにcsv形式の外部データを...
-
VBAでユーザーフォーム上に参照...
-
複数個のascファイルを1つ...
-
【エクセル VBA】CSVファイルの...
-
二つのCSVファイルを照らし合わ...
-
【VBA初心者】同じフォルダ内の...
-
EXCELLの動きが遅い
-
CSVファイルの結合(重複データ...
-
Excel VBAを使った複数のCSVフ...
-
大量のCSVデータを1つのエ...
-
datファイル→csvファイル→datフ...
-
Accessにエクセルからデータを...
-
エクセルの並べ替えが・・・
-
複数のCSVファイルからのデータ...
おすすめ情報