Excel VBA質問箱 IV

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

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


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

【56173】シートをまとめる→データを保存する らん 08/6/7(土) 6:52 質問[未読]
【56175】Re:シートをまとめる→データを保存する マクロマン 08/6/7(土) 9:24 発言[未読]
【56181】Re:シートをまとめる→データを保存する らん 08/6/8(日) 6:45 回答[未読]
【56176】Re:シートをまとめる→データを保存する かみちゃん 08/6/7(土) 9:47 発言[未読]
【56182】Re:シートをまとめる→データを保存する らん 08/6/8(日) 6:58 回答[未読]
【56183】Re:シートをまとめる→データを保存する かみちゃん 08/6/8(日) 9:11 発言[未読]

【56173】シートをまとめる→データを保存する
質問  らん  - 08/6/7(土) 6:52 -

引用なし
パスワード
   Excel2003を使用しています

バラバラのシートを1つのエクセルとしてまとめることはできるのでしょうか?
エクセルファイル名は毎回、日付が変わります。
シートの名前も日付がついているため毎回変わります。

初心的な質問ですが
毎回、日付の変わるエクセルデータを開いてVBAで処理していくことはできますか?その方法がどうしても分かりません。

そして、まとめ終わったデータを名前+日付を入れて保存することはできるのでしょうか? 
よろしくお願いします

【56175】Re:シートをまとめる→データを保存する
発言  マクロマン  - 08/6/7(土) 9:24 -

引用なし
パスワード
   ??

>バラバラのシートを1つのエクセルとしてまとめることはできるのでしょうか?

>バラバラのシート
とは一つのブックに一つのシートがあるということでしょうか?

>1つのエクセル
とは1つのシートということででしょうか?
一つのブックということでしょうか?

また、まとめるとは、どのようにまとめるのでしょうか?
一つのシートにまとめるとしても、ただ単に最終行の次の行につなげていくのか、
などなど不明点が多いです。

どのようなものをどのようにしたい、というサンプルを提示して、もっと具体的に
質問しましょう。

【56176】Re:シートをまとめる→データを保存する
発言  かみちゃん  - 08/6/7(土) 9:47 -

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

横から失礼します。

>バラバラのシートを1つのエクセルとしてまとめることはできるのでしょうか?
>エクセルファイル名は毎回、日付が変わります。
>シートの名前も日付がついているため毎回変わります。
>
>毎回、日付の変わるエクセルデータを開いてVBAで処理していくことはできますか?

私は、以下のようなマクロで処理しています。
マクロが記述されたファイルと同じフォルダにあるExcelブックのすべてのシート
をひとつの新規ブックにコピーします。

Sub Sample()
 Dim MyPath As String
 Dim MyName As String
 Dim MyFile As String
 Dim WB1 As Workbook
 Dim WB2 As Workbook
 
 MyPath = ThisWorkbook.Path
 MyName = Dir(MyPath & "\*.xls")
 Do While MyName <> ""
  MyFile = MyPath & "\" & MyName
  If UCase(MyFile) <> UCase(ThisWorkbook.FullName) Then
   Application.EnableEvents = False
   Set WB1 = Workbooks.Open(MyFile)
   If WB2 Is Nothing Then
    WB1.Worksheets.Copy
    Set WB2 = ActiveWorkbook
   Else
    WB1.Worksheets.Copy , WB2.Worksheets(WB2.Worksheets.Count)
   End If
   WB1.Close False
   Application.EnableEvents = True
  End If
  MyName = Dir
 Loop
 MsgBox "終了しました"
End Sub

>そして、まとめ終わったデータを名前+日付を入れて保存することはできるのでしょうか? 

上記コードを実行すると、Book1.xlsが出来るので、それを名前を付けて保存します。
特定のブックを特定の名前で名前を付けて保存するには、「マクロの記録」で記録
できます。
特定の名前の部分を「名前+日付」にしたくて、その方法がわからないならば、
「マクロの記録」で記録したコードを提示した上で、どういう名前の付け方にしたい
のか、もう少し具体的に説明できませんか?

【56181】Re:シートをまとめる→データを保存する
回答  らん  - 08/6/8(日) 6:45 -

引用なし
パスワード
   >また、まとめるとは、どのようにまとめるのでしょうか?

バラバラのシートとは1BOOK に1シートという組み合わせで
相手先によって、4Book だったり8Bookだったりと違います。
ひとつにまとめたいという意味は、

例えばデスクトップ上にエクセル1Book1シートのものが4組あったとします。
それぞれのエクセル名は、毎週、日付がついており変化します。
ex:) 1週目(08Jun.xls) →2週目(15Jun.xls) → 3週目(22Jun.xls) というようにエクセル名が変動します。
その日付の変わってしまうものをマクロで処理したいのです。

詳しく言うと例えば
1、デスクトップ上のエクセルデータ4組(1Sheet1book)を開きたい。(エクセル名の日付が毎週変更される)
2、4組のsheetを移動して1Bookにまとめる。(sheet名にも日付がついていて毎週変更される。)
3、1Bookにまとめたエクセルデータをデスクトップ上に保存する。(日付のついた形で保存したい。ここも、毎週変わる。)

よろしくお願いします。

【56182】Re:シートをまとめる→データを保存する
回答  らん  - 08/6/8(日) 6:58 -

引用なし
パスワード
   >特定の名前の部分を「名前+日付」にしたくて、その方法がわからないならば、
>「マクロの記録」で記録したコードを提示した上で、どういう名前の付け方にしたい
>のか、もう少し具体的に説明できませんか?

かみちゃん様 ありがとうございます

Book1.xlsができた後に
そのBook名に例えば (Ran 08Jun.xls) (Ran 08,09Jun.xls)
という風に名前+日付で保存したいのです。
日付の部分は今日の日付というわけでないですが
毎週つけるという1定の規則はあります。
ex:)
1週目(Ran 08Jun.xls)→2週目(Ran 15Jun.xls)→3週目(Ran 22Jun.xls)
という風に。
これをデスクトップ上に保存したいというのが理想です。
よろしくお願いします

【56183】Re:シートをまとめる→データを保存する
発言  かみちゃん  - 08/6/8(日) 9:11 -

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

>毎週つけるという1定の規則はあります。
>ex:)
>1週目(Ran 08Jun.xls)→2週目(Ran 15Jun.xls)→3週目(Ran 22Jun.xls)
>という風に。

4週目、5週目はどうなるのですか?
また、Junは、6月だと思いますが、7月もRan 08Jul.xlsのような感じなのでしょうか?
月の部分や何週目かの判断は、何をもってするのですか?
マクロ実行時のパソコンの日付ですか?

>これをデスクトップ上に保存したいというのが理想です。

デスクトップパスは、パソコンやログインユーザー名によって異なるので、
以下のようなコードで取得できます。
CreateObject("Wscript.Shell").SpecialFolders("Desktop")

その他特殊フォルダの取得は、以下が参考になると思います。
http://www.moug.net/tech/exvba/0060045.htm
http://www.k1simplify.com/vba/tipsleaf/leaf233.html
http://hanatyan.sakura.ne.jp/vbhlp/special.htm

なお、以下のコードは、マクロ実行時の日付により、ファイル名を生成する方法
のサンプルです。

Sub Sample()
 Dim objWsh   As Object
 Dim strPath As String
 Dim strFileName As String
 
 Set objWsh = CreateObject("Wscript.Shell")
 'デスクトップパスの取得
 strPath = objWsh.SpecialFolders("Desktop")
 
 '保存ファイル名の生成
 strFileName = strPath & "\Ran " & Format(Date, "ddmmm") & ".xls"
 MsgBox "保存ファイル名は" & vbCrLf & " " & strFileName
End Sub

1週目、2週目という判断はしていません。
また、実際の保存部分は、書いていません。
ご自身で「マクロの記録」で記録して確かめてほしいからです。

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