- ベストアンサー
指定のファイルを開くマクロ
こんにちは。 いろいろやってみましたが、うまくいかなかったのでアドバイスいただけませんか。 マクロで指定のファイルを開く場合、 ChDir "C:\File" Workbooks.Open Filename:="リスト.csv" のように指定しています。 A1にC:\File A2にリスト.csv このように記述して ChDir "A1" Workbooks.Open Filename:="A2" のように開くようにはできませんか。 それと、似たようなことですが Windows("リスト.csv").Activate と指定するところを Windows("A2").Activate のように指定したい場合はどうでしょうか。 次に、A1にディレクトリ A2にファイルネームを指定するためにダイアログを出したいのですが、 そのような便利なマクロはあるのでしょうか。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
基本的なこと >ChDir "A1" >Workbooks.Open Filename:="A2" >のように開くようにはできませんか。 Workbooks.Open Filename:=Range("A1").Value & "\" & Range("A2").Value >Windows("A2").Activate >のように指定したい場合はどうでしょうか。 Windows(Range("A2").Value).Activate >質問文を変更できないのでここに書かせていただきます。 この様な場合は、新規に質問するのがマナーです >設定のダイアログを出す方法をご存じないでしょうか。 Sub test() Dim fName As String fName = Application.GetOpenFilename("CSVファイル,*.csv") If fName <> "False" Then Range("a1").Value = Left(fName, InStrRev(fName, "\")) Range("a2").Value = Mid(fName, InStrRev(fName, "\") + 1) End If End Sub 参考まで
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 一度は、きちんとコードを書いてあげたほうがよいのではないかと思いますね。そうしないと、いつまでも、中途半端なコードを使うことになると思います。 なお、 Windows("リスト.csv").Activate は必要ありません。ファイルを開けると、そのファイルが、ActiveBook になります。 ただし、Windows ではなく、Workbooks です。Windows は、同じものが複数あることがありますので、Windowsでは指定しません。 '------------------------------------------- '基本は、標準モジュール '------------------------------------------- Sub SampleMacro1() Dim orgPath As String Dim fName As String Dim sPath As String Dim ret As Variant orgPath = CurDir '元のパス With ThisWorkbook.Worksheets("Sheet1") '場所はコンテナ指定すること sPath = .Range("A1").Value ' "C:\File" fName = .Range("A2").Value '"リスト.csv" End With 'フォルダ名とファイル名のチェック If sPath = "" Or fName = "" Then Exit Sub ChDir sPath With Application.Dialogs(xlDialogOpen) 'オープンダイアログ ret = .Show(fName) 'ret はダミー、Cancel は、False になります。 End With ChDir orgPath '元のパスに戻す End Sub
お礼
お答えいただきありがとうございます。 > なお、Windows("リスト.csv").Activate は必要ありません。ファイルを開けると、 そのファイルが、ActiveBook になります。 質問の1と2は繋がってなかったのですが、 これは、その後のマクロに他のブックにコピーし貼り付けるという作業がある事を省略したためです。 分かりにくくなってしまいすみません。 >ただし、Windows ではなく、Workbooks です。Windows は、同じものが複数あることがありますので、Windowsでは指定しません。 知りませんでした。 マクロの記録をやってそれに手を加えマクロを書いていました。 そのようにした方がいいんですね。早速直しました。 どうもありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルVBAの初歩の初歩。もっとエクセルVBA基礎から勉強して。 :="A2"はF2という文字列になえる A2セルの値は、Range("A2").Value 他におかしいところあるかもしれないが Openのファイル指定は、普通フルパスで指定しているが、質問のようなDos時代のような書き方でよいのかな。
お礼
どうもありがとうございました。 > Openのファイル指定は、普通フルパスで指定しているが、質問のようなDos時代のような書き方でよいのかな。 なぜかと言うと、その後にファイル名だけを使用したかったのでそうしました。
- cistronezk
- ベストアンサー率38% (120/309)
>A1にC:\File A1の「C:\File」を表示するのは MsgBox Range("A1").Value とすればできます。
お礼
お答えいただきありがとうございます。 助かりました。
補足
お答えいただきありがとうございます。 MsgBoxではありませんでしたが、Range("A1").Valueでできました。 助かりました。 どうもありがとうございました。 ------------------------------------------------------- 質問文を変更できないのでここに書かせていただきます。 cistronezkさんのおかげで上から2点は解決しました。 どうもありがとうございます。 A1にディレクトリ、A2にファイルネームを指定するために 設定のダイアログを出す方法をご存じないでしょうか。 よろしくお願いします。
お礼
お答えいただきありがとうございます。 教えていただいた方法でダイアログからファイルとフォルダ名を取得できました。 ありがとうございます。 >この様な場合は、新規に質問するのがマナーです 質問が3点あり、その内2点が解決したので残り1点をお答えいただきたいという整理のつもりで書いたのですが、これがマナー違反であれば申し訳ありません。