• 締切済み

Image Jのマクロについて。

Image Jのマクロについて。 Image j初心者です。 現在、特定のフォルダ内にある複数枚の画像を同時に解析して、解析した結果をcsvファイルに保存する作業を行っています。 画像が大量にあるためマクロを組んで自動化したいのですが、「結果を”選択したフォルダ名.csv”という名前にして、特定の場所に保存する」というコードが書けません。 かみ砕いて書くと以下のような感じです。 ・1つのフォルダ内に画像が複数枚ある。 ・これらの画像を解析した結果は1つのcsvファイルに保存する(つまり1フォルダにつき1つのcsvファイルが生まれる)。 ・このようなフォルダが複数あり、それぞれのフォルダ名とcsvファイル名を対応させたい。 ・こうしてできた複数のcsvファイルをある特定のフォルダ内にまとめて保存したい。 どなたかご存知の方、よろしくお願いいたします。 ちなみに現在のコードはこのような感じです。 色々なサイトのコードを貼り付けているだけなので、自分でも一つ一つのコードが何を意味しているのかはわかりませんが、 1.解析したい画像群のフォルダを選択する。 2.これらの画像をまとめて解析する。 3.解析した結果を表示する。 というところまでは自動でできています。        //Do something for selected folder showMessage("Select Open Folder"); openDir = getDirectory("Choose a Directory"); showMessage("Select Save Folder"); saveDir = getDirectory("Choose a Directory"); list = getFileList(openDir); for (i=0; i<list.length;i++){ operation(); }; print("Macro Finished"); //Define operations function operation(){ open(openDir+list[i]); name = getTitle; dotIndex = indexOf(name, "."); title = substring(name, 0, dotIndex); run("8-bit"); setAutoThreshold("Intermodes dark"); //run("Threshold..."); setOption("BlackBackground", true); run("Convert to Mask"); run("Watershed"); run("Analyze Particles...", "size=5-Infinity display include add"); newname = title+"_analyzed_.jpg"; rename(newname); saveAs("Jpeg", saveDir+newname); close(newname); }

みんなの回答

  • wek00
  • ベストアンサー率62% (90/145)
回答No.1

質問文のコードをざっと見た感じでは。 既存のほとんどの変数は文字列データのようですね。 「"」でくくったものは文字列として扱われ、 「+」で文字列の結合ができる模様。 getDirectory が返すデータは  The returned path ends with a file separator だそうですので、出力csvファイル名は入力ファイルのディレクトリ(=フォルダ)パスから末尾のディレクトリ区切り文字とその一つ前の区切り文字の間にある文字列を切り出せばいいようです。 文字列の切り出しは substring ででき、文字列の中から文字を探すには indexOf関数が使えます。末尾から走査する lastIndexOf というのがあるそうなので、これを使えばより簡潔に書けそうです。文字列長は lengthOf でも調べられるようなのでこれを使ってもいいでしょう。 以上の組み合わせで実現できそうですね。 print(文字列); は文字列を "Log" window に出力する関数だそうですので、 所望のパス名にできたか予め検証できるでしょう。 参考 [1] https://imagej.nih.gov/ij/developer/macro/functions.html  Built-in Macro Functions  substring imagejでぐぐって上位に出た公式らしきページ。  String Functions の項も一通り参照。 [2] http://www.tohoho-web.com/ex/draft/path.htm  パス名について - とほほのWWW入門

関連するQ&A

  • 名前の取得のマクロ

    マクロを使って、ファイルの保存をしようと考えています。 CSVファイルをコピーして、Excelファイルに貼り付けて、名前を付けて保存する。 という流れの処理を考えています。 そこで、CSVファイルの名前を取得して、その名前を Excelファイルの名前にしたいのですが、上手くいきません。 Dim filname As String Application.FindFile filname = ActiveWorkbook.Name Namezu = ActiveWorkbook.Name Cells.Select Selection.Copy Windows("000.xls").Activate Sheets("測定データ").Select ActiveSheet.Paste '名前を付けて保存   ActiveWorkbook.SaveAs Filename:= _ "C:\新しいフォルダ\filname.xls", FileFormat:=xlNormal

  • このようなエクセルマクロを組みたいのですが...

    下記のようなマクロを組みたいと思っていますが、 知見がほとんどないので教えていただきたいと思います。 "csv"というフォルダにランダムなファイル名でcsv形式のファイルが100以上保存されています。 目的は、 そのcsvファイル内の一部のデータをひとつのファイル(ファイル名を"まとめ"とします)に移して並べたいと思います。 <前提> "csv"フォルダと"まとめ"ファイルは既に開かれている状態とします。 "まとめ"ファイルを開いた状態で、マクロを走らせると、 (1)csvファイルが開く (2)セルA1とB1をコピー (3)"まとめ"ファイルのA1、A2へ貼り付け(行と列を変更) (4)csvファイルを閉じる (5)次のcsvファイルが開く (6)セルA1とB1をコピー (7)"まとめ"ファイルのB1、B2へ貼り付け(行と列を変更) (8)csvファイルを閉じる 以降、"csv"フォルダの中身をすべて処理できるまで繰り返し。 という風に考えていますが、 当方あまり知識が無くアレンジが難しいためできる限りシンプルにと考えています。 そのため、もしこうした方が...等あればアドバイスいただけるとありがたいです。 すみませんがよろしくお願いいたします。

  • 「dbf」「csv」などをマクロで「xls」に一括変換する方法

     お世話になっております。 タイトルの通りの質問なのですが、拡張子「dbf」「csv」などのエクセルで開けるファイルをマクロで「xls」に一括変換する方法が分からなかったので質問させていただきました。 まずやり方としてなのですが、 1:「dbf」もしくは「csv」ファイルをフォルダから選び開く。 2:何も変更せずにファイル→名前を付けて保存ボタン 3:ファイル名を変更せずに保存拡張子を「Microsoft Office Excel ブック(*.xls)」に変更し保存。 4:Excelブックを変更や保存せずに閉じる。 これだけの事なのですが、流石に200個ほどあるのでマクロで出来ないものかと思いまして質問させていただきました。 ・マクロを実行するとフォルダ選択にいき、新しく「xls」に変更したいファイルを選択し、実行すると「xls」が出来ている。と言うのが理想なのですが、そのような事は可能なのでしょうか? ・1つのフォルダに様々な箇所から集めた「dbf」や「csv」をまとめてありますので、どのファイルを選択するかの時に複数個選択出来ると非常に助かります。 ・「dbf」と「csv」両方対応していなくてもどちらかだけでも、構いません。 よろしくお願いします。

  • applescript 複数のファイルを一つに

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

    • ベストアンサー
    • Mac
  • VBA 複数ファイルを読み込んで、抽出

    VBA初心者です。どうぞよろしくお願いいたします。 <やりたいこと> 同じフォルダにある複数ファイル(logファイル)を順番に読み込み、 特定の文字が含まれている行だけを、別ファイル(sum.csv)に保存していきたい。 ファイルが多数あるため、VBAで処理できればと思っています。 急いでおり、今回は丸投げになりますが、どなたかコードを教えていただけますと 非常に助かります。 コードを見て、勉強させていただきます。 どうかよろしくお願いいたします。

  • マクロを使って簡単にファイルをフォルダへ移したい

    質問するのは初めてなのでわかりづらかったらすみません 「管理フォルダ」の中にある「0123」がついたファイルを 同じく「0123」とついたフォルダへ自動で移動させる コードなどがあれば教えていただきたいです できればフォルダ数が何個も増やせられると嬉しいです フォルダ数が500個以上になることがあるので 拡張子は「.csv」「.txt」がメインです どうぞよろしくお願い致します

  • マクロで使うfor文

    エクセルのマクロでforを使って、連番のファイルを読み込んで全く同じ操作をして、連番の番号で保存したいのですが、この場合のforの使い方が分かりません。 1test.csv 2test.csv 3test.csv と連番のファイルがあるとき、マクロで、 for i = 1 to 3 Workbooks.Open Filename:= _ "C:\1test.csv" ・ ・ ・ というように読み込んでそして何かしらの操作をして保存しようと考えているのですが、この場合、 "C:\1test.csv" この部分をどのように書き換えたらいいのかがわかりません。 どのように書き換えたらいいのでしょうか?保存方法はおそらく読み込み方法と同じだと思うのですが。

  • エクセル マクロの記述(フォルダーの移動、削除)

    現在開いているエクセルのファイルにマクロを記述し、 1 「処理済」というフォルダーに、開いているエクセルファイルを移動して、同じ名前でエクセルを保存する。 2 「CSV」というフォルダーに、開いているエクセルファイルをCSVファイルに変換して名前を「処理.csv」とし保存する。 3 現在開いているエクセルファイルは削除する。 以上の三つの処理をさせようと、以下のようにしましたが、1,2の処理は出来ましたが、3の開いているエクセルファイルが残ってしまいます。 以上三つの処理が一度に出来るマクロの記述を教えて下さい。 よろしくお願いします Sub マクロ() ActiveWorkbook.SaveAs Filename:="C:\処理済\" & ActiveWorkbook.Name ChDir"C:\CSV" ActiveWorkbook.SaveAs Filename:= "C:\CSV\処理.csv" _ , FileFormat:=xlCSV, CreateBackup:=False Application.DisplayAlerts = False If Workbooks.Count = 1 Then Application.Quit Else ActiveWorkbook.Close End If Application.DisplayAlerts = False End Sub

  • このEXCELマクロのコードを、教えて下さい。

    恐れ入ります。初心者です。WinXP、Excel 2002を使用。VBAコードは読めません。 1、フォルダ名(入力用フォルダ1)に R02061701.CSV  R02061702.CSV ~R020617012.CSV の下2桁のみ昇順になってるファイル12個があります。 各ファイルの最後尾(全ファイル100行以内)の行から「3行目データだけ」かつ「F列以降」を 列方向昇順に並べ変えて、 ブック名(入力用ブック1.xls)のB3、B6、…B36へと2つ置きに12個を表示させる。 2、次に、フォルダ名(入力用フォルダ2)にも R03062701.CSV~R03062712.CSV の下2桁のみ昇順になってるファイル12個があります。 1と同様に ブック名(入力用ブック1.xls)のB4、B7、…B37へと2つ置きに表示させる。 3、次に、フォルダ名(入力用フォルダ3)にも  R08064701.CSV~R08064712.CSV  の下2桁のみ昇順になってるファイル12個があります。  1と同様に  ブック名(入力用ブック1.xls)のB5、B8、…B38へと2つ置きに表示させる。 結果、B3~B38まで全部うまります。  A   B    C   D    E   F    G   E  ・・・・  1 2 結果 1    2   3    4   5    6   7  ・・・・ 3 1 4 1 5 1 6 2 7 2 8 2 9 3 . . . . 以上ですが、この内容でコード作成に無理な部分がおありでしたら、おっしゃってください。  修正は致します。

  • Excel マクロについて

    Excelで作成したシートを次の手順で保存できるようなマクロを作成したいのですがどうしたらいいでしょうか?  1)あらかじめ所定のフォーマットを用意しユーザーが入力できるようにする。  2)ユーザがボタンを押すとそのシートの上2行(1行、2行)と左1列(A列)が削除され、    (タイトル行なのでCSVにする際に不要な為。)  3)「名前を付けて保存」のダイアログボックスが表示し  4)保存先のフォルダが「X:\DATA\」となるようにし  5)ファイル名がその日付(yyyymmdd.csv)、CSV形式 (例:20031125.csv)となるようにし、    (ユーザーにても変更の可能性もあるので固定にはしない)  6)ユーザーが保存先、ファイル名等を確認語保存する。  7)保存後は元のEXCELシート(CSV形式でない)で開いた状態で終了とする。 自分でも作成したのですが、本当にこれでいいのかも疑問でご意見を教えて下さい。 特に、7)のところがうまくいかず、6)での保存後どうしても開いているファイルの状態が CSV状態になります。 以上、ご存知の方教えて下さい。  

専門家に質問してみよう