Excel VBA質問箱 IV

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

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


6079 / 13646 ツリー ←次へ | 前へ→

【47292】ファイル名の取得について。 sakura 07/3/7(水) 15:56 質問[未読]
【47294】Re:ファイル名の取得について。 Blue 07/3/7(水) 16:08 回答[未読]
【47296】Re:ファイル名の取得について。 neptune 07/3/7(水) 16:23 発言[未読]
【47297】Re:ファイル名の取得について。 neptune 07/3/7(水) 16:25 発言[未読]
【47299】Re:ファイル名の取得について。 sakura 07/3/7(水) 16:35 お礼[未読]
【47308】Re:ファイル名の取得について。 neptune 07/3/7(水) 21:53 発言[未読]
【47344】Re:ファイル名の取得について。 sakura 07/3/8(木) 15:45 お礼[未読]

【47292】ファイル名の取得について。
質問  sakura  - 07/3/7(水) 15:56 -

引用なし
パスワード
   初めて書き込みさせていただきます。

最近VBAの勉強を始めたばかりでわからないことがありまして投稿させていただきます。

お忙しいとは思いますがどなたかご教授願えましたら幸いです。

ファイル名を取得する方法についてお聞きしたいことがございます。

ファイルをダイアログボックスから選択し、そのファイル名を取得し

あるシートのセルに表示するというマクロを組みたく、自分で調べ作成してみた

マクロが下記のマクロなのですが

sub CommandButton_Click()

 ChDir "フォルダ指定"
 
 FileToOpen = Application.GetOpenFilename("*.xls")
 
 If FileToOpen <> Flase Then
  Cells(1,1).value = FileToOpen
  Open FileToOpen For Random As FreeFile
 End If

End Sub


このマクロだとアドレスもすべて表示されるマクロになってしまいます。
ファイル名のみ、取得する方法はなにかありますでしょうか?

あるファイルの必要なデータだけを別Bookに表示し、集計するというマクロを製作するに当たり、
元データのファイル名に日付が入るため、日々変わるので、特定のファイル名を指定し、マクロを組むということが困難なため、このようなマクロを組もうと思った次第です。

初心者なため、お見苦しいマクロかもしれませんが

なにとぞご教授のほど宜しくお願いいたします。

【47294】Re:ファイル名の取得について。
回答  Blue  - 07/3/7(水) 16:08 -

引用なし
パスワード
   既存ファイルならば Dir 関数を噛ませればファイル名だけ取得できます。

ほかの方法としては、文字列の後ろから \ を探して(InStrRev)、Right関数で
分割するとか、Split関数で\で分割して最後の要素とか方法はいろいろあります。

【47296】Re:ファイル名の取得について。
発言  neptune  - 07/3/7(水) 16:23 -

引用なし
パスワード
   こんにちは

>ファイル名のみ、取得する方法はなにかありますでしょうか?
ですが、
いろんな方法があります。
方法1.dir関数のHelpを調べてみて下さい。
方法2.Scripting.FileSystemObjectを使用して、File オブジェクトのNameプロパティを取得する
方法3.right関数、instrrev関数を利用して必要な部分のみ切り取る。
その他・・・

それと、コードをUPするのはいいんですが、せめてコンパイルできる事
ぐらいは確認しましょう。スペルミスもあるし。。。

>お見苦しいマクロかもしれませんが
以前の問題です。質問しているのですから、そういう問題ではないですね。

コピペしてコンパイルしてみましたが、出来ないので、検証を止めました。
自分に損ですよ。

【47297】Re:ファイル名の取得について。
発言  neptune  - 07/3/7(水) 16:25 -

引用なし
パスワード
   グダグダ書いていると被った。m(_ _)m

【47299】Re:ファイル名の取得について。
お礼  sakura  - 07/3/7(水) 16:35 -

引用なし
パスワード
   申しわけありません。

ネット回線につないでいないPCで作成していたマクロのため

掲示板に書き込む際
スペルミスにより不快な思いをさせてしまい申し訳ありませんでした。

ご指摘ありがとうございます。
何分こういう掲示板に書き込むことも初めてだったため

礼儀を払うつもりで丁寧に書いたつもりだったのですが

失礼いたしました。

あとは自分でやって見ます。

ありがとうございました。

【47308】Re:ファイル名の取得について。
発言  neptune  - 07/3/7(水) 21:53 -

引用なし
パスワード
   ▼sakura さん:
こんにちは
もう見ないかな。

>掲示板に書き込む際
>スペルミスにより不快な思いをさせてしまい申し訳ありませんでした。
今回は別に不快には思ってませんのでご心配なく。

>礼儀を払うつもりで丁寧に書いたつもりだったのですが
コードをUPするのは大事なことですからこれからもそうすることをお勧めします。
(コンパイルできる奴ね)

気づいた点ですが
>GetOpenFilename("*.xls")
は書式が違います。
>Open FileToOpen For Random As FreeFile
こういう書き方をするとこのファイルのみは閉じられないんじゃないですかね?
(開いている全てのファイルを閉じることは出来ます。)
FreeFileの戻り値を変数に受けてから使いましょう。

>あとは自分でやって見ます。
頑張ってください。その意気です。

【47344】Re:ファイル名の取得について。
お礼  sakura  - 07/3/8(木) 15:45 -

引用なし
パスワード
   ありがとうございました。

ご教示あったとおりRight関数等つかいまして

Sub commandButton1_click()

ThisWorkbook.Worksheets("Sheet1").Select
ThisWorkbook.Worksheets("Sheet1").Activate

ChDir "フォルダ指定"

FileToOpen = Application.GetOpenFilename("EXCELシート,*.xls")

If FileToOpen <> False Then
  
  strRev = StrReverse(FileToOpen)
  k = InStr(strRev, "\")
  StrFilename = Right(FileToOpen, k - 1)
  
  Cells(1, 1).Value = StrFilename
End If
  
End Sub


というマクロを組みました。

これで動きました。どうもありがとうございました。

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