• ベストアンサー

指定のファイルを開くマクロ

こんにちは。 いろいろやってみましたが、うまくいかなかったのでアドバイスいただけませんか。 マクロで指定のファイルを開く場合、 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にファイルネームを指定するためにダイアログを出したいのですが、 そのような便利なマクロはあるのでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

基本的なこと >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 参考まで

noname#96687
質問者

お礼

お答えいただきありがとうございます。 教えていただいた方法でダイアログからファイルとフォルダ名を取得できました。 ありがとうございます。 >この様な場合は、新規に質問するのがマナーです 質問が3点あり、その内2点が解決したので残り1点をお答えいただきたいという整理のつもりで書いたのですが、これがマナー違反であれば申し訳ありません。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 一度は、きちんとコードを書いてあげたほうがよいのではないかと思いますね。そうしないと、いつまでも、中途半端なコードを使うことになると思います。 なお、 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

noname#96687
質問者

お礼

お答えいただきありがとうございます。 > なお、Windows("リスト.csv").Activate は必要ありません。ファイルを開けると、 そのファイルが、ActiveBook になります。 質問の1と2は繋がってなかったのですが、 これは、その後のマクロに他のブックにコピーし貼り付けるという作業がある事を省略したためです。 分かりにくくなってしまいすみません。 >ただし、Windows ではなく、Workbooks です。Windows は、同じものが複数あることがありますので、Windowsでは指定しません。 知りませんでした。 マクロの記録をやってそれに手を加えマクロを書いていました。 そのようにした方がいいんですね。早速直しました。 どうもありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

エクセルVBAの初歩の初歩。もっとエクセルVBA基礎から勉強して。 :="A2"はF2という文字列になえる A2セルの値は、Range("A2").Value 他におかしいところあるかもしれないが Openのファイル指定は、普通フルパスで指定しているが、質問のようなDos時代のような書き方でよいのかな。

noname#96687
質問者

お礼

どうもありがとうございました。 > Openのファイル指定は、普通フルパスで指定しているが、質問のようなDos時代のような書き方でよいのかな。 なぜかと言うと、その後にファイル名だけを使用したかったのでそうしました。

回答No.1

>A1にC:\File A1の「C:\File」を表示するのは MsgBox Range("A1").Value とすればできます。

noname#96687
質問者

お礼

お答えいただきありがとうございます。 助かりました。

noname#96687
質問者

補足

お答えいただきありがとうございます。 MsgBoxではありませんでしたが、Range("A1").Valueでできました。 助かりました。 どうもありがとうございました。 ------------------------------------------------------- 質問文を変更できないのでここに書かせていただきます。 cistronezkさんのおかげで上から2点は解決しました。 どうもありがとうございます。 A1にディレクトリ、A2にファイルネームを指定するために 設定のダイアログを出す方法をご存じないでしょうか。 よろしくお願いします。