Excel VBA質問箱 IV

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

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


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

【9591】これって無理ですか? ディレクトリの指定の手間を除く方法 テーブル 03/12/9(火) 19:13 質問
【9592】Re:これって無理ですか? ディレクトリの指... INA 03/12/9(火) 20:02 回答
【9616】Re:これって無理ですか? ディレクトリの指... テーブル 03/12/10(水) 14:44 質問
【9621】Re:これって無理ですか? ディレクトリの... INA 03/12/10(水) 16:01 回答
【9628】Re:これって無理ですか? ディレクトリの... テーブル 03/12/11(木) 11:19 質問
【9631】Re:これって無理ですか? ディレクトリの... INA 03/12/11(木) 12:35 回答
【9632】Re:これって無理ですか? ディレクトリの... テーブル 03/12/11(木) 13:06 質問
【9639】Re:これって無理ですか? ディレクトリの... INA 03/12/11(木) 14:16 回答
【9658】Re:これって無理ですか? ディレクトリの... テーブル 03/12/12(金) 10:58 質問
【9666】Re:これって無理ですか? ディレクトリの... INA 03/12/12(金) 12:38 回答
【9685】Re:これって無理ですか? ディレクトリの... テーブル 03/12/12(金) 15:44 質問
【9686】Re:これって無理ですか? ディレクトリの... Jaka 03/12/12(金) 16:02 回答
【9688】Re:これって無理ですか? ディレクトリの... テーブル 03/12/12(金) 16:47 質問
【9689】Re:これって無理ですか? ディレクトリの... つん 03/12/12(金) 17:20 発言
【9690】Re:これって無理ですか? ディレクトリの... テーブル 03/12/12(金) 17:27 お礼
【9723】Re:これって無理ですか? ディレクトリの... Jaka 03/12/15(月) 16:41 発言

【9591】これって無理ですか? ディレクトリの指...
質問  テーブル  - 03/12/9(火) 19:13 -

引用なし
パスワード
   お世話になっております。テーブルです。
質問なのですが、もしこういうのがあれば、すごく助かるので、ご教授頂きたいです。

下記のような構成があるとします。

「例)ディレクトリ構成
 フォルダA→ランダム名のフォルダB→この中に保存orこの中からファイルを読み込み」

フォルダAは、自分のドキュメントパス & "フォルダA"と指定できますが、
ランダム名のフォルダBの中に保存や、フォルダBからファイルを読みこんできたい場合に、フォルダAまでしか指定できないです・・・・・

三個のプロシージャーがあるとします。
決められた作業の順番として、
1、読み込み
2、保存
3、ファイル形式を変換して保存

っとあるとして、1番目の読み込みの際に、「ランダム名のフォルダB」のパスを、どこかで持って、それを次の作業のフォルダを指定する所で変数として使えないでしょうか?
 どうか、ご教授よろしくおねがいたします。

【9592】Re:これって無理ですか? ディレクトリの...
回答  INA  - 03/12/9(火) 20:02 -

引用なし
パスワード
   Dir関数でフォルダ名やファイル名を取得できるので、
取得した後に、それらを対象に処理すればよいと思います。

【9616】Re:これって無理ですか? ディレクトリの...
質問  テーブル  - 03/12/10(水) 14:44 -

引用なし
パスワード
   INA さん。ご回答ありがとうございます。
Dir関数の使い方がイマイチ良く分かっていないのですが、

下記から、
rFile = mydocumentパス\CDフォルダ\MDフォルダ\歌手フォルダ\歌ファイル
         |ここまで指定可能|      

Dir関数を使って、MDフォルダ名を取得するにはどうすればいいのでしょうか?
よろしければ、ご教授して頂けないでしょうか?


 

【9621】Re:これって無理ですか? ディレクトリの...
回答  INA  - 03/12/10(水) 16:01 -

引用なし
パスワード
   ヘルプにそのまま載っていますよ?


Dir 関数
   

指定したパターンやファイル属性と一致するファイルまたはフォルダの名前を表す文字列型 (String) の値を返します。ドライブのボリューム ラベルも取得できます。

構文

Dir[(pathname[, attributes])]

Dir 関数の構文は、次の指定項目から構成されます。

指定項目 内容
pathname 省略可能です。ファイル名を表す文字列式を指定します。フォルダ名およびドライブ名も含めて指定できます。引数 pathname に指定した内容が見つからないときは、長さ 0 の文字列 (" ") を返します。
attributes 省略可能です。取得するファイルが持つ属性の値の合計を表す数式または定数を指定します。省略すると、標準ファイルの属性になります。


設定値

引数 attributes の設定値は次のとおりです。

定数 値 内容
vbNormal 0 標準ファイル
vbReadOnly 1 読み取り専用ファイル
vbHidden 2 隠しファイル
vbSystem 4 システム ファイル。Macintosh では使用できません。
vbVolume 8 ボリューム ラベル。この値を指定すると、すべての属性は無効になります。Macintosh では使用できません。
vbDirectory 16 フォルダ
vbAlias 64 エイリアス ファイル。Macintosh でのみ使用できます。


メモ これらの定数は、Visual Basic で定義されています。したがって、実際の数値の代わりにコードで使用することができます。

解説

Windows の場合、複数のファイルを指定するための "*" (アスタリスク) および "?" (疑問符) のワイルドカード文字を使用できます。Macintosh の場合、これらの文字は有効なファイル名の文字として扱われるため、このワイルドカード文字を使用して複数ファイルを指定することはできません。

また、Macintosh でワイルドカード文字がサポートされていないため、ファイルの種類によって複数のファイルを識別することができません。特定の種類のファイルを指定するには、ファイル名を使用せずに MacID 関数を使用します。例えば、次の例では、最初に見つかった、タイプが TEXT のファイルを返します。

Dir("SomePath", MacID("TEXT"))
フォルダ内のすべてのファイルに対して繰り返して処理を実行する場合は、引数を指定せずにDir を実行してください。

Dir("")
Windows で MacID 関数と Dir 関数を組み合わせて使用した場合はエラーが発生します。

引数 attribute に 256 より大きな値を指定した場合は MacID 関数の値と見なされます。

Dir 関数を最初に呼び出すとき、引数 pathname を指定しないとエラーになります。またファイル属性 (引数 attributes) を指定する場合にも、引数 pathname を指定する必要があります。

Dir 関数は、引数 pathname と一致する最初のファイル名を返します。それ以外のファイル名で引数 pathname と一致するファイル名を取得するには、引数を指定せずに再び Dir 関数を呼び出してください。一致するファイル名がない場合は、Dir 関数は長さ 0 の文字列を返します。長さ 0 の文字列が返された場合は、次に Dir 関数を呼び出すときに引数 pathname を再び指定しなければなりません。指定しないとエラーが発生します。現在の引数 pathname と一致するファイル名をすべて取得していなくても、途中で引数 pathname の指定を変更できます。ただし、Dir 関数を再帰的に呼び出すことはできません。vbDirectory 属性を指定して Dir 関数を続けて呼び出しても、連続する下位レベルのサブフォルダは返しません。

ヒント 取得したファイルを整理する必要があるときには、ファイル名を配列に格納して並べ替え (ソート) を行ってください。


−−−−−−−−−−−−−−−−−−−−−−−−−

Dir 関数の使用例

次の例は、Dir 関数を使って、指定したファイルまたはフォルダがあるかどうかを確認します。Macintosh, の場合、既定のドライブ名は “HD:” で、パスの区切り文字には円記号 ("\") ではなくコロン (":") を使用してフォルダを指定します。また、ワイルドカード文字は、Mac のフォルダ指定では使用できませんが、MacID 関数を使用すると複数のファイルを指定することができます。

Dim MyFile, MyPath, MyName
' "WIN.INI" が存在する場合、そのファイル名を返します(Microsoft Windows の場合)。
MyFile = Dir("C:\WINDOWS\WIN.INI")  

' 指定した拡張子を持つファイル名を返します。複数の *.INI ファイル
' が存在すると、最初に見つかったファイル名を返します。
MyFile = Dir("C:\WINDOWS\*.INI")

' 引数を指定せずに再度 Dir 関数を呼び出すと、
' 同じフォルダにある次の *.INIファイルを返します。
MyFile = Dir

' 隠しファイル属性を持つ *.TXT ファイルであり、最初に見つかったファイル名を返します。
MyFile = Dir("*.TXT", vbHidden)

' C:\ 内のフォルダの名前を表示します。
MyPath = "c:\"  ' パスを設定します。
MyName = Dir(MyPath, vbDirectory)  ' 最初のフォルダ名を返します。
Do While MyName <> ""  ' ループを開始します。
  ' 現在のフォルダと親フォルダは無視します。
  If MyName <> "." And MyName <> ".." Then
    ' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。
    If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
      Debug.Print MyName    ' フォルダであれば、それを表示します。
    End If
  End If
  MyName = Dir          ' 次のフォルダ名を返します。
Loop

【9628】Re:これって無理ですか? ディレクトリの...
質問  テーブル  - 03/12/11(木) 11:19 -

引用なし
パスワード
   下記のコード試しました。確かに、イミディエイトウインドウで、フォルダ名が出ました
。しかし、分からない事があります。

そこからどうすれば、現在のフォルダ名と、一致させ、一致したディレクトリを指定する事ができるのでしょうか?


>' C:\ 内のフォルダの名前を表示します。
>MyPath = マイドキュメントのパス & "\CD\" パスを設定します。
>MyName = Dir(MyPath, vbDirectory)  ' 最初のフォルダ名を返します。
>Do While MyName <> ""  ' ループを開始します。
>  ' 現在のフォルダと親フォルダは無視します。
>  If MyName <> "." And MyName <> ".." Then
>    ' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。
>    If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
>      Debug.Print MyName    ' フォルダであれば、それを表示します。
>    End If
>  End If
>  MyName = Dir          ' 次のフォルダ名を返します。
>Loop

【9631】Re:これって無理ですか? ディレクトリの...
回答  INA  - 03/12/11(木) 12:35 -

引用なし
パスワード
   >そこからどうすれば、現在のフォルダ名と、一致させ、
>一致したディレクトリを指定する事ができるのでしょうか?

「現在のフォルダ名」とは何でしょうか?
カレントディレクトリですか?
それともブックの保存されているフォルダですか?

「現在のフォルダ名と、一致させ、一致したディレクトリを指定する」
これは意味がよく分かりません。

【9632】Re:これって無理ですか? ディレクトリの...
質問  テーブル  - 03/12/11(木) 13:06 -

引用なし
パスワード
   ▼INA さん:
>「現在のフォルダ名」とは何でしょうか?
>カレントディレクトリですか?
>それともブックの保存されているフォルダですか?
大変失礼致しました。「現在のフォルダ名」とは、「現在のブック名」です。
下記間違えました。

【9639】Re:これって無理ですか? ディレクトリの...
回答  INA  - 03/12/11(木) 14:16 -

引用なし
パスワード
   >「現在のブック名」です。

ThisWorkBook.Name

で、取得できます。

【9658】Re:これって無理ですか? ディレクトリの...
質問  テーブル  - 03/12/12(金) 10:58 -

引用なし
パスワード
   ▼INA さん:おはようございます。 
レスありがとうございました。 
またまた、質問です。 ThisWorkbook.Nameの名前が、例えば、2002-1-1.xls であるとしましたら、-を見つけたらそれ以降の文字列は対象にしないで、2002だけを変数として持ってくるようにしたいのですが、どうすればいいでしょうか? どうかご教授よろしくお願いたします。

【9666】Re:これって無理ですか? ディレクトリの...
回答  INA  - 03/12/12(金) 12:38 -

引用なし
パスワード
   どうぞ。

Sub Sample()
Dim myBookName As String
Dim Ans As String

  myBookName = "2002-1-1.xls"
  
  Ans = Left(myBookName, InStr(myBookName, "-") - 1)

  MsgBox Ans

End Sub

【9685】Re:これって無理ですか? ディレクトリの...
質問  テーブル  - 03/12/12(金) 15:44 -

引用なし
パスワード
   INAさん。どうもありがとうございました。
下記のようにすれば、やりたい事ができたのですが、

  i = ThisWorkbook.Name
  i = Left(i, InStr(i, "-") - 1)
ファイル名に"-"が含まれていない場合に、
i = Left(i, InStr(i, "-") - 1)
でエラーがでてしまいますTT 
ThisWorkbook.Nameに"-"が含まれているかいないか
の判断の仕方を教えて頂けないでしょうかTT どうかご教授
よろしくお願いたします。

【9686】Re:これって無理ですか? ディレクトリの...
回答  Jaka  - 03/12/12(金) 16:02 -

引用なし
パスワード
   >  i = ThisWorkbook.Name
>  i = Left(i, InStr(i, "-") - 1)

"-"が入っていない場合、InStr(i, "-")の値は、何なりますか?

if InStr(1,i, "-") = 0 とか
if InStr(1,i, "-") > 0 とか...........。

【9688】Re:これって無理ですか? ディレクトリの...
質問  テーブル  - 03/12/12(金) 16:47 -

引用なし
パスワード
   Jakaさん。レスありがとうございます。
>"-"が入っていない場合、InStr(i, "-")の値は、何なりますか?

書き方が悪く申し訳ありませんでした。
"-"がついていないファイルでこの作業を行った際にエラーが出るので、
-が含まないファイル名でこの作業を行った際に、メッセージを表示したいので、
"-"が含まれているファイル名でなければ、"この作業は行えません"っと言った
ようなメッセージを表示したいです。

どうかご教授よろしくお願いたしますTT

【9689】Re:これって無理ですか? ディレクトリの...
発言  つん E-MAIL  - 03/12/12(金) 17:20 -

引用なし
パスワード
   こんにちは〜
横から失礼します。
ロムしてましたが、

> 書き方が悪く申し訳ありませんでした。
書き方が悪いと言うこともなく、Jakaさんもちゃんと
ヒントをくれてはると思いますよ。

> if InStr(1,i, "-") = 0

これで、「-」が含まれていないか否か?が判断できるんですから、

if InStr(1,i, "-") = 0 Then
  「-」が含まれていない時の処理
Else
  「-」が含まれている時の処理
End if

でいいんじゃないですか?

ね!Jakaさんそうですよね?

【9690】Re:これって無理ですか? ディレクトリの...
お礼  テーブル  - 03/12/12(金) 17:27 -

引用なし
パスワード
   >こんにちは〜
>横から失礼します。
>ロムしてましたが、
>
>> 書き方が悪く申し訳ありませんでした。
>書き方が悪いと言うこともなく、Jakaさんもちゃんと
>ヒントをくれてはると思いますよ。
>

そういう意味だったのですか・・・・全然気付きませんでした。
先に自分で調べるべきでした。
ここでは、すごいお世話になっているので、何かとても
失礼な事をした気持ちです。本当にごめんなさい。
今後は質問する前に書かれたレスをきちんと理解してから(今までもちゃんと全部読んでいましたが・・・・それ以上に)質問したいと思います。

INAさん。どうもありがとうございました。本当にいつも助けられています。
Jakaさん。 わざわざレス頂いたのに失礼致しました。
つんさん。 いつもありがとうございます。忠告ありがとうございました。

【9723】Re:これって無理ですか? ディレクトリの...
発言  Jaka  - 03/12/15(月) 16:41 -

引用なし
パスワード
   つんさんフォローありがとうございました。

所で、

Private Sub UserForm_Activate()
Application.Wait Now + TimeValue("00:00:05")
Unload Me
End Sub

こう言うんとかじゃダメだったんでしょうか?
詳細全く解っていませんけど..。
ただ、モードレスでもボタン類がつかえなくなると思います。

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