• ベストアンサー
  • 困ってます

VBAにおいて、""内で変数を使用したい

VBAにおいて、""内で変数を使用したい 0864_001.xls 0864_002.xls … 0864_009.xls というファイルがあるとき、0864_001.xlsを開く→処理→閉じる→0864_002.xlsを開く→… というように処理をしたいと思い、以下のようなマクロを作成しました。 Sub Test() Dim i As Integer For i = 1 To 9 Workbooks.Open ThisWorkbook.Path & "\0864_00i.xls" 処理 閉じる Next i End Sub 実行しようとしてもファイルを開くことが出来ずに困っています。 ""内で変数を使うことは出来ないのでしょうか? また、どのようにすれば実行できるようになるのか教えてください。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数4582
  • ありがとう数0

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

  • ベストアンサー
  • 回答No.1
  • naktak
  • ベストアンサー率36% (784/2138)

使えません。 ダブルクォーテーションでくくられている部分は、文字列です。 既にされているように、文字列の連結はアンパサンドを利用します。 Workbooks.Open ThisWorkbook.Path & "\0864_00" & cstr(i) & ".xls"

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • エクセルVBAの変数利用

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

  • 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 '////////////////////////////////////////////////////// 今回はファイルの開き方だけなので、実行コードを省略させていただきました。 初歩的な質問かと思いますが、何卒お力をお貸しいただけますと幸いです。 よろしくお願い致します。

  • エクセルVBAでパスの¥マークについて

    このマクロを記述したBOOKと同じフォルダー内にある、シート001.xls を開くマクロです。 同一フォルダーにあるのですから、このような記述になると思います。 Sub kakunin1() Workbooks.Open (ThisWorkbook.Path & "\" & "シート001.xls") End Sub しかし、以下の3つはすべてシート001.xls を開くことができました。 Sub kakunin2() Workbooks.Open (ThisWorkbook.Path & "\" & "\" & "シート001.xls") End Sub Sub kakunin3() Workbooks.Open (ThisWorkbook.Path & "\" & "\" & "\" & "シート001.xls") End Sub Sub kakunin4() Workbooks.Open (ThisWorkbook.Path & "\" & "\" & "\" & "\" & "\" & "\" & "シート001.xls") End Sub パスの¥マークは階層をあらわすのだと思っていましたがいくつ重ねてもなぜ開くのでしょうか?非常に初歩的な質問だと思いますが、ご教示いただければ幸いです。

  • VBマクロについて

    VBマクロについて 0864_001.xls 0864_002.xls … 0864_009.xls というxlsファイルがあります。 0864_001.xlsを開く→処理→閉じる→0864_002.xls→… のようなループを考え、matome.xls内で以下のようなマクロを作成したのですが実行されません。 Sub Test() Dim i As Integer For i = 1 To 9 Workbooks.Open ThisWorkbook.Path & "\0864_00" & CStr(i) & ".xls" Workbooks("\0864_00" & CStr(i) & ".xls").Activate Range("F1").Formula = "=max($B$11:$B$17)" Range("G1").Formula = "=max($B$391:$B$398)" Range("F1:G1").Copy Workbooks("matome.xls").Activate Sheet1.Activate Range("A" & CStr(i + 1)).PasteSpecial Paste:=xlPasteValues Workbooks("\0864_00" & CStr(i) & ".xls").Close SaveChanges:=False Next i End Sub 5行目でエラーが発生し、「インデックスが有効範囲にありません」とのメッセージが表示されます。 どのようにすれば実行されるのか教えていただきたいです。

  • ExcelのVBAでWEBページを開くのが遅い

    よろしくお願いいたします。 現在社内システムのデータをExcelに落とすVBAを作っています。 単純に、 sub test () URL = "http://..." Dim xls As Workbook Set xls = Application.Workbooks.Open(URL) end sub のようなものを作成して実行したのですが、 Set xls = Application.Workbooks.Open(URL) の所で50~60秒ほど時間がかかってしまいます。 もう少し早くする方法はないのでしょうか?

  • Workbooks.openについて

    超初心者です。 Workbooks.Openを使って他の任意のxslファイルを開きたいのですが、 Sub Test_FileOpen() Workbooks.Open Filename = "c:\MyDocuments\data.xls" End Sub のように書いても 「実行時エラー'1004': 'False.xls'が見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください」 と言うアラートが出て上手くいきません。 ファイルのパスは何度も確認したので間違いはないです。 ちなみに同じフォルダに置いて、 Sub Test_FileOpen() Workbooks.Open Filename = ThisWorkbook.Path & "\data.xls" End Sub とやっても同じアラートが出ます。 どこがおかしいのでしょうか? 原因が推測できる方、どうかご教授願います。

  • 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によるカレントフォルダのファイルを検索し開く

    カレントフォルダ内にファイル(コ―ド.xls)を見つけ開き、無ければMSG表示したい。 どのように、したらいいですか? 考えているのは、 Application.DefaultFilePath = ThisWorkbook.Path If ??? Then Workbooks.Open "コード.xls" else msgbox (ThisWorkbook.Path & "にコード.xlsを置いて下さい。") Exit sub end If です。 この???の部分を教えて頂きたいと思います。 よろしくお願いします。

  • VBAのプロシージャーと変数の名前の区別について

    VBAの初心者です。教えてください。 Sub ex() Dim a As Integer Dim b As Integer a = 2 a a, b MsgBox b End Sub Sub a(a As Integer, b As Integer) b = a End Sub 上記のプログラムを実行するとうまくいきません。VBAのプロシージャーと変数って同じ名前を使うとだめなのですか?教えてください。

  • VBAでフォルダの中の1個のファイルを表示したい

    Windows10、Microsoft 365使用の超初心者です。 毎月1回、一個だけファイルを、フォルダ「計算表」に手動で入れています。 入れるのは、翌月のファイルで、A年B月計算表完成.xlsです。 いま、フォルダ「計算表」に、2年8月計算表完成.xlsが,1個 いれてあるので、エラーが発生します。 毎月1回のエラーを回避するため、何か良い方法を知りたいです。 よろしくお願いします。 Sub 最新計算書ひらく() Dim wb As Workbook Dim ws As Worksheet ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error Resume Next Set wb = Workbooks("2年7月計算表完成.xls") If err.Number <> 0 Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\計算表\2年7月計算表完成.xls") err.Clear End If Set ws = wb.Worksheets("集計") On Error GoTo 0 wb.Activate ws.Select・・・・・・ここでエラーになる End Sub