• 締切済み

エクセルVBAで複数の変数に、パス、ファイルを格納しOpenする方法

よろしくお願いします。 環境:Excel2003 以下のような形でファイルを開きたいのですが、変数を繫げる方法がわかりません。 *A1はファイルへのパス *A2はファイル名 hoge_path = ActiveSheet.Range("A1").Value hoge_filename = ActiveSheet.Range("A2").Value Workbooks.Open hoge_pathとhoge_filenameを繫げた変数 また、ファイル名がaaの場合、aa*.xls(aabb.xlsやaa1111.xls)も開ける形にもしたいと思っています。 よろしくお願いいたします。

みんなの回答

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.1

>*A1はファイルへのパス >*A2はファイル名 パスが \ で終わっており ファイル名に拡張子が明示されていれば Workbooks.Open hoge_path + hoge_filename でOKです。 >また、ファイル名がaaの場合、aa*.xls(aabb.xlsやaa1111.xls)も開ける形にもしたいと思っています。 aa*.xls では開けないと思います。 指定フォルダ内で aa*.xls に合致するファイルを順次開くコードを記述することになるでしょう。

kazuau2002
質問者

お礼

ご回答ありがとうございます。 お礼が遅くなり申し訳ございません。 参考にさせていただきました。 変数を繫げる事に関しては、& で繫げて別変数に格納する事で対応しました。 aaa*.xlsになどのアスタリスクを使ったファイルOpenですが、以下のようにDirを使用してファイル名を事前に取得し、Openする事で解決しました。 'PPPATHには、対象のファイルが格納されているディレクトリ絶対パスを格納 'hogeには、aaaを格納 FName = Dir(PPPATH & "\" & hoge & "_*")

関連するQ&A

  • エクセルVBAで、複数のブックからデータベースを作りたい

    こんにちは。VBAをはじめたばかりの者です。 変数の使い方で教えていただきたいことがあります。 Dim myFLName As String myFLName = ThisWorkbook.Path & "\001.xls" Workbooks.Open Filename:=myFLName, ReadOnly:=True Workbooks("dbase.xls").Activate Range("A2").Select ActiveCell.Value = 1 ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R3") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("C2") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R2") ActiveCell.Offset(1, -3).Select 001.xls~(連番でない)200.xlsくらいまでのファイルがあり、 同じフォルダにdbase.xlsを作って1ブックから1レコードになるようにしたいと 思います。 こんな感じで1行目はできたのですが、2行目の1列目に「2」を入れ、 2列目からは001.xlsの次のブックを開いてセルの中身をコピーしたいのです。 変数の使い方がよくわからないのですが、教えていただけますでしょうか。 よろしくお願いいたします。

  • エクセルVBAの変数利用

    シートのC1セルに入力したブック名をアクティブにするための 変数なのですが、アクティブになりません。 下のようにしていますが、とのようにすればよいでしょうか? Sub test() Dim FileName As Range FileName = ThisWorkbook.Path & "\" & Sheets("sheet1").Range("C1") & ".xls" Workbooks.FileName.Activate End Sub

  • Excel VBAで異なるファイル間のコピー

    異なるファイル間で値のみをコピーしたいです。下記の様な感じです。 hoge1.xlsのA1からA10のセルの値のみをhoge2.xlsのB1からB10へコピーする。 以下の様に書いてみたのですが、数式がコピーされてしまいます。 VBAをやったことがなく、今ネットで30分ほど見て書いてみたので 根本的に理解していません。簡単な書き方を教えていただきたいです。 Sub test() Dim Fname As String Fname = "hoge1.xls" Workbooks.Open Filename:=Fname, ReadOnly:=True Dim range1 As Range Set range1 = Worksheets("Sheet1").Range("A1:A10") range1.Copy Destination:=Workbooks("hoge2.xls").Worksheets("Sheet1").Range("B1:B10") End Sub また、ファイルを開いたり閉じたりは必要なのでしょうか? Workbooks.Open Filename:=Fname, ReadOnly:=True を書かずに、いきなり Set range1 = Workbooks("hoge1.xls").Worksheets("Sheet1").Range("A1:A10") はダメなのでしょうか?? よろしくお願いします。

  • vbaでファイルを開くパス名に変数を使いたい

    お世話になります。 下記の様にファイルを開く時のパス名に変数を使用したいのですが、 エラーがかかります。 ご教示頂けます様宜しくお願い致します、        記 Dim mywNm1 As String mywNm1 = Format(Now, "yyyymm") Workbooks.Open Filename:="C:\mywNm1_glp.xls", ReadOnly:=True

  • ExcelVBA変数等でのファイルのOpen方法

    ExcelVBAで、変数でのファイルのOpen方法を教えてください。 以下のフォルダ構造とします。 '////////////////////////////////////////////////////// マクロファイル.xls 1フォルダA  ∟1999ファイルA.xls  ∟2000ファイルA.xls  ∟2001ファイルA.xls  ∟2002ファイルA.xls  ∟2003ファイルA.xls  ∟2004ファイルA.xls ・・・ 2フォルダB  ∟1999ファイルB.xls  ∟2000ファイルB.xls  ∟2001ファイルB.xls  ∟2002ファイルB.xls  ∟2003ファイルB.xls  ∟2004ファイルB.xls ・・・ 3フォルダC  ∟結果ファイルC.xls '////////////////////////////////////////////////////// マクロファイル.xlsのシートにコンボボックスとボタンを配置します。 コンボボックスで【2001】を選択した場合は、 前後1年…合わせて合計3年分のファイルの「A5~A25」の値が、 「結果ファイルC.xls」にコピーされるようにしたいのです。 コピー内容や範囲が多く1つのプロシージャーに収まり切りませんでした。 そこで「結果ファイルC.xls」ファイルを1つめのプロシージャで開き、 2つめのプロシージャで残りの処理を実行しようとしたのですが、 変数、コンボボックスの値でのファイルを開く方法がわからず困っており、 どなたかお知恵をお貸し下さい。 以下のようなコードを書いてみましたがエラーとなりました。 '////////////////////////////////////////////////////// Dim vTgYear As Variant Dim myFLName1 As String, sWbkSubName1 As String Dim myFLName2 As String, sWbkSubName2 As String, SubName As String, vTgYear = ComboBox1.Value For i = -1 To 1 sWbkSubName1 = "3_フォルダC\結果ファイルC.xls" myFLName1 = ThisWorkbook.Path & sWbkSubName1 Workbooks.Open Filename:=myFLName1 SubName = "vTgYear + i & _ファイルA.xls" sWbkSubName2 = "1_フォルダA & SubName" myFLName2 = ThisWorkbook.Path & sWbkSubName1 Workbooks.Open Filename:=myFLName2 (実行コード中略) Next i '////////////////////////////////////////////////////// 今回はファイルの開き方だけなので、実行コードを省略させていただきました。 初歩的な質問かと思いますが、何卒お力をお貸しいただけますと幸いです。 よろしくお願い致します。

  • EXCEL VBA セルからファイル名を読み込む

    EXCEL VBAについての質問です 同じ処理を名前の違う複数のファイルで行いたいと思っています そこで、セルA2へファイル名の『○○.xls』○○部分だけをそれぞれのファイルに書き込んでおき、マクロは共通にしてファイル名をそれぞれのファイルから読み込んで実行したいと思っています。 良い方法を教えてください。 Workbooks("200809.csv").Activate Sheets("200809").Select Range("C3:C33").Copy Windows("○○.xls").Activate'←ここをファイルにあわせて変更できる形にしたい Sheets("報告書").Select Range("G5:G35").Select ActiveSheet.Paste Windows("200809.csv").Activate Range("K3:K33").Copy Windows("○○.xls").Activate’←ここ Sheets("報告書").Select Range("I5:I35").Select ActiveSheet.Paste Workbooks("200809.csv").Close SaveChanges:=False よろしくお願いします。

  • VBA 他のエクセルファイルデータを読み込む

    エクセルのVBAに関する質問です。 かじった程度の知識でがんばってはみたのですが、以下のことがどうしてもできません。 集計ファイルと、それぞれが入力するファイルがいくつか(具体的には1A.xls、1B.xls、2A.xls、2B.xlsといった数字とアルファベットの組み合わせ)あります。 入力ファイルに書かれているデータを集計ファイルに取り込もうと考えています。 入力ファイル名が(1.xls,2.xls・・・)の様に数字だけの取り込みはできました。 m = Val(UserForm2.TextBox1.Text) For i = 1 To m On Error GoTo myError Workbooks.Open Filename:="C:" & i & ".xls", UpdateLinks:=0 Range("f65536").End(xlUp).Activate Workbooks(i & ".xls").Activate Sheets("入力ファイル").Select Range("A3:X52").Select Application.CutCopyMode = False Selection.Copy Workbooks("集計ファイル.xls").Activate Sheets("DB").Activate Range("a65536").End(xlUp).Activate Selection.Offset(1).Select ActiveSheet.Paste Range("a65536").End(xlUp).Select   Workbooks(i & ".xls").Close SaveChanges:=False myError: Next i Application.DisplayAlerts = True こんな感じです。 これを、数字だけでなく数字+アルファベット.xlsのファイル名にしてデータを取り込むにはどうすればいいのでしょうか?色々と試行錯誤をしたり、ネットで調べたりしたのですが、詰んでしまいました。 どなたかお助け下さい。

  • EXCEL VBAで変数を使ってファイルを開きたいのですが。

    いつもお世話になります。Win98-EXCEL2000での作業です。 いくつかのファイルで同じ処理をしたいので、変数を使ってファイルを開くことができたらいいなと思って、こんな感じがいいなと作ってみたのですが、 Dim iii As Integer Dim myF As String For iii = 1 To 5 If iii = 1 Then myF = "偏貼_log" ElseIf iii = 2 Then myF = "Cof_log" ・・・と、5つのファイル名を入れて、 Workbooks.Open Filename:="myF.xls" としたいのですが、当然ここで変数が入っても「myF.xls」というファイルを探しに行ってしまいますよね・・・ こういう場合はどうすればよいのでしょうか。 宜しくお願いします。

  • excelのファイルとセル値を書き出したい

    excel2003を利用しています。 とあるフォルダにある excelファイル名(自分自身のファイルを除く) を全て書き出して、 且つ A1セルの値をB列に書き出すことを、やろうとvbaを作ってみましたが。 最後のファイルのA1セルを書きだすところで、エラーになっていまい そこだけ空白になってしまいます。※写真参照 記述は以下の通りです。どのように修正すればよいか 教えていただけないでしょうか? また他にもっと優れた記述があれば、そちらも教えて欲しいです。 よろしくお願いします。 Sub test() Dim buf As String, cnt As Long Dim Path As String Path = ThisWorkbook.Path & "\" buf = Dir(Path & "*.xls") cnt = 2 Do While buf <> "" If buf <> ThisWorkbook.Name Then cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Workbooks.Open Filename:=Path & "\" & buf MsgBox Workbooks(buf).Worksheets(1).Range("A1").Value Cells(cnt, 2) = Workbooks(buf).Worksheets(1).Range("A1").Value Workbooks(buf).Close End If Loop End Sub

  • Excelマクロでyyyymmddの変数

    Excelのマクロで他のファイルを呼び出す際、当日や前日(ファイル名:yyyymmdd.xls)のファイルを指定したいのですが、変数を指定する方法を教えてください。 Workbooks.Open Filename:="C:\WINDOWS\デスクトップ\20040215.xls"←これを変数にしたい

専門家に質問してみよう