• ベストアンサー

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

色々と調べたり試したのですが、どうしても判らないので質問させてください。 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