• ベストアンサー

ブック名を変数にしたらアクティブになりません。

色々と調べたり試したのですが、どうしても判らないので質問させてください。 Excel2002でマクロを組んでいます。 セル上の数値を使って、ブック名を変数に格納しました。 したい事は、「DataBase.xls」のCalendarシートの内容を 「07年6月売上.xls」のとあるシートに値貼り付け です。 格納した変数 Dim Uriage As String Uriage = Worksheets("設定").Range("A4") & "年" & Worksheets("設定").Range("B5") & "月売上.xls " 上記のブックを開き、マクロを記述したブックに戻り、 再度上記のブックをアクティブにしようとすると 「有効範囲にありません」とメッセージが出ます。 デバッグ状態で記述を見てみると 1 Windows("DataBase.xls").Activate (←マクロ記述のブック名) 2 Sheets("Calendar").Select 3 Range("B7:H7").Select 4 Selection.Copy 5 Windows(Uriage).Activate (←変数格納したブック名) 5番でとまっています。 ですが、オンマウスにするとちゃんと「"07年6月売上.xls"」と表示が出ます。 それ以前に、ファイルを開くことは出来てるのに・・・・ いったいどういう事なのか、どうかご教示ください。 宜しくお願いします。

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

  • ベストアンサー
回答No.2

こんにちは。 提示のコードではエラーが出るはずはないので、 以下のコードをVBEのコードウィンドウに貼り付けてみたところ、 >Uriage = Worksheets("設定").Range("A4") & "年" & Worksheets("設定").Range("B5") & "月売上.xls " "月売上.xls■" の .xls の後に、スペース(■)が入ってましたよ。(^^;;; これでは、Windows("07年6月売上.xls■").Activateとなり、 存在しないブックを指定しているので、エラーとなるのは当然ですね。 これでOpenが出来るのも、おい、おい、という感じですが。 外してましたら、ご容赦! 以上です。  

hyorono
質問者

お礼

あぁぁぁ!!!それです!!!! なんて間抜けな・・><。 どうもありがとうございます! ほんとに助かりました!!! でもOpen出来るなんて^^;だまされた気分ですww またどうしても解決出来ないことが出てきたら ぜひ宜しくお願いします^^

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

エクスプローラのオプションで、拡張子を表示する or 表示しないの設定でも変わってきたりします。 Windowsではなく、Workbooks(Uriage).Activate にしたらどうでしょうか? > それ以前に、ファイルを開くことは出来てるのに・・・・ ファイルを開くのもVBAで行っているなら変数に代入しちゃう方が確実です。 Dim wb As Workbook Set wb = Workbooks.Open("フルパス") wb.Activate 上手く行かない場合はコードを全文掲載してみて下さい。

hyorono
質問者

お礼

すみません、ものすごく間抜けなことをしてました・・・^^; 2番目の回答者様のアドバイスで解決いたしました。 でも、今回papayuka様のアドバイスで、大変勉強になりました! 本当にありがとうございます。 また、どうしても解決出来ないことがあったら ぜひ宜しくお願い致します^^

hyorono
質問者

補足

早速のアドバイスありがとうございます!! 回答者さまのアドバイスにそって、まず「Workbooks(Uriage).activate」にしてみたのですが、うまく行かず 変数をStringからWorkbookにしてもうまく行かず・・・ もう、ほんとにどうしていいのやら・・・ コードを全文掲載しますので、見ていただけますか? 見難いかもしれませんが、どうぞ宜しくお願いします!!! Sub Uriage() Dim Uriage As String Uriage = Worksheets("設定").Range("A4") & "年" & Worksheets("設定").Range("B5") & "月売上.xls " '当月売上ファイルを開く Workbooks.Open Filename:=Worksheets("設定").Range("D10").Value & Uriage Sheets("Sheet1").Select 'シートのロックを解除 ActiveSheet.Unprotect 'DataBaseのカレンダー情報を、売上ファイルに値貼り付けする Windows("DataBase.xls").Activate Sheets("Calendar").Select Range("B7:H7").Select Selection.Copy ★Windows(Uriage).Activate Range("B8").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False と、いう感じです。 いつも★の部分でとまってしまいます。 どうか、お助けください・・・。

関連するQ&A

  • ブックのopenについて

    デスクトップにファイル名「A.xls」と「B.xls」が有ります。「B.xls」はファイル名が変わるため「A.xls」のsheet1のセルA1に「B.xls」のファイル名を記載して「A.xls」と「B.xls」を共に開き「A.xls」にマクロを記述して処理をしています。この処理をする際に最初から「B.xls」を開かずにマクロでセルA1に記載したファイル名を使って「B.xls」ファイルを開くための記述を教えてください。現在のマクロの最初の部分は以下のようになっています。よろしくお願いします。 Sub Macro1() Dim nextyearbookname As String nextyearbookname = Range("A1") & ".xls"   ThisWorkbook.Activate Worksheets("sheet1").Range("B20:B21").Select Selection.Copy  Windows(nextyearbookname).Activate

  • エクセル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の次のブックを開いてセルの中身をコピーしたいのです。 変数の使い方がよくわからないのですが、教えていただけますでしょうか。 よろしくお願いいたします。

  • Excel マクロでファイル名を変数に・・・

    初心者です。検索してもわからなかったので質問です。 下記のようなマクロの処理で「AAA」というファイル名のExcelに「2.xls」からデータをコピーし貼り付けています。    ・    ・ Windows("AAA.xls").Activate Rows("4:4").Select Selection.Insert Shift:=xlDown Windows("2.xls").Activate Range("C6").Select Selection.Copy Windows("AAA.xls").Activate Range("A4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C7").Select Application.CutCopyMode = False Selection.Copy    ・    ・ 今回は「2.xls」ではなく「3.xls」、「4.xls」、・・・といったように違うファイル名で同じ処理を行ないたいので「2」と指定するのではなく「(ファイル名).xls」といった形にしたいのですが、それは可能なのでしょうか。 ご意見宜しくお願いいたします。

  • EXCELのブック名を引数(変数)として設定するには

    マクロを保存したブック(シート)にデータをコピーしたいブックのウインドウをActiveにしてセルのコピーをしたいのですが、うまくいきません。下記に例を記載しますのでご教示願います。 1 Dim WBK As Workbook 2 Dim stWBK As String 3 Range("A3").Select 'このシートのA3にブック名があります 4 Selection.Copy 5 stWBK = Clipboard 6 Windows(stWBK)Activate 別のやり方で stWBK= Range("A3").Select も試しましたがだめです。

  • 異なるブック間でのセル範囲のコピー/VBA

    異なるブック間でクリップボードを経由せず直接コピーしたいため 下記のマクロを記述していますが、実行エラーが発生します。 どうしてでしょうか。 ThisWorkbook.Worksheets(3).Range(Cells(3, 1), Cells(3 + a, 1)).Value = Workbooks("excel.xls").Worksheets(1).Range(Cells(11, 3), Cells(11 + a, 3)).Value (補足) (1)VBA実行中のThisWorkbook、excel.xlsは別のブック ですが、同じフォルダにあります。 (2)aは数値が入る変数です。

  • マクロ 別のブックを指定。

    エクセルマクロで特定の文字を含んだファイルを指定したいのですが、 ファイル名がその都度、book1,book2,book3,のように変わります。 Range("a1").Select Windows("Book10").Activate Range("a10").Select End Sub このような記述だと、book10にしか指定できず、bookを含むファイルを指定したいのですが どのようにしたらよろしいのでしょうか。 開いているbookを含むファイルは1ファイルのみです。                宜しくお願いいたします。

  • VBAでブックの集計の仕方を教えてください。

    H22.12月度と言う名前のフォルダーにA店~E店と集計と言う名前のブックがあります。 集計のブックでA店~E店の集計をしてくるマクロを組んでいますが上手く作動しません。 集計のブックには、セルの書式設定をしていますので、A店~E店の売上一覧のシートから 値だけをコピーして集計したいのですが、罫線やパターン、数式までコピーしてきたり、 最後のE店だけ2重にコピーしてきたりと変な動作をします。 初心者で本やネットで調べながら作ったので、どこの記述がおかしくて、そうなるのかがさっぱりわかりません。 どなたか教えていただけませんでしょうか。よろしくお願いします。 Sub 集計() Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\H22.12月度\A店.xls" Sheets("売上一覧").Select Range("E5:Q24").Select Selection.Copy Application.WindowState = xlMinimized Windows("集計.xls").Activate Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False If Range("E5").Value <> "" Then Range("E65536").Select Selection.End(xlUp).Select Selection.Offset(1, 0).Select End If ActiveSheet.Paste Windows("A店.xls").Activate Range("E5").Select Application.CutCopyMode = False ActiveWindow.Close     ・     ・     ・(B・C・D店も同じ記述)     ・     ・   Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\H22.12月度\E店.xls" Sheets("売上一覧").Select Range("E5:Q24").Select Selection.Copy Application.WindowState = xlMinimized Windows("集計.xls").Activate Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False If Range("E5").Value <> "" Then Range("E65536").Select Selection.End(xlUp).Select Selection.Offset(1, 0).Select End If ActiveSheet.Paste Windows("E店.xls").Activate Range("E5").Select Application.CutCopyMode = False ActiveWindow.Close    Windows("集計.xls").Activate Application.WindowState = xlMaximized Range("E5").Select End Sub

  • 新しいBookの作成マクロ

    現在使用しているBOOKの一部をクリアして、同じフォルダ内にBOOKの名前だけ変えて年度が変わっても使えるように更新マクロを作成したのですが下のエラ-がでます。 実行時エラ-’70’書き込みできません BOOKを保護している訳でもありませんし、読み込み専用にもなっていません。ご教授ください。 Sub 更新() ' 入力内容を消去 Sheets("シ-ト").Select Range("B3:T65536").Select Selection.ClearContents  ’・・・・・・・・・・・・・・・・   FFF:フォルダF11が保存されているフォルダ名   F11:ブックBBBが保存されているフォルダ名   BBB:現在使用しているブック 名   B22:新しく使う(変更後の)ブック名  ’・・・・・・・・・・・・・・・・・・・・・  ’BOOK1(ブック名BBB)を複写してBOOK2(ブック名B22)をつくる   FileCopy "D:\FFF\F11\BBB.xls", "D:¥FFF\F11\B22.xls"  ’BOOK1の名前をBOOK2へ変更    Name "D:\FFF\F11\BBB.xls" As "D:FFF\F11\B22.xls" 'メニュー画面を表示    Worksheets("初期画面").Activate    Range("A1").Select End Sub 

  • VBA ブック間のコピー

    2つのブック(どちらも変数ですが、MyFNameとMyFName2)を開いています。 このブック間で、データをコピー貼付けしたいのです 貼付け先は、セル結合しているので、セルを2つ選択してみました Workbooks(MyFName).Activate 'Worksheets("部品表").Activate Range("D4").Select Selection.Copy Workbooks(MyFName2).Activate Range("F37:G37").Select でも、貼付け先のセルがアクティブにはなっていますが、データが貼り付けられていませんでした。 ちなみに、2008年00月00日のデータ貼付け作業です どうかご指導ください

  • カレントブックのファイル名の取得

    早速ですが。 カレントブック(例:test.xls)の名前をどうやって取得できますか。 マクロ(code)にカレントブック名を固定値(test.xls)で指定していますが、 下記のように、改善したいと思いますが、 ================================= test.xlsのマクロに PCvsFileName="test.xls" Windows("PCvsFileName").Activate ================================= 該当xlsファイル名は常に変わるから、カレントブックのファイル名の取得方法が 知りたいです。 よろしくお願いします。

専門家に質問してみよう