マンガでよめる痔のこと・薬のこと

よろしくお願いします。

デスクトップに Aフォルダ があります。
その中に 20120103.csv というタイムスタンプ形式のcsvファイルが複数あります。(中の項目は同じです。)
その複数のファイルを一つのcsvファイルにまとめるアップルスクリプトのコードを教えてもらえませんか?

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

お待たせしました。


案の定、No.3にはミスがありました(汗
動作確認済みの以下のスクリプトをお試し下さい。
このままでも動作しますし、必要なら適宜書き換えてご自分のAppleScriptに組み込んでご利用下さい^-^



--catコマンドを用いて指定フォルダ内のCSVを結合するAppleScript
--条件:各CSVの最終行に改行があること(ないと変な形でつながる)。
--動作確認:OSX10.6.8, 作成:2013.1.3, 作成者:w6o6n

set aFolderPath to choose folder with prompt "フォルダを選択して下さい"
set aPath to quoted form of POSIX path of aFolderPath as text
set aSaveName to text returned of (display dialog "保存するcsvのファイル名を入力して下さい" default answer "")
do shell script "cat " & aPath & "*.csv > " & aPath & aSaveName & ".csv"
    • good
    • 0
この回答へのお礼

何度もありがとうございます。

明日には試しては、頑張ってみます。

お礼日時:2013/01/03 23:03

お待たせするのも何なので、とりあえず下書きを公開します(動作未確認の暫定版)。


これで動けば良いのですが…
エラーがあれば後で訂正します。

set aFolderPath to choose folder with prompt "フォルダを選択して下さい"
set aSaveName to text returned of (display dialog "保存するcsvのファイル名を入力して下さい")
set aCommand to ("cat " & POSIX path of aFolderPath & "*.csv > " & aSaveName & ".csv") as text
do shell script aCommand
    • good
    • 0
この回答へのお礼

ありがとうございます。

今手元に環境がないため、明日すぐに試します!

本当にありがとうございます。

お礼日時:2013/01/03 21:10

ちょっと書き足すだけでできますよ^-^


今確認できないので、夜までお待ち下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。

よろしくお願いします。

お礼日時:2013/01/03 18:42

AppleScriptではありませんが…以下の方が簡単です。



ターミナルを起動して、

cd Aフォルダ

と入力します(「Aフォルダ」とタイプするのではなく、Aフォルダのパスを入力します。Aフォルダをコピーしてこの部分にペーストすると簡単です)

次に
cat *.csv > matome.csv

と入力すれば、Aフォルダ内の.csvを一つのcsvファイル(matome.csv)にまとめることができます。

AppleScriptでラップすることもできますので、必要なら頑張ってみて下さい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

そのやり方は知っていたんですが、どうしてもアップルスクリプトで実行させたかったもので、
説明不足ですいません。

お礼日時:2013/01/03 17:16

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QOSX用のファイル結合ソフト

OSX用のファイル結合ソフトをご存知の方、いらっしゃいませんでしょうか。
使用は複数のテキストファイルを1つにする結合です。

Aベストアンサー

「Automator」を使ってみますか?
Automartorは、Mac OS X 10.4以降に付属しているアプリケーションです。自動化処理を行うツールを作成します。

Automatorを起動します。
ウィンドウ左側の「ライブラリ」からFinderを選択し、「アクション」から「Finder 項目の選択を求める」を、ウィンドウ右側のワークフロー欄にドラッグします。
「タイプ:」をフォルダにします。そのほかの設定項目は、ご自由に。
つぎに、「ライブラリ」からFinderを選択し、「アクション」からフォルダの内容を取得」をドラッグします。
つぎに、「ライブラリ」をテキストエディットにし、「アクション」から「テキストファイルを結合」をドラッグします。
つぎに、「ライブラリ」をテキストエディットにし、「アクション」から「新規テキストファイル」をドラッグします。設定項目はご自由に。
ウィンドウ右上の「実行」ボタンを押して、意図どおりに動作するか、確認します。
ファイルメニューの「保存」か「別名で保存」で、「フォーマット:」をアプリケーションにして、保存します。

「Automator」を使ってみますか?
Automartorは、Mac OS X 10.4以降に付属しているアプリケーションです。自動化処理を行うツールを作成します。

Automatorを起動します。
ウィンドウ左側の「ライブラリ」からFinderを選択し、「アクション」から「Finder 項目の選択を求める」を、ウィンドウ右側のワークフロー欄にドラッグします。
「タイプ:」をフォルダにします。そのほかの設定項目は、ご自由に。
つぎに、「ライブラリ」からFinderを選択し、「アクション」からフォルダの内容を取得」をドラッグし...続きを読む

Q大量のCSVデータを1つのエクセルデータにまとめる方法について

今仕事で、CSVファイルが400ファイル程あり、これを一つの
エクセルファイルにまとめなくて加工しなければならないのですが
うまいことVBAを活用して効率的にできないか思案中なのですが
うまい具合に行きません。
データの持ち方として
○CSVファイル1
1.AAA
2.BBB

○CSVファイル2
3.CCC
4.DDD

となっており、これを1つのエクセルファイル上で
1.AAA
2.BBB
3.CCC
4.DDD
としたいのですがなにかいい方法はないでしょうか?
1つのブックで外部データの取り込みでCSVを次々に選択して
いくVBAなんてあれば教えていただけないでしょうか?
よろしくお願いします。

Aベストアンサー

こんにちは。
昔書いた事があるサンプルです。
同一フォルダにあるcsvファイルをまとめて処理します。

Sub CSVまとめsample()
  Dim MyObj As Object
  Dim MyFol As String
  Dim MyFnm As String
  Dim MyStr As String
  Dim i   As Long
  Dim n   As Long
  Dim n1  As Long
  
  'フォルダを選択する
  Set MyObj = CreateObject("Shell.Application") _
    .BrowseForFolder(0, "SelectFolder", 0)
  '選択なければ処理を抜ける
  If MyObj Is Nothing Then Exit Sub
  MyFol = MyObj.self.Path & "\"
  MsgBox MyFol & "を処理します。"
  Set MyObj = Nothing
  Application.ScreenUpdating = False
  'ThisWorkbookにシートを追加して処理
  With Sheets.Add
    'Dir関数を使って指定フォルダ内csvファイルを順次処理
    MyFnm = Dir(MyFol & "*.csv")
    Do Until Len(MyFnm) = 0&
      i = i + 1
      'データエリアを取得してセット先を変更
      n = IIf(n = 0, 1, n + n1)
      '外部データ取り込みを利用
      With .QueryTables.Add(Connection:="TEXT;" & MyFol & MyFnm, _
                 Destination:=.Range("B" & n))
        .AdjustColumnWidth = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 1
        .TextFileCommaDelimiter = True
        .Refresh False
        n1 = .ResultRange.Rows.Count
        .Parent.Names(.Name).Delete
        .Delete
      End With
      'ファイル名をA列にセット
      .Range("A" & n).Resize(n1).Value = MyFnm
      '次のファイルへ
      MyFnm = Dir()
    Loop
  End With
  If i > 0 Then
    MyStr = i & "個のファイルを処理しました。"
  Else
    '検索結果が0なら
    MyStr = "検索条件を満たすファイルはありません。"
  End If
  Application.ScreenUpdating = True
  MsgBox MyStr
End Sub

#シート行数をオーバーした時のエラー処理などはしてないので
#うまくいかなかったらごめんね^ ^;

こんにちは。
昔書いた事があるサンプルです。
同一フォルダにあるcsvファイルをまとめて処理します。

Sub CSVまとめsample()
  Dim MyObj As Object
  Dim MyFol As String
  Dim MyFnm As String
  Dim MyStr As String
  Dim i   As Long
  Dim n   As Long
  Dim n1  As Long
  
  'フォルダを選択する
  Set MyObj = CreateObject("Shell.Application") _
    .BrowseForFolder(0, "SelectFolder", 0)
  '選択なければ処理を抜ける
  If MyObj Is Nothi...続きを読む

Q複数のCSVファイルを読み込んで複数シートを1ブックとしたい

始めまして。
VBA初心者です。
2枚のCSVファイルをダイアログで各々指定し、保存する2枚のシートを1ブックにまとめたいのですが、うまくいきません。
現状は以下のようなマクロですが、別々のシートとなります。
よろしくお願い致します。

Sub 選択されたPDPファイルを開いて読み込む()
With Application.FileDialog(msoFileDialogOpen)
.Title = "ファイルを選択して[OK]ボタンをクリックしてください"
.AllowMultiSelect = False '複数選択不可
.Filters.Clear
.Filters.Add "1枚目", "*.csv", 1
If .Show = -1 Then .Execute 'キャンセルでなければ開く
End With

With Application.FileDialog(msoFileDialogOpen)
.Title = "2つめのファイルを選択して[OK]ボタンをクリックしてください"
.AllowMultiSelect = False '複数選択不可
.Filters.Clear
.Filters.Add "2枚目", "*.csv", 1
If .Show = -1 Then .Execute 'キャンセルでなければ開く


End With
End Sub

始めまして。
VBA初心者です。
2枚のCSVファイルをダイアログで各々指定し、保存する2枚のシートを1ブックにまとめたいのですが、うまくいきません。
現状は以下のようなマクロですが、別々のシートとなります。
よろしくお願い致します。

Sub 選択されたPDPファイルを開いて読み込む()
With Application.FileDialog(msoFileDialogOpen)
.Title = "ファイルを選択して[OK]ボタンをクリックしてください"
.AllowMultiSelect = False '複数選択不可
.Filter...続きを読む

Aベストアンサー

こんにちは。

こちらにはレスはつかないかもしれませんが、コードを出しておきます。
ファイルオープン・ダイアログで、複数のCSVファイルを選択してください。
マルチセレクトにしてあります。


'標準モジュール

Sub CSVImportSheets()
Dim FileNames As Variant
Dim fn As Variant

 FileNames = Application.GetOpenFilename _
  ("CSV(*.csv),*.csv", MultiSelect:=True)
 If VarType(FileNames) = vbBoolean Then Exit Sub
 
 For Each fn In FileNames
  Worksheets.Add After:=Worksheets(Worksheets.Count)
  With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;" & fn, _
    Destination:=Range("A1"))
    .Name = ActiveSheet.Name
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SaveData = True
    .AdjustColumnWidth = False
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 932
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
  End With
    ActiveSheet.UsedRange.QueryTable.Delete
 Next fn
End Sub

こんにちは。

こちらにはレスはつかないかもしれませんが、コードを出しておきます。
ファイルオープン・ダイアログで、複数のCSVファイルを選択してください。
マルチセレクトにしてあります。


'標準モジュール

Sub CSVImportSheets()
Dim FileNames As Variant
Dim fn As Variant

 FileNames = Application.GetOpenFilename _
  ("CSV(*.csv),*.csv", MultiSelect:=True)
 If VarType(FileNames) = vbBoolean Then Exit Sub
 
 For Each fn In FileNames
  Worksheets.Add After...続きを読む


人気Q&Aランキング