アプリ版:「スタンプのみでお礼する」機能のリリースについて

データの整理をするように言われ作業をしていたのですが,時間がかかりすぎてしまい他の仕事が出来ません.
マクロを使えば作業時間を短縮できることが分かったのですが,簡単な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

皆様,よろしくお願いします

A 回答 (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
 
    • good
    • 0
この回答へのお礼

Wendy02さん,早々のご回答ありがとうございます.
実行してみたところ,上手くいきました!
ありがとうございます.

プログラム中の注釈(?)で何について記述されているのかがなんとなくわかりました.(←初めてなので完璧には理解できていません)また,ファイルの選択手順なども丁寧に説明していただきありがとうございます.

ファイル選択にすることで汎用性がありますね.他のデータ整理にも使えそうです.
ちなみに256列を超えるように(87個のファイルを)インポートしたら
"それ以上は、インポートできません。"
のメッセージでました.

これで徹夜せずにすみそうです.本当にありがとうございました.

お礼日時:2006/09/11 21:10

こんにちは。



ちょっと、情報が足りないようですが。

まず、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行程度続きます)

よろしくお願いします.

補足日時:2006/09/11 16:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!