こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAでの呼出操作をマクロ化するには?

エクセルVBAでの呼出操作をマクロ化するには?
【今年の7/16に以下の質問をしました】
エクセル2000です。宜しくお願いします。
VBAで、ファイルを呼び出したいのですが、Workbooks.openの書き方が良く分かりません。
呼び出すファイル名は決まっていなくて、フォルダ名は固定です。
エクセルの操作で言うと、ファイルを開くを押して、フォルダを選ぶとこまでをマクロかしたいのですが。

例えば、ドライブDの「作業用」フォルダを開きたい場合は、どう記述すれば宜しいでしょうか?

基礎的な部分でお恥ずかしいのですが、以下で実行しても動かんのです。

ChDir "D:\作業用"
Workbooks.OpenText Filename:= "D:\作業用\*.*"


【watabe007 さんより以下の回答を頂きまして当時は上手く動いたつもりだったのですが、
 添付画像の様にファイルの種類が「すべてのファイル(*.*)」しかありません。】
Dim strRet As String
ChDrive "D:\作業用"
ChDir "D:\作業用"
strRet = Application.GetOpenFilename(Title:="ファイル名を選択して下さい")
If strRet = "False" Then
  MsgBox "キャンセルが選択されました。処理を中止します。", vbCritical
  Exit Sub
Else
  Workbooks.Open Filename:=strRet
End If
End Sub


【今回の再質問】
 当時ファイルの種類まで指定していなかったのですが、実際には、テキストデータを、カンマ区切り
 で変換して呼び出したいので、ファイルの種類は、「テキストファイル」としたいのですが、
 どうすれば宜しいでしょうか?
 助けてください。
 (上記のような事は無理なんでしょうか?無理なら無理のご回答がご投稿戴ければ諦めます;;)

投稿日時 - 2010-08-30 15:08:47

QNo.6146352

困ってます

質問者が選んだベストアンサー

>テキストファイルウィザード画面が出てこないのですが、こちらは無理なのでしょうか?
普通は、テキストファイルウィザードを使うというのは、VBAでは、ありませんから、以下のようにしかなりえないのではないでしょうか。VBAでは、予めファイルが決められているわけでしょうから、テキストファイルウィザードを使わないのが一般的です。

Dialog を使うなら、以下のように、オプションを入れます。
'//
Sub Test2()
Dim ret As Variant
Dim orgDir As String
  orgDir = CurDir '元のディレクトリ
   ChDrive "D"
   ChDir "D:\作業用"
   On Error Resume Next
   ret = Application.Dialogs(xlDialogOpen).Show("*.txt", 1)
   If Err.Number > 0 Or ret = Empty Then
    MsgBox "キャンセルが押されました。", vbExclamation
   End If
   On Error GoTo 0
   ChDrive Left(orgDir, InStr(orgDir, ":") - 1)
   ChDir orgDir
End Sub

投稿日時 - 2010-08-31 10:55:45

お礼

ありがとうございます。
こちらのほうが、自分的には、動かしてみてしっくりきました。
これで作りこんでいきたいと思います。

まだまだ勉強が足りない自分ですが、煮詰まったときにはまた宜しくお願い申し上げます。

投稿日時 - 2010-08-31 12:09:42

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

ウィザードを使ってファイルを開きたいなら、
http://support.microsoft.com/kb/125401/ja

投稿日時 - 2010-08-30 20:57:15

お礼

ありがとうございました。
教えてくれたサイトより
Application.Dialogs(xlDialogOpen).Show
を使用して、ウィザード利用が可能になりました。

投稿日時 - 2010-08-31 10:32:31

ANo.1

エクセルVBAのヘルプでGetOpenFilenameは調べたの?
FileFilter 指定すれば良いのでは?

投稿日時 - 2010-08-30 15:20:52

お礼

ご回答ありがとうござます。
FileFilterを調べて、以下の様に書き換えてみました。

strRet = Application.GetOpenFilename(FileFilter:="(*.txt), Title:=ファイル名を選択して下さい")

これで、テキストファイルのみを探すようにはなったのですが、開くと直ぐに呼んでしまい、
テキストファイルウィザード画面が出てこないのですが、こちらは無理なのでしょうか?

投稿日時 - 2010-08-30 16:22:54

あなたにオススメの質問