ファイルA1,A2,・・・A9,b1,b2・・・と百個くらいファイルがあって、
それを別フォルダにひらがなでわかりやすい名前をつけて保存したいです
A1は商品○○、A2は商品▲▲、・・・というような感じです。
月初にこの作業を行っています。
いつもa1~全部そろっているわけではなくA2がなかったり、B5がなかったりいろいろです。
毎月の作業で面倒なので自動化したいのですが
どのようにしたらいいのでしょうか?

1個1個ファイルを開いて、名前をつけて保存する、という作業で組んでみましたが
ファイルがないところでエラーになってしまいました。
また、1個1個ファイルを開いて、保存、という作業を100回位繰り返して書いてみたんですが
もっとスマートな書き方はあるんでしょうか?

よろしくお願いいたします。

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

A 回答 (5件)

エラーで閉じちゃうのは、強制終了されるって事?


皆さんの回答で問題は無いと思うのですが、、、
原因は別の所にあるのでは?

まずはシンプルな環境でテストしましょう。

1.適当なフォルダを作り、Book1.xls と Book3.xls を置きます。
2.新規ブックに下記のマクロを記述して上記と同じフォルダに
  保存(必須)します。(ファイル名は Test.xls とする)

'-------------------------------------------------------------
Sub Test_File_Copy()
Dim myPath As String, myFolder As String

 myPath = ThisWorkbook.Path & "\"
 myFolder = myPath & "Temp"

 'コピー格納用のフォルダを作成
 If Dir(myFolder, vbDirectory) = "" Then MkDir myFolder

 For i = 1 To 3
  If Dir(myPath & Cells(i, 1)) <> "" Then
    FileCopy myPath & Cells(i, 1), _
       myFolder & "\" & Cells(i, 2)
  End If
 Next i

End Sub
'-------------------------------------------------------------

3.Test.xls の Sheet1に下記のように記述してマクロを実行

A列       B列
Book1.xls   Ren1.xls
Book2.xls   Ren2.xls
Book3.xls   Ren3.xls

4.正常に行けば、フォルダ内に Temp フォルダが作成され、
  Book1.xls と Book3.xls が Ren1.xls と Ren3.xls と言う
  名前で Tempフォルダに格納されます。

上手くいかないようなら、ファイル名 や 既存ソースなどを提示
しましょう。

この回答への補足

5番の方の方法で無事解決することができました。
errorの方法もまったく知らなかった方法ですので
これからも使っていこうと思います。
今回のもどうしてエラーが出てしまったのか考えてみようと思っています。

5名様ともご親切に回答くださり、ありがとうございました。
これからもがんばって勉強していきます。
またの機会がございましたらよろしくお願いします。

補足日時:2005/04/16 21:37
    • good
    • 0
この回答へのお礼

早速お答えくださってありがとうございました。
とても丁寧でわかりやすく大変助かりました。
今は家からなので明日、会社にてテストしてみます。
(上のと同じのは今ためしにやってみました。問題なくできました)
何度もありがとうございます。

お礼日時:2005/04/14 23:27

毎月のファイル名がわかっていて同じようなパターンで変換するのなら、セル上に変換前と変換後のファイル名を書いておいてVBAでセルの読み出し、ファイルのリネームをループで行えばどうですか。


セルA1~ 旧ファイル名  セルB1~新ファイル名
on error goto ErrTap
for i=1 to 100
OrgFileName = cells(i,1)
NewFileName = cells(i,2)
Name OrgFileName As NewFileName
next i
on error goto 0
exit sub
ErrTap:
resume next

あまりにも雑なプログラムですが・・
    • good
    • 0
この回答へのお礼

丁寧にありがとうございました
とてもわかりやすかったです。
ほとんど同じようにやったのですが
エラー手前までは旨くできました。
前のずらずら長いものよりずっと見栄えがよくなりました。
しかし、エラーのところで処理が終わり、ファイルが
閉じてしまいます。
そのような命令文は一切なかったのですがerrorを使うとこういう事態が起こる事ってあるのでしょうか?

お礼日時:2005/04/14 21:54

#2さんも書かれているように Dir や FileSearch でフォルダ内のファイルを取得して処理すればエラーは回避出来ます。



それよりも

ファイル A1.xls → 商品○○.xls
ファイル A2.xls → 商品▲▲.xls

と命名するための基礎データが何処にあるのか不明です。
各ファイルを開く事で、決まったセルから「商品○○」や「商品▲▲」を取得出来るのですか?

この回答への補足

説明不足で申し訳ありません
ファイル名はもともとエクセルの中にあって、
エクセルにファイルa1→○○と書いてあります。
forを使って順番にファイルを指定することはできましたが
100個くらいある中で毎月ないものが異なるので
エラーがどうしても出ることになります。

補足日時:2005/04/14 21:38
    • good
    • 0
この回答へのお礼

errorのやり方でうまくいかないのでフォルダ内の・・・というやり方も考えようと思っています。
ありがとうございました。

お礼日時:2005/04/14 21:38

うまく理解出来ている状態ではありませんが・・・(私)



1.フォルダからファイル一覧(ファイル名)を取得
2.適当な変換テーブルからファイル名を取得
3.ファイルを、取得したファイル名で任意のフォルダにコピー
FileCopy "c:\tmp\OldData.txt", "c:\tmp\NewData.txt"

という手順ではいかがでしょうか?

参考URL:http://www.officetanaka.net/excel/vba/file/file0 …
    • good
    • 0
この回答へのお礼

私がやりたかったことです。
説明不足ですみませんでした。。。
参考URLとても参考になりました。
はじめ私がやろうと思っていた考え方でした。
明日この方法でチャレンジしようと思います。
ありがとうございました。

お礼日時:2005/04/15 00:02

エラーが生じとき、そこを飛ばして次に進むには、On Error GoTo ステートメントを使います。


簡単な例を書きますので、あとは応用してください。

つぎのプログラムは、a1.xls, a2.xls, a3.xls を、別の名前 b1.xls, b2.xls, b3.xls で保存します。
-------------------
Sub ファイル名変更()
  Dim i As Integer
  Dim wb As Workbook

  For i = 1 To 3
    Set wb = Workbooks.Open("C:\data\a" & i & ".xls")
    wb.SaveAs "C:\data\b" & i & ".xls"
    wb.Close False
  Next
End Sub
---------------------
ところが、たとえば a2.xls が無かったら、そこでエラーとなって止まります。

そこで、つぎのように変えます。
-------------------------
Sub ファイル名変更()
  Dim i As Integer
  Dim wb As Workbook

  On Error GoTo エラー処理

  For i = 1 To 3
    Set wb = Workbooks.Open("C:\at\a" & i & ".xls")
    wb.SaveAs "C:\at\b" & i & ".xls"
    wb.Close False
次のファイル:
  Next

Exit Sub

エラー処理:
  Resume 次のファイル

End Sub
-----------------------
このようにすると、エラーが生じたらそこを飛ばして次に進みます。ただし、エラーの原因は「ファイルが無い」だけでなく、他の原因のエラーでも次に進みますから、それを区別したければさらに工夫が必要です。

なお、プログラムの途中に On Error GoTo 0 と書くと、そこから先で生じたエラーは処理されず、普通にエラーメッセージを出して止まるようにできます。
    • good
    • 0
この回答へのお礼

丁寧にありがとうございました
とてもわかりやすかったです。
おかげさまでファイルを開くところが旨くできましたが、
エラーのところに来ると、開いたファイルがすべて閉じてしまいます。
そこまではきちんと動作しているようですがエラーのところから先はできていません。
どうしてこうなってしまうのでしょうか?

お礼日時:2005/04/14 21:28

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

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

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

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

Q「古い圧縮ファイル」の確認方法

Dドライブのディスクのクリーンアップをしたいのですが、実行できるものが、「古い圧縮ファイル」の削除しかありません。

「古い圧縮ファイル」がどのプログラムかを確認する方法を教えてください。

また、圧縮されたファイルの名前は青くなるらしいのですが、見つかりません。どうしてでしょうか
圧縮ファイルは1G弱あります。

Aベストアンサー

http://www.atmarkit.co.jp/fwin2k/win2ktips/106cleanup/106cleanup.html

初期設定では、50日以上アクセスの無かったファイルに対して、圧縮が行われます。
当然、圧縮してからでないと、ファイル名は青色にはなりませんので、ディスク・クリーンアップでの候補段階では、黒色のままです。


尚、設定によっては青色表示にならない場合も有りますけど。

http://121ware.com/qasearch/1007/app/nec.jsp?005084

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

Qファイルの圧縮方法

AVIやMPGの画像ファイルを圧縮する方法を教えてください。900mb位のファイルをCD-Rに落とし込める700mbまで圧縮したいんですが。できれば、zipやlzhなどの後で解凍しなくてはいけないような圧縮方法ではなく、多少画像が荒くなってもファイルを単純に縮小させるような方法を教えていただけると有り難いのですが。。
因みに、TMPGEncを試してみたんですが、どうもうまくいかなくて。。ファイルサイズが元のファイルより逆に大きくなってしまうんです。
すいませんが、宜しくお願いします。

Aベストアンサー

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450 450 くらいでカット。
対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331
ではでは!

追伸
カンタンにならrmファイルに変更かなあ
でも画質は落ちますよ
ネット配信 ストリーミング形式でどぞ!
RealplusG2とかRealEncoderで変換
でもaviでもないしmpegでもないですけど、どお?

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450...続きを読む

Qエクセルで同じA列の中に、1,2,3,4,5,6,2,3,4,2,1,3,2,2,2,3,1という

エクセルで同じA列の中に、1,2,3,4,5,6,2,3,4,2,1,3,2,2,2,3,1,3,1というような順番で数字が並んでいます。

その数字の中で、1→3と3→1になるものがいくつあるか求めたいのですが、出す関数・マクロがわかりません。
教えていただけないでしょうか?

よろしくお願いします。

Aベストアンサー

こんばんは!

>A列の中に
とは行方向に数値が入っている!というコトでしょうか?

そうであれば
表示したいセルに
=COUNTIFS(A1:A1000,1,A2:A1001,3)+COUNTIFS(A1:A1000,3,A2:A1001,1)
としてみてください。

「1」の次の行が「3」の場合と
「3」の次の行が「1」の場合をプラスしています。m(_ _)m

Qファイルの圧縮方法が解りません

窓の杜やベクター等に置かれている、フリーの圧縮、解凍ソフトをダウンロードしていますが、テキストファイルや、画像ファイルの圧縮方法が解りません。何方か教えて頂けませんか?

Aベストアンサー

ソフトの開発者のサイトで質問することをお奨めします。

ソフトごとに操作方法が異なりますので、使用しているソフト名すらない状態では誰も必要とする回答を出せません。

窓の杜やベクターでは開発者のサイトへのリンクがありますから、そこからアクセスできますよ。

Q=IF(A1<10,TEXT(A1,"0.0"),A1) に<1の時を加えたい

よろしくお願いします。いつもお世話になっています
エクセルは2013です
下記の式1と式2を1つの式で表現したいのですが、どう書いたらいいでしょうか
なんか無理そうな気がしますが、方法があれば教えてください

式1
=IF(A1<10,TEXT(A1,"0.0"),A1)
式2
=IF(A1<1,TEXT(A1,"0.00"),A1)

Aベストアンサー

=IF(A1<1 ,TEXT(A1,"0.00") ,IF(A1<10 ,TEXT(A1,"0.0") ,A1) )

「1より小さい」の条件が成立していなければ、そのまま「10より小さい」の条件で比較。

Qpsdファイルの圧縮方法

psdファイルの圧縮方法を教えてください。(基本的質問で恐縮ですが)
win98です。なお、ファイルは9MB程度ですが、圧縮したものを解凍する際、鮮明度が落ちずに元通りの画像で開けますでしょうか?

Aベストアンサー

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (デフォルトでは 1.2MB を上限として分割される。)
   (このサイズは +Lhaca で変更できる。)
 5. (4)のファイル全てを、容量を超えないようにメールに添付して送信
   する。
   (添付ファイル総数を本文に明記すること。)
 6. 受け取った側は、全ての添付ファイルを一箇所に集めて、バッチファ
   イルを実行する。
   (操作手順は、本文に明記すること。)
 7. 分割されたファイルが結合されるので、結合された圧縮ファイルを解
   凍する。
 8. 9MBのファイルが解凍されるので、作業する。


これでどうかな!?

※他の圧縮ソフトも分割機能が備わっていると思うが・・・

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (...続きを読む

QEzcel 2003で、A1,A2,・・・A10,A12の並びかは?

Ezcel 2003で、A1,A2,・・・A10,A12を、並び替えすると、A1,A10とA1の次にA10が来てしまいます。これを、A1,A2,・・・A10,A12のようにするには、どうしたら良いのでしょうか?
よろしくお願い致します。

Aベストアンサー

A01,A02,・・・A10,A12
として、桁数を揃える必要があります。

QNTFS圧縮したファイルを全部まとめて戻す方法

NTFS圧縮したファイルをプロパティからひとつひとつチェックをはずして戻すのではなく、圧縮されたファイルを全部まとめて元に戻す方法ってあるのでしょうか?

Aベストアンサー

圧縮を解除したいファイルを全て選択した状態で
→プロパティ→NTFS圧縮のチェックを外す→OK

それらのファイルがフォルダに入っているなら
フォルダのプロパティからやってもいい。
(サブフォルダにも適用するか尋ねられるからOKにする)

QExcelでの表編集でC1に =IF(A1="",B1,A1)

Excelでの表編集でC1に =IF(A1="",B1,A1)
と以前文字データのある列A1、B1、2つからそれぞれ穴あき
を補いc1に表示する式=IF(A1="",B1,A1)を教えていただいたのですが
2列まではこの式で行けるのですが3列以上に対応させる記述が
分かりません。
3列以上の表示を一列にまとめる式を教えてください。
お願いします。

Aベストアンサー

条件が良く判りませんが?

セルB1が空白のとき、セルC1をセルD1に表示
という条件を追加すると
=IF(A1="",IF(B1="",C1,B1),A1)

こんな感じですが、イメージと違う場合は補足してください。


人気Q&Aランキング

おすすめ情報