エクセルマクロでファイル名を変数指定したい!

このQ&Aのポイント
  • エクセルマクロを使って起動しているファイル名を変数で指定して参照したい場合、うまくいかないことがあります。この質問では、問題点を教えていただきたいという内容です。
  • マクロ構文の一部が不適切なため、エクセルファイルの参照が正しく行われなかったり、セルのコピーができなかったりする可能性があります。
  • 具体的な問題箇所としては、Workbooks関数でファイル名を指定する部分やWorksheets関数でシート名を指定する部分、Cells関数でセルを検索する部分などがあります。
回答を見る
  • ベストアンサー

エクセル マクロ ファイル名を変数指定したいのですが?

マクロ超初心者です。 何方かご存知の方教えてください。 起動しているエクセルのファイルを変数で定義して参照したいのですがうまくいきません。下記は何処が悪いのでしょうか? 因みにB N Namaeは変数指定してます。 Worksheeetsは参照します。最後はセルコピーの構文です。 マクロ構文 Workbooks("月報 & B.xls").Activate Worksheets(N & "月").Select Cells.Find(What:=Namae, LookIn:=xlValues, LookAt:=xlWhole).Offset(1, 0).Resize(RowSize:=405, ColumnSize:=4).Select Selection.Copy

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

  • ベストアンサー
  • suz83238
  • ベストアンサー率30% (197/656)
回答No.1

Workbooks("月報 & B.xls").Activate      ↓ Workbooks("月報" & B & ".xls").Activate にしてみて下さい。

footaddict
質問者

お礼

回答ありがとうございました。 解決できました。

関連するQ&A

  • Excelマクロ シート名を変数で選択

    Excelマクロの初心者です。 シート名が「1月」・・・「12月」のある(変数定義された)部分を コピー貼付けしたいのですが、 Worksheet(N & "月").Select の行でコンパイルエラーになります。 何がいけないのでしょうか、ご存知の方教えてください。 Sub Dim Namae As String Dim N As Integer For N = 1 To 12 Worksheet(N & "月").Select Cells.Find(What:=Namae, LookIn:=xlValues, LookAt:=xlWhole).Offset(1, 0).Resize(RowSize:=405, ColumnSize:=4).Select Selection.Copy Windows("別ファイル").Activate Sheets("XXX").Cells(3, 1 + N * 5).Select Selection.PasteSpecial Paste:=xlPasteValues,   Operation:=xlNone, SkipBlanks _   :=False, Transpose:=False Next End Sub

  • EXCEL マクロでの検索をお教えください

     下記のようなマクロを使いたいのですがこの場合×があるときは良いのですが、  無いときエラーが出ます。どの様にすれば良いのかお教えください。  無いときエラーは オブジェクト変数または With ブロック変数が設定されていません。  となります。 Sub 検索()    Range("K12:K70").Select    Cells.Find(What:="×", After:=ActiveCell, LookIn:= _    xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _    xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate End Sub

  • EXCEL マクロの指定の仕方

    マクロで線の色を指定したいのですが、上手くいかず困っています .ForeColor.RGB = Worksheets("sheet1").Range("F2").Interior.ColorIndex 赤色を指定したいのですがBにどういうコードを入れれば良いですか? FはVlookupで列Bより色を指定するようにしています。 マクロは始めたばかりで良く分からないので、他に必要な情報もわかりません 必要な情報なども併せて教えてください。 よろしくお願いします。 Dim rngStart As Range Dim rngEnd As Range Dim BX As Single, BY As Single, EX As Single, EY As Single Set rngStart = Worksheets("sheet2").Cells.Find(What:=Worksheets("sheet1").Range("D2"), LookIn:=xlValues, LookAt:=xlWhole) Set rngEnd = Worksheets("sheet2").Cells.Find(What:=Worksheets("sheet1").Range("E2"), LookIn:=xlValues, LookAt:=xlWhole) BX = rngStart.Left BY = rngStart.Top EX = rngEnd.Left + rngEnd.Width EY = rngEnd.Top With Worksheets("sheet2").Shapes.AddLine(BX, BY + 10, EX, EY + 10).line .ForeColor.RGB = Worksheets("sheet1").Range("F2").Interior.ColorIndex .Weight = 3 .EndArrowheadStyle = msoArrowheadTriangle End With

  • エクセルのVBAで悩んでいます。

    いつもありがとうございます。 エクセルのVBAで悩んでいます。 セルの範囲指定をVBAで行いたいのです。 ただし、引数に数値変数を使用する為、Cellsプロパティを使います。 すると、離れている範囲の範囲指定が出来ないのです。 例えば、Rangeプロパティだと、 Range("A5:E5,A9:E32").Select こうなるところを、 A9:E32 を変数に置き換えたくて、 Range("A5:E5", Cells(g, 1), Cells(h, 5)).Select と、するとエラーが出ます。 VBAの前文は次の通りです。 Private Sub CommandButton1_Click() a = Me.TextBox1.Value b = Me.TextBox2.Value Set c = Range("a:a").Find(what:=a, LookIn:=xlValues, lookat:=xlWhole) Set d = Range("a:a").Find(what:=b, LookIn:=xlValues, lookat:=xlWhole) 'MsgBox c + d e = c.Address 'MsgBox e f = d.Address 'MsgBox f g = Range(e).Row MsgBox g h = Range(f).Row MsgBox h Range(Cells(g, 1), Cells(h, 5)).Select End sub よろしくお願い致します。

  • エクセルで検索と貼り付けのマクロを組みたい

    エクセルで次のようなマクロを組みたいのですがうまくいきません。 ・C5からBB6の範囲において、Aという文字が入っているセルを検索し、その4行下1列右にコピーしておいたものを値だけ貼り付ける。 検索範囲を指定したいのは同じシート内に他にもAという文字が入っているセルがあるからです。このマクロを実行すると何故かC5からBB6の範囲以外のセルを選択し、貼り付けてしまいます。どこがいけないのでしょうか。ぜひ、教えてください。お願いします。 Range("C5:BB6").Select Cells.Find(What:="A", After:=ActiveCell, LookIn:=xlValues,LookAt:= _ xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _False, MatchByte:=False, SearchFormat:=False).select Selection.Offset(4, 1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False

  • セル範囲を変数に格納したい

    セル範囲を変数に格納したいのですがどのようなコードになりますか ? (配列に値を読み込むのでは無く、単純にセル範囲を変数としたい) TargetRange = Range("A2:Z2") Set rngFind=TagetRange.Find(What:="A",LookIn:=xlValues,LookAt:=xlPart, ----- )のように使用したい。

  • マクロについて質問です。

    A B C   1 3 りんご 2  赤 3 くだもの 4 6 みかん 5 オレンジ 6 くだもの 7 9 ぶどう 8  紫 9 くだもの というデータがシート1にあったとして、シート2のa2セルに6と入力すると以下のようにa5セル以降に抽出し、6という入力を消すと抽出したものも消えるようなマクロ 6 みかん  オレンジ  くだもの 上のような質問で下のマクロを教えていただけたのですが、もし、みかんのb列も3だった場合いしたのようにみかんの行まで抽出できるようにするには下の構文をどうかえたらよいでしょうか。下手くそな質問ですがよろしくお願いします。 3 りんご   赤  くだもの  みかん  オレンジ  くだもの 現在、わかっている構文↓ Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim c As Range, wS As Worksheet Set wS = Worksheets("Sheet1") With Target If .Address = "$A$2" Then If .Value <> "" Then Set c = wS.Range("B:B").Find(what:=.Value, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then c.Offset(, 1).Resize(3).Copy Range("A5") Else MsgBox "該当データなし" End If Else Range("A5").Resize(3).ClearContents End If End If End With End Sub 'この行まで

  • マクロがエラーになります。原因は?

    先日zap35さんにB1:O1に掲げる文字とそのセルの色と同じ ものをB4:AD27の範囲内で見つけてそのセルと、左のセルを 色づけする、というマクロを教わりました。(というより すべて教えてもらいました) コードは完璧で動いているのですが、私のほうでゴチャゴチャ いじっているうちに、B4:AD27の範囲の文字を関数により表示 するように変更しました。たぶんこのことが原因だと思うので すが、色がつかなくなりました。関数をはずして、文字として 打ち込むと、動作します。コードの一部を変更したりして関数でも 動作するようになるでしょうか? Sub Macro1() Dim r, trg As Range  For Each r In Range("B4:AD27")   If r.Value <> "" Then    Set trg = Range("B1:O1").Find(what:=r.Value, LookIn:=xlValues, lookat:=xlWhole)    If Not trg Is Nothing Then     r.Offset(0, -1).Resize(1, 2).Interior.ColorIndex = trg.Interior.ColorIndex '    r.Offset(0, -1).Resize(1, 2).Font.ColorIndex = trg.Font.ColorIndex    End If   End If  Next r End Sub

  • Excelマクロで・・・

    任意の変数nを参照し、範囲A1:(A1+n)の最大値を 計算するマクロを作りたいと考えています。 とりあえず Formula="max(Cells(1,1),Cells(1,n))"と書いてみた のですが、(当然なのでしょうが)ダメでした。 良く分からないですがFormulaを使う時はA1とかB15 しか入力出来ないようです。何か良い方法をご存知 でしたらどうかよろしくお願い致します。

  • エクセル マクロ REPLACEMENT

    エクセル2010を使っています。 置換をマクロでやろうと次のような文を見つけました。 Sub データ_ボタン2_Click() Range("g2:g1000").Select With Selection .Replace What:=注 , Replacement:="", LookAt:=xlWhole End With End Sub ボタン押下後、セレクトまではやっているのですが置換してくれません、どこがいけないのでしょうか? また正しくはどうしたら良いでしょうか? やりたいのは、G列の 注半角スペースの二文字を削除したいと思っています。 くわしい方、よろしくお願いします。

専門家に質問してみよう