• ベストアンサー

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

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

noname#96687
noname#96687

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

  • ベストアンサー
  • 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/17068)
回答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にファイルネームを指定するために 設定のダイアログを出す方法をご存じないでしょうか。 よろしくお願いします。

関連するQ&A

  • Excelでファイルを開くをマクロで行いたい

    マクロ初心者です "ファイルを開く"をマクロの記録で記録させると ChDir "C:\Documents and Settings\○○\△△\※※" Workbooks.Open Filename:= _ "C:\Documents and Settings\○○\△△\※※¥LotLog20070131.csv" Windows("●●●.xls").Activate End Sub と記録されます この中で 開きたいファイルネ-ム(上記ならばLotLog20070131.csv)を "●●●.xls"の どこかのセルを参照に開きたいのですが どうすれば宜しいのでしょうか?

  • Excelマクロで同じブックにCSVを読み込むには

    Excelの指定したシートにCSVファイルを読み込ませたいのですが 以下のVBAマクロを実行すると新しいブックが起動して 新しいブックの方にCSVファイルが読み込まれてしまうのですが これをVBAマクロを実行しているブックの指定のシート(例えばSheet3など)に 読み込ませたいのですがどのように記述すればよいのでしょうか。 よろしくお願いします(Excel2010) Sub Macro1()  ChDir "C:\test"  Workbooks.Open Filename:= "test1.csv" End Sub

  • どの名前のcsvでも、マクロで取り込めるようにしたい。

    Excel2000のVBAで作成しております。 csvファイルからデータを取り込み、セットするマクロを作りたいのですが、 マクロファイルオープン時に選択するcsvファイルを、 その後のデータ抽出作業工程で対象にする時には、 どのように書けば良いのでしょうか? Workbooks("*.csv").Activateと書いてもエラーになってしまいました。 例えば Workbooks("オケーウェブ.csv").Activateと書けば オケーウェブ.csvをActivateに出来ることは分かったのですが、 その時によって、 オケーウェブ.csv ABC.csv 報告書.csvなどと、選択するcsvファイル名が異なります。 マクロファイルオープン時の一番最初に選択したcsvファイルをActivateにするには、 どのように書けば良いのでしょうか? どなたかご教授をお願いいたします。

  • EXCELマクロを無効にして開く方法

    掲題の通りなのですが、EXCEL2007で作成されたマクロ有効ファイル(XLSM形式)を マクロ無効の状態で開く方法が分からず困っております。 マクロの内容は Workbook_Open 処理で、特定セルに入力されている EXCELファイルを開き、自身は閉じるというものです。 Private Sub Workbook_Open() Dim FileName As String '1ファイル目 Range("A2").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate '2ファイル目 Range("A3").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate ・・・・・・繰り返し DoEvents ThisWorkbook.Close End Sub 上記の特定セルに設定してあるファイルパスを変更するためには マクロを無効にして開かなければなりません。 マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して 該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で マクロ無効状態で開く方法があれば、ご教授頂ければと思います。

  • 【マクロ】指定したファイルを開いてマクロを実行

    マクロ初心者です。よろしくお願いします。 <質問> コマンドボタンをクリックしたら、任意のエクセルファイルを指定して開き、その開いたファイル(白紙状態のファイル)にマクロを実行させる方法を探してます。 <作成マクロ> Private Sub CommandButton1_Click() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If Workbooks(Dir(OpenFileName)).Activate ActiveCell.FormulaR1C1 = "テスト" Range("A1").Select Selection.Copy Range("B1").Select ActiveSheet.Paste End Sub <マクロ説明> --コマンドボタンをクリックして指定したエクセルファイルを開く-- Private Sub CommandButton1_Click() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If Workbooks(Dir(OpenFileName)).Activate --開いたエクセルファイル(白紙状態)のセルA1に「テスト」を入力した後、コピーしセルB2に貼り付ける--   ActiveCell.FormulaR1C1 = "テスト" Range("A1").Select Selection.Copy Range("B1").Select ActiveSheet.Paste End Sub コマンドボタンをクリック ↓ 任意のエクセルファイルを指定して開く ↓ 開いたファイル(白紙状態のファイル)のセルA1に「テスト」と書き込み セルA1の「テスト」をコピーしセルB1に貼り付ける このマクロを実行させるにはどこを改善すれば良いでしょうか? ご助言いただけると助かります。 よろしくお願い致します。

  • 【マクロ】指定したファイルを開いてマクロを実行

    マクロ初心者です。よろしくお願いします。 <質問> コマンドボタンをクリックしたら、任意のエクセルファイルを指定して開き、その開いたファイル(白紙状態のファイル)にマクロを実行させる方法を探してます。 <作成マクロ> Private Sub CommandButton1_Click() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If Workbooks(Dir(OpenFileName)).Activate ActiveCell.FormulaR1C1 = "テスト" Range("A1").Select Selection.Copy Range("B1").Select ActiveSheet.Paste End Sub <マクロ説明> --コマンドボタンをクリックして指定したエクセルファイルを開く-- Private Sub CommandButton1_Click() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If Workbooks(Dir(OpenFileName)).Activate --開いたエクセルファイル(白紙状態)のセルA1に「テスト」を入力した後、コピーしセルB2に貼り付ける--   ActiveCell.FormulaR1C1 = "テスト" Range("A1").Select Selection.Copy Range("B1").Select ActiveSheet.Paste End Sub コマンドボタンをクリック ↓ 任意のエクセルファイルを指定して開く ↓ 開いたファイル(白紙状態のファイル)のセルA1に「テスト」と書き込み セルA1の「テスト」をコピーしセルB1に貼り付ける このマクロを実行させるにはどこを改善すれば良いでしょうか? ご助言いただけると助かります。 よろしくお願い致します。

  • エクセルのマクロでファイルを自動で保存するには?

    こんにちは。お世話になります。 エクセルのVBAマクロ文の書き方でお知恵を拝借したいと思います。 さて、私のかかる業務でエクセルファイルで営業実績を出しています。 COBOLで作ったファイルをCSVにインポートして そのCSVの値を別のエクセルファイルで引っ張るという手順を踏んでいますが、 それをマクロで動かすとエクセル上で『保存しますか?』と聞いてきます。 答えは『はい(Y)』で確定しているので、その命令文さえ組み込められればいいのですが、 その命令文の書き方が判りません。 (解決したいVBAマクロの命令文) Workbooks.Open Filename:="D:\(Aファイル).csv" Workbooks.Open Filename:="D:\(Aファイルの値を引っ張るBファイル).xls" ThisWorkbook.Saved = True (ここで聞いてくる注意に自動で『Y』を入れたいと思っています。) ActiveWindow.Close ActiveWindow.Close 以上、お知恵を拝借したく、お願いいたします。

  • エクセルのマクロ

    お世話になります。 Book1.xlsというファイルから、不特定のファイルを開き、一定の作業の後、閉じる場合のマクロについて伺います。 name1、name2のファイルを開き、vlookup関数を入力する場合のマクロの記載は、サイトを検索し、下記のようにすればできました。 Dim name1 As String Dim name2 As String sub macro1() 省略 Workbooks.Open Filename:=name1 Workbooks.Open Filename:=name2 Windows("Book1.xls").Activate Range("C6").Select ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC1,'[" & name1 & "]sheei1'!C1:C155,R1C,FALSE)" Range("C7").Select ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC1,'[" & name2 & "]sheei1'!C1:C155,R1C,FALSE)" (省略) ***************************** Windows("name1").Activate ActiveWindow.Close  Windows("name2").Activate ActiveWindow.Close ***************************** として、呼び出したファイルを(保存せず)閉じたいのですが、("name1")("name2")の部分の記載方法を教えてください。よろしくお願いします。

  • EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる

    EXCELのVBAでマクロを使ってファイルを開こうとしている際、指定したファイルが存在しなかった場合、普通はマクロのエラーが出て「ファイルが存在しません」となりますが、指定したファイルが存在しなかった場合には、メッセージボックスを表示させ、そこで処理を中止させるか、または、その無いファイルの処理は飛ばして次のファイルの処理を行う用にさせることはできるでしょうか? Sub test1() Workbooks.Open Filename:="C:\Documents and Settings\001.xls (001が存在しない場合メッセージボックスを出しマクロを中止するか次の002を開くか選ぶ) Workbooks.Open Filename:="C:\Documents and Settings\002.xls End sub

  • Excelのマクロで、セル内の文字をファイル名にしたい

    ”プロト.xls”というExcelファイルの中に、以下の動作をするマクロを作成したいのです。 (1)”C:\顧客\顧客納期連絡.xls”というExcelファイルを開き、  それを”C:\顧客\A.csv”という名前のcsvファイルにする。 (2)”C:\顧客\A.csv”を”xxxxxxxxxxxxxxxxxx”(※注1)という名前にしてコピーする。 ※注1:”xxxxxxxxxxxxxxxxxx”の部分は、”プロト.xls”ファイルのSheet”マスター”のセルD9から取得させる。 そのセルは、 C:\顧客\ABCDEF0215.csv と記述しています。 (3)コピー後、”C:\顧客\A.csv”を削除する。 ------------------------------------------------------------------- Sub 顧客納期連絡() ' ' 顧客納期連絡 Macro ' マクロ記録日 : 2010/2/15 ユーザー名 : xxxxxxx ' ' ChDir "C:\顧客" Workbooks.Open Filename:="C:\顧客\顧客納期連絡.xls" ActiveWorkbook.SaveAs Filename:="C:\顧客\A.csv", FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Save ActiveWindow.Close ActiveWorkbook.Save Dim fname1 As String Dim fname2 As String fname1 = "C:\顧客\A.csv" fname2 = Workbooks("プロト.xls"), Sheets("マスター"), Cells("D9") FileCopy fname1, fname2 Kill "C:\顧客\A.csv" End Sub ------------------------------------------------------------------- 上記のマクロを作成したのですが、FileCopyの行で、構文エラーか型に一致していない、 というエラーになりマクロ再生が停止します。 セルの内容をファイル名にしたいのですが、何か良い方法はございませんでしょうか? 私は超初心者なので、何卒宜しくお願い致します。

専門家に質問してみよう