Excel VBA質問箱 IV

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

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


7105 / 13645 ツリー ←次へ | 前へ→

【41186】フォルダの表示 りんた 06/8/1(火) 16:48 質問[未読]
【41191】Re:フォルダの表示 かみちゃん 06/8/1(火) 17:09 発言[未読]
【41195】Re:フォルダの表示 りんた 06/8/1(火) 17:34 質問[未読]
【41199】Re:フォルダの表示 かみちゃん 06/8/1(火) 18:07 発言[未読]
【41193】Re:フォルダの表示 かみちゃん 06/8/1(火) 17:15 発言[未読]
【41194】Re:フォルダの表示 Kein 06/8/1(火) 17:33 回答[未読]
【41202】Re:フォルダの表示 りんた 06/8/1(火) 18:21 お礼[未読]

【41186】フォルダの表示
質問  りんた  - 06/8/1(火) 16:48 -

引用なし
パスワード
   同じフォルダ内の複数のファイルを開く方法を教えてください。

また、翌月になったら、違う"9月"というフォルダを作りに全て保存する。

ファイル名は、リンクの関係で変更しない。

このようなマクロを組みたいのですが・・・。

現状、マクロの記録で操作をしてしまうと、9月分を作っても8月分が開いてしまいます。

その場合は、ファイルを指定するのではなく、フォルダを指定して自分で開いたほうがいいのでしょうか?

今まで、関数までで、VBAはこれから勉強しようと思っています。
よろしくお願いします。

【41191】Re:フォルダの表示
発言  かみちゃん E-MAIL  - 06/8/1(火) 17:09 -

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

>同じフォルダ内の複数のファイルを開く方法を教えてください。

複数のファイルを選択(開くではありませんが)であれば、以下のURLが参考になるかと思います。
http://www.officetanaka.net/excel/vba/file/file02.htm

特定のフォルダのすべてのファイルを開くのであれば、意味は多少違ってきます。

>また、翌月になったら、違う"9月"というフォルダを作りに全て保存する。
>ファイル名は、リンクの関係で変更しない。
>現状、マクロの記録で操作をしてしまうと、9月分を作っても8月分が開いてしまいます。

それであれば、「マクロの記録」で記録したコードを提示することはできませんか?

>その場合は、ファイルを指定するのではなく、フォルダを指定して自分で開いたほうがいいのでしょうか?

どのようなことがしたいか今ひとつよくわかりません。

ファイルを開く際に何月のフォルダのファイルを開いているかわかるのか?
翌月かどうかはどのように判断するのでしょうか?

【41193】Re:フォルダの表示
発言  かみちゃん E-MAIL  - 06/8/1(火) 17:15 -

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

>ファイルを指定するのではなく、フォルダを指定して自分で開いたほうがいいのでしょうか?

書き忘れましたが、
[#41166][#41179]の質問も参考になりませんか?

【41194】Re:フォルダの表示
回答  Kein  - 06/8/1(火) 17:33 -

引用なし
パスワード
   もっと具体的な説明をしないと回答しずらいですが、ポイントになる
ところをアドバイスしますと・・
>同じフォルダ内の複数のファイルを開く方法
全てのファイルを順番に開いていくなら、Dir関数で "" を返すまでループする
という方法があります。これは過去ログにもたくさんあるので、検索してみて
下さい。また、任意の複数選択したファイルを処理する場合は、GetOpenFilename
で引数の MultiSelect に True を渡します。出てきたダイアログで、Ctrlキー
を押しながら選択していって、最後に OKボタン を押します。戻り値はファイルの
フルパスが配列で格納されるので、受ける変数は Variant型 で宣言します。
この処理のコードも過去ログにあるはずです。
>翌月になったら、違う"9月"というフォルダを作り
「本日の月のフォルダー」について、作成と存在チェックをするコードは、

Dim MyFol As String

MyFol = Application.DefaultFilePath & "\" & Month(Date) & "月"
If Dir(MyFol, vbDirectory) = "" Then
  MkDir MyFol
Else
  MsgBox Month(Date) & "月 のフォルダーは作成済みです", 48
End If

などとなります。他にFSOを使うコードもあります。どちらかと言うと
FSOの方が確実性が高いかも知れませんが、いちおうこのようなコード
でも間違いはないと思います。
>ファイルを指定するのではなく、フォルダを指定して
フォルダーを選ぶダイアログを出すことも出来ますが、上で回答している
ように「フォルダーの存在が確認できたら」ストレートにそのフォルダー
を開けるようにした方が便利なはずです。そのコードは

Dim MyF As Variant
Dim MyFol As String
Dim i As Integer

MyFol = Application.DefaultFilePath & "\" & Month(Date) & "月"
If Dir(MyFol, vbDirectory) = "" Then
  MkDir MyFol
Else
  ChDir MyFol
  MyF = Application _
  .GetOpenFilename("Excelブック(*.xls),*.xls", , , , True)
  If VarType(MyF) = 11 Then Exit Sub
  For i = LBound(MyF) To UBound(MyF)
   Debug.Print Dir(MyF(i))
   ' ↑テスト用にイミディエイトウィンドウへファイル名を出力する
  Next i
End If

てな感じになるでしょう。

【41195】Re:フォルダの表示
質問  りんた  - 06/8/1(火) 17:34 -

引用なし
パスワード
   かみちゃんさん
早速ありがとうございます。

先ほどの記録を添付いたします。


Sub 一括表示()
'
' 一括表示 Macro
' マクロ記録日 : 2006/8/1 ユーザー名 :
'
  ChDir "\\Tky-001\土日報告\8月"
  Workbooks.Open Filename:= _
    "\\Tky-001\土日報告\8月\横浜.xls", _
    UpdateLinks:=0
  Workbooks.Open Filename:= _
    "\\Tky-001\土日報告\8月\さいたま.xls", _
    UpdateLinks:=0
  Workbooks.Open Filename:= _
    "\\Tky-001\土日報告\8月\名古屋.xls", _
    UpdateLinks:=0
  Workbooks.Open Filename:= _
    "\\Tky-001\土日報告\8月\福岡.xls", _
    UpdateLinks:=0
  Windows("マーケ.xls").Activate
  Range("G9").Select
End Sub


上記の様に、当然かもしれませんが8月を指定してしまうため、8月が表示されてしまいます。

次月は、9月というフォルダを作成しそのフォルダに保存するように作りたいのです。

毎月毎月増やしていく様にしたいと考えています。

【41199】Re:フォルダの表示
発言  かみちゃん E-MAIL  - 06/8/1(火) 18:07 -

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

>上記の様に、当然かもしれませんが8月を指定してしまうため、8月が表示されてしまいます。

これは、処理開始時にフォルダを指定すればいいと思います。
ユーザーが選択する方法でもいいし、システム日付を利用して生成することもできます。

>次月は、9月というフォルダを作成しそのフォルダに保存するように作りたい

ここがわかりません。
次月のフォルダはどのタイミングで作るのですか?
マクロの最後でいいのですか?
その場合、マクロが2回以上実行されたらどうするのですか?すでに次月フォルダはできているわけですから・・・

【41202】Re:フォルダの表示
お礼  りんた  - 06/8/1(火) 18:21 -

引用なし
パスワード
   かみちゃんさん。keinさん
どうもありがとうございました

処理開始時に指定する方法で、
フォルダはkeinさんの方法でチャレンジしてみます。

初めて、投稿させてもらいましたが、質問する側も何がわからないのか?
どのように作成したいのか?キチンとお知らせしなければ、伝えきれない
ことを学びました。
本当にありまとうございました。

これからは、明確な質問の仕方で参加させていただきます。

これからも、よろしくお願いいたします。

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