Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8695 / 13644 ツリー ←次へ | 前へ→

【31654】ブックに新たな名前をつけて別のフォルダへ保存 夜更かし野郎 05/11/27(日) 19:45 質問[未読]
【31656】Re:ブックに新たな名前をつけて別のフォル... かみちゃん 05/11/27(日) 20:04 回答[未読]
【31701】Re:ブックに新たな名前をつけて別のフォル... 夜更かし野郎 05/11/28(月) 20:41 お礼[未読]
【31685】Re:ブックに新たな名前をつけて別のフォル... Kein 05/11/28(月) 14:11 回答[未読]
【31702】Re:ブックに新たな名前をつけて別のフォル... 夜更かし野郎 05/11/28(月) 20:48 お礼[未読]
【31718】Re:ブックに新たな名前をつけて別のフォル... ぱっせんじゃー 05/11/29(火) 11:38 発言[未読]
【31733】Re:ブックに新たな名前をつけて別のフォル... 夜更かし野郎 05/11/29(火) 14:20 お礼[未読]

【31654】ブックに新たな名前をつけて別のフォルダ...
質問  夜更かし野郎  - 05/11/27(日) 19:45 -

引用なし
パスワード
   いつも、お世話になっています。
簡単な質問かも知れませんが、何卒お知恵をお貸しください。


全国の支社から、定期的に送られてくる報告資料の数値を集約するマクロを
作成しようと努力しています。
1.というフォルダに毎回報告されてくるエクセルのブックを保存していきます。

集約する一覧表にマクロを作成しています。

1.に存在する数多くのブックを開き、特定箇所をコピーして
一覧表にペーストします。

この板を参考に

  Dim MyF As String
  Const Ph As String = "C:\Documents and Settings\tie\デスクトップ\1."
  
  MyF = Dir(Ph & "\*.xls")
  Application.ScreenUpdating = False
  Do Until MyF = ""
    Workbooks.Open Ph & "\" & MyF
    
    <処理内容>コピー&ペースト
    
    ActiveWorkbook.Close True
    MyF = Dir()
  Loop
  Application.ScreenUpdating = True

というコードを書きました。


ここまでは、なんとかできましたが、
以下の作業を加えたいと思います。

コピー&ペーストを終えた段階で、報告されたブックの名前に
処理した日付を加えて、別の2.というフォルダに保存をする。
例)○○報告フォーム【A支店】というブックを
  →○○報告フォーム【A支店】20051127


他力本願で申し訳ありませんが、アドバイスをお願い致します。

【31656】Re:ブックに新たな名前をつけて別のフォ...
回答  かみちゃん  - 05/11/27(日) 20:04 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>コピー&ペーストを終えた段階で、報告されたブックの名前に
>処理した日付を加えて、別の2.というフォルダに保存をする。
>例)○○報告フォーム【A支店】というブックを
>  →○○報告フォーム【A支店】20051127

以下のような感じでできると思います。
Constステートメントも、少しだけ記述を変えて工夫をしています。

 Dim MyF As String
 Const Ph As String = "C:\Documents and Settings\tie\デスクトップ\"
 
 MyF = Dir(Ph & "1.\*.xls")
 Application.ScreenUpdating = False
 Do Until MyF = ""
  Workbooks.Open Ph & "1.\" & MyF
  
  '<処理内容>コピー&ペースト
  
  ActiveWorkbook.SaveAs Filename:= _
   Ph & "2.\" & Replace(ActiveWorkbook.Name, ".xls", "") & Format(Date, "yyyymmdd"), _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
     CreateBackup:=False
 
  ActiveWorkbook.Close True
  MyF = Dir()
 Loop
 Application.ScreenUpdating = True

>全国の支社から、定期的に送られてくる報告資料の数値を集約するマクロを
>作成しようと努力しています。
>1.というフォルダに毎回報告されてくるエクセルのブックを保存していきます。
>
>集約する一覧表にマクロを作成しています。
>
>1.に存在する数多くのブックを開き、特定箇所をコピーして
>一覧表にペーストします。

私も同様のことをしていますが、特定のシートの特定のセルのだけ持ってくる
のであれば、ファイルを開かなくても、ブックへのリンク参照式を埋め込んで
取得するという方法もあります。
その場合は、ファイルをコピーすればいいだけです。

でも、いずれにしても、名前が違うだけで内容が同じのブックを保存するのは、
効率いいのでしょうか?
たぶん、処理したかどうかの管理だとは思いますけど・・・
処理前のブックを残しておく必要があるのかな?と思いました。

【31685】Re:ブックに新たな名前をつけて別のフォ...
回答  Kein  - 05/11/28(月) 14:11 -

引用なし
パスワード
   ファイルを"リネームした上で移動"するコードに変更するなら


  Dim MyF As String, MyF2 As String
  Const Ph As String = "C:\Documents and Settings\tie\デスクトップ"
  
  MyF = Dir(Ph & "\1.\*.xls")
  Application.ScreenUpdating = False
  Do Until MyF = ""
    Workbooks.Open Ph & "\" & MyF
    
    <処理内容>コピー&ペースト
    
    ActiveWorkbook.Close True
    MyF2 = Left$(MyF, Len(MyF) - 4) & _
    Format(Date, "yyyymmdd") & ".xls" 
    Name Ph & "\1.\" & MyF As Ph & "\2.\" & MyF2
    MyF = Dir()
  Loop
  Application.ScreenUpdating = True

というようなコードになりますが、一定の場所(シート名もセルアドレスも同じ)にある
値を引っ張るなら、リンクがお勧めですね。特に処理するファイル数が多くなるなら
処理時間に差がつくと思います。

【31701】Re:ブックに新たな名前をつけて別のフォ...
お礼  夜更かし野郎  - 05/11/28(月) 20:41 -

引用なし
パスワード
   ▼かみちゃん さんへ

早々にお答えいただいたんですね。
ありがとうございます!

>私も同様のことをしていますが、特定のシートの特定のセルのだけ持ってくる
>のであれば、ファイルを開かなくても、ブックへのリンク参照式を埋め込んで
>取得するという方法もあります。
>その場合は、ファイルをコピーすればいいだけです。
>
>でも、いずれにしても、名前が違うだけで内容が同じのブックを保存するのは、
>効率いいのでしょうか?
>たぶん、処理したかどうかの管理だとは思いますけど・・・
>処理前のブックを残しておく必要があるのかな?と思いました。

ご指摘のとおり、処理前のブックを残しておく必要はありませんよね。
かみちゃんさんも、ここの皆さんも本当に賢いなぁ〜と
感心させられっぱなしです。はい。

コード中の「*」の意味が分からなくて困っていたのですが、
しっかりと理解できた気がします。
本当にありがとうございました。
また、宜しくお願いします。

【31702】Re:ブックに新たな名前をつけて別のフォ...
お礼  夜更かし野郎  - 05/11/28(月) 20:48 -

引用なし
パスワード
   ▼Kein さんへ

ありがとうございます!
教えていただいたコードを利用してみました。
見事に動作しました。感動です。

リンク貼り付けも利用してみたいと思います。
今は、VBAにはまっていて、何でもコードを書きたくなります。
よく考えてみると、普通に関数を使うだけで簡単にできたりするんですよね。
効率を考えないとダメですよね!

ところで、皆さんはどのような方法でVBAのコードを勉強されたんですか?
こんな私でもVBA関連の書籍を4冊は理解したつもりなのですが、
ここの板を見ていると、知らないことばかりです。
必死に過去の板を見ながら勉強するしかないのでしょうか?
お勧めの参考書があったら教えて下さい。

【31718】Re:ブックに新たな名前をつけて別のフォ...
発言  ぱっせんじゃー  - 05/11/29(火) 11:38 -

引用なし
パスワード
   横から失礼します。
VBAの勉強についてです。

VBAヘルプを参照する。
質問に対してレスしなくても自分なりにコードを考えてみる。
参考書を数冊購入して手元においておく。
VBA関連サイトを覗く。

などでしょうか。

【31733】Re:ブックに新たな名前をつけて別のフォ...
お礼  夜更かし野郎  - 05/11/29(火) 14:20 -

引用なし
パスワード
   ▼ぱっせんじゃー さんへ

そうですね。自学自習ですよね。
焦らず、ひとつずつ覚えていこうと思います。
ありがとうございました。

8695 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free