- 締切済み
- すぐに回答を!
エクセル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)も開ける形にもしたいと思っています。 よろしくお願いいたします。
- kazuau2002
- お礼率46% (64/139)
- 回答数1
- 閲覧数1016
- ありがとう数8
みんなの回答
- 回答No.1
- Sinogi
- ベストアンサー率27% (72/260)
>*A1はファイルへのパス >*A2はファイル名 パスが \ で終わっており ファイル名に拡張子が明示されていれば Workbooks.Open hoge_path + hoge_filename でOKです。 >また、ファイル名がaaの場合、aa*.xls(aabb.xlsやaa1111.xls)も開ける形にもしたいと思っています。 aa*.xls では開けないと思います。 指定フォルダ内で aa*.xls に合致するファイルを順次開くコードを記述することになるでしょう。
関連するQ&A
- エクセルVBAの変数利用
シートのC1セルに入力したブック名をアクティブにするための 変数なのですが、アクティブになりません。 下のようにしていますが、とのようにすればよいでしょうか? Sub test() Dim FileName As Range FileName = ThisWorkbook.Path & "\" & Sheets("sheet1").Range("C1") & ".xls" Workbooks.FileName.Activate End Sub
- ベストアンサー
- オフィス系ソフト
- エクセル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の次のブックを開いてセルの中身をコピーしたいのです。 変数の使い方がよくわからないのですが、教えていただけますでしょうか。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 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 '////////////////////////////////////////////////////// 今回はファイルの開き方だけなので、実行コードを省略させていただきました。 初歩的な質問かと思いますが、何卒お力をお貸しいただけますと幸いです。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- エクセル VBA についてご教授願います。
ActiveWorkbook.SaveAs Filename:= "C:\Documents and Settings\ユーザー名\材料明細\" & Range("A1").Value & ".xls" このコマンドで、材料明細に("A1")の値のファイル名で保存しています。 材料明細にいくつかのフォルダがあります。そのフォルダを選択して、("A1")の値のファイル名で保存する方法を教えて下さい。
- 締切済み
- オフィス系ソフト
- 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」というファイルを探しに行ってしまいますよね・・・ こういう場合はどうすればよいのでしょうか。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBA エクセル 開いている別ファイルをアクティブにするには?
すみません、よろしくお願いいたします。 <前提> A.xls=コピー元ファイル(マクロを組んでいるのはこちら) 2009・・・.xls ファイル=コピー先ファイル(2009以降はファイル名が変化しますが、必ず頭に2009があります) 同一フォルダ内に上記のファイルがあります。 どちらも開いて、Aファイルのマクロを実行すると、Aのデータをコピーして、2009・・・のファイルに貼りつける。としたいのですが、 (1)ファイル名が変化するので貼り付け先のファイル名をどう指定したらよいかわからない。 (2)フォルダごと、色々な人へ配る予定なので、できればアクティブなファイルという指定をしたい。(他のファイルは開いてないという前提でOKです。) (3)フォルダ内には2009がつく別ファイルもあるので、(2)同様アクティブなファイルという指定をしたいです。 わかるかた、おねがいいたします。 BVA初心者です。 普通のマクロで記録したら、以下のようになりました。 (例) Sub Macro1() ' ' Macro1 Macro ' ' Range("A1").Select Selection.Copy Windows("20091002_2650.xls").Activate '←この20091002_2650.xlsが変化します。 Range("A10:B10").Select ActiveSheet.Paste End Sub
- ベストアンサー
- その他MS Office製品
- Excelマクロでyyyymmddの変数
Excelのマクロで他のファイルを呼び出す際、当日や前日(ファイル名:yyyymmdd.xls)のファイルを指定したいのですが、変数を指定する方法を教えてください。 Workbooks.Open Filename:="C:\WINDOWS\デスクトップ\20040215.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(エクセル)
- vbaでファイルを開くパス名に変数を使いたい
お世話になります。 下記の様にファイルを開く時のパス名に変数を使用したいのですが、 エラーがかかります。 ご教示頂けます様宜しくお願い致します、 記 Dim mywNm1 As String mywNm1 = Format(Now, "yyyymm") Workbooks.Open Filename:="C:\mywNm1_glp.xls", ReadOnly:=True
- ベストアンサー
- Visual Basic
- EXCEL VBAでファイル名取得
A1のセルにユーザー定義で書式設定をしたものをそのファイルの名前にしようと思ってます。 書式は「1」と入力すれば「001」と表示されるようになっています。 そのままセル+".xls"で保存しようとすると、「型がちがいます。」というエラーになり、そのセルを変数にしてvalueで表示すると、そのまま「1.xls」というファイル名になってしまします。 「001.xls」というファイル名にするにはどうしたらよいでしょうか? どなたかよろしければ、回答お願いします。
- ベストアンサー
- オフィス系ソフト
質問者からのお礼
ご回答ありがとうございます。 お礼が遅くなり申し訳ございません。 参考にさせていただきました。 変数を繫げる事に関しては、& で繫げて別変数に格納する事で対応しました。 aaa*.xlsになどのアスタリスクを使ったファイルOpenですが、以下のようにDirを使用してファイル名を事前に取得し、Openする事で解決しました。 'PPPATHには、対象のファイルが格納されているディレクトリ絶対パスを格納 'hogeには、aaaを格納 FName = Dir(PPPATH & "\" & hoge & "_*")