[[20050416181934]] 『月名のみが違うファイルを開くVBAの書き方』(SATTI) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『月名のみが違うファイルを開くVBAの書き方』(SATTI)
 久しぶりに質問させていただきます。
 毎月、月末にファイル名が月名のみ違うファイルを開いて作業をするのですが、
ファイルを開くVBAを書く時、ユーザーフォームのコンボボックスで月名を選んで、
ボタンを押せばそのファイルがひらくという、書き方はどのようにすればいいでしょうか?

 例えば、Workbooks.Open Filename:="\Aファイル\1月資料.xls"
 と毎月、月名だけ書き直すのは面倒なので、月名のみ指定してそのファイルが開けたらーと
 思いまして。

 どなたかアドバイスをお願いします。

 Workbooks.Open Filename:="\Aファイル\" &ComboBox1.Value & "資料.xls"
こんな感じでしょうか?
(ケン)

 なるほどー、&でつなぐんですね!!ケンさん、基本的なことに答えてくださってありがとうございました。
 (SATTI)

 すみません。教えていただいたようにやってみたのですが、動きません〜。
以下のように書きました。何か問題があるのでしょうか??

 Workbooks.Open Filename:= _
 "C:\Documents and Settings\NEC-PCuser\デスクトップ\Afolder\ " &   
 ComboBox1.Value & "fail.xls."
 (SATTI)

 もしかして、月名の数字に全角・半角の違いはありませんか?

 試しに全角、半角にしてやってみましたがだめでした。う〜ん。。。
 (SATTI)

 msgbox や Debug.Printまたは シートに直接書き出すなどされて
比較されてみてはどうでしょうか?
(SoulMan)

 SoulManさん、アドバイスありがとうございます。
 ですが初心者ゆえにウマくつかめませんm(__)m。
 もう少し具体的にお願いします。
 (SATTI)


 range("a1").value =  _
 "C:\Documents and Settings\NEC-PCuser\デスクトップ\Afolder\ " _ 
  & ComboBox1.Value & "fail.xls."

 として、セルA1に出力して確認してみて下さい。
  (INA)

 INAさんの説明で十分なのですが、ちょっと補足です。(^^;
Bookを開く作業を記録すると↓この様になります。
Option Explicit
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2005/4/19  ユーザー名 : SoulMan
    ChDir "D:\エクセルの学校\サンプル"
    Workbooks.Open Filename:="D:\エクセルの学校\サンプル\Book1.xls"
End Sub
それを元に確認する方法です。
実際に比較してみるとすぐにわかります。
色々な場面で使える方法なので是非覚えてください。
Sub てすと()
Dim MyStr As String
MyStr = UserForm1.ComboBox1.Value
'比較方一
MsgBox "D:\エクセルの学校\サンプル\Book1.xls"
MsgBox "D:\エクセルの学校\サンプル\" & MyStr & ".xls"
'比較方二
Range("A1").Value = "D:\エクセルの学校\サンプル\Book1.xls"
Range("A2").Value = "D:\エクセルの学校\サンプル\" & MyStr & ".xls"
'比較方三イミディエイトウィンドウに表示します。
Debug.Print "D:\エクセルの学校\サンプル\Book1.xls"
Debug.Print "D:\エクセルの学校\サンプル\" & MyStr & ".xls"
End Sub
(SoulMan)

 INAさんSoulManさん、有効なアドバイスをくださってありがとうございます!!
 おかげで確認ができ、\と"の間に不要な空白があったことがわかりました。
 (こんな小さなことに気づけなかったことがショック…。)
 とにかく本当に感謝です〜〜(*^_^*)
 (SATTI)

 上のことに関連して、またトラブルが発生しました。
 ファイルを開く為のコードを以下の様に直接書くと動きます。
 Private Sub CommandButton1_Click()
  Workbooks.Open Filename:= _
  "C:\Documents and Settings\NEC-PCuser\デスクトップ\Afolder\" &   
  ComboBox1.Value & "fail.xls."
 End sub

 しかし、以下の様にCallで呼び出すように書くと、エラーで
 「オブジェクトが必要です。」と出ます。
 Private Sub CommandButton1_Click()
   Call ブックをアクティブにする
  End Sub

 「ブックをアクティブにする」には上のファイルを開くコードが書かれています。
  なぜCallで呼び出すと動かないのか不明です〜(*_*)。。
  たびたびすみませんが、どなたかご回答をお願いします。
 (SATTI)


 親オブジェクトを指定するような記述をしていますか?

 ブック.シート.セル.メソッド

  (INA)


 標準モジュールのサブプロシージャに以下のように書きました。
 Sub ブックをアクティブにする()
  Workbooks.Open Filename:= _
  "C:\Documents and Settings\NEC-PCuser\デスクトップ\Afolder\" &   
  ComboBox1.Value & "fail.xls."
 End sub

 そしてコマンドボタンのイベントプロシージャに以下の様に書きました。
 Private Sub CommandButton1_Click()
   Call ブックをアクティブにする
 End Sub

 ファイルを開く以下の記述は間違っていないように思うのです。
 Workbooks.Open Filename:= _
  "C:\Documents and Settings\NEC-PCuser\デスクトップ\Afolder\" &   
  ComboBox1.Value & "fail.xls."
 Callを使わないで直接コードから実行すると開きます。

 糸口がみつかりません〜
 (SATTI)

 ComboBox1の親を指定されたらどうでしょうか?
UserForm1.ComboBox1.Value
(SoulMan)

 SoulManさん、さすがですね、そのとおりでした!!
 親を指定したらうまくいきました(^○^)
 本当にありがとうございました〜m(__)m
 (SATTI)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.