
データの整理をするように言われ作業をしていたのですが,時間がかかりすぎてしまい他の仕事が出来ません.
マクロを使えば作業時間を短縮できることが分かったのですが,簡単な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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの指数を無効にしたい
-
EXCELにcsv形式の外部データを...
-
複数のCSVファイルを横に並べて...
-
「ほかのアプリケーションを無...
-
excelインポート時の「実行時エ...
-
CSVファイルの結合(重複データ...
-
Excel VBAを使った複数のCSVフ...
-
datファイル→csvファイル→datフ...
-
CSVファイルをExcelで開くとき
-
海外の印刷所を使って入稿する...
-
複数のcsvファイルを1つのEXCEL...
-
VBAでCSVの1行目だけを書き換え...
-
複数のデータ系列の線の太さを...
-
Excelが勝手にシート移動してし...
-
昨日まで動いていたエクセルの...
-
ExcelVBAで今開いているユーザ...
-
エクセルでツールバーに「縮小...
-
マクロを消すマクロは不可能?
-
VBAを一度起動するとずっと出て...
-
Excel VBAで、実行時にsheet上...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの指数を無効にしたい
-
複数のCSVファイルを横に並べて...
-
VBAでCSVの1行目だけを書き換え...
-
excelインポート時の「実行時エ...
-
「ほかのアプリケーションを無...
-
複数のcsvファイルを1つのEXCEL...
-
EXCELにcsv形式の外部データを...
-
CSVファイルの結合(重複データ...
-
二つのCSVファイルを照らし合わ...
-
Excel VBAを使った複数のCSVフ...
-
大量のCSVデータを1つのエ...
-
複数個のascファイルを1つ...
-
【VBA初心者】同じフォルダ内の...
-
複数のCSVファイルからのデータ...
-
【エクセル VBA】CSVファイルの...
-
エクセルのcsvで、12e3を入れる...
-
VBAでユーザーフォーム上に参照...
-
CSVファイルがうまく開けない
-
Accessにエクセルからデータを...
-
エクセルでcsvデータを自動読み...
おすすめ情報