Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13102 / 13646 ツリー ←次へ | 前へ→

【7002】開いたファイルをアクティブにしたいのですが yosi 03/8/19(火) 20:28 質問
【7003】Re:開いたファイルをアクティブにしたいので... ichinose 03/8/19(火) 23:11 発言
【7006】Re:開いたファイルをアクティブにしたいので... ichinose 03/8/19(火) 23:44 回答
【7007】Re:訂正 ichinose 03/8/19(火) 23:54 発言
【7033】Re:開いたファイルをアクティブにしたいので... yosi 03/8/20(水) 19:51 お礼

【7002】開いたファイルをアクティブにしたいので...
質問  yosi  - 03/8/19(火) 20:28 -

引用なし
パスワード
   FiletoOpen = application _
.GetOpenFilename("csvファイル(*.csv),*.csv")
Workbooks.Open Filename:=FiletoOpen

1.最初に上記のコードでファイルを開く
2.マクロが記述してあるブックがアクティブとなる
3.再び1.で開いたファイルをアクティブにしたい

3.の処理がどうしてもできなくて困っています、どうか助けてください。

Set WS = Workbooks("FiletoOpen").Worksheets("FiletoOpen")
  WS.Activate

と書いてみたのですが”有効なインデックスでは・・・”のメッセージが表示されました。

お願いします!

【7003】Re:開いたファイルをアクティブにしたいの...
発言  ichinose  - 03/8/19(火) 23:11 -

引用なし
パスワード
   ▼yosi さん:
こんばんは。

>FiletoOpen = application _
> .GetOpenFilename("csvファイル(*.csv),*.csv")
>Workbooks.Open Filename:=FiletoOpen
>
>1.最初に上記のコードでファイルを開く
>2.マクロが記述してあるブックがアクティブとなる
>3.再び1.で開いたファイルをアクティブにしたい
>
>3.の処理がどうしてもできなくて困っています、どうか助けてください。
>

>Set WS = Workbooks("FiletoOpen").Worksheets("FiletoOpen")

ひょっとして、

Set WS = Workbooks(FiletoOpen).Worksheets(FiletoOpen)

変数をダブルコーテーションで囲ってますか?

>  WS.Activate
>
>と書いてみたのですが”有効なインデックスでは・・・”のメッセージが表示されました。
>
>お願いします!

【7006】Re:開いたファイルをアクティブにしたいの...
回答  ichinose  - 03/8/19(火) 23:44 -

引用なし
パスワード
   よくみたら、それだけではなさそうですね。


>>FiletoOpen = application _
>> .GetOpenFilename("csvファイル(*.csv),*.csv")
>>Workbooks.Open Filename:=FiletoOpen
FiletoOpenには、フルパスが入っているはずです。
(D:\My Documents\abc.csv とか)


>>Set WS = Workbooks("FiletoOpen").Worksheets("FiletoOpen")
↑でも駄目ですが、


>Set WS = Workbooks(FiletoOpen).Worksheets(FiletoOpen)
矢印でも駄目です。

簡単なのは、Csvファイルをオープンするときに変数WSにセットする方法ですが、
FiletoOpen = application.GetOpenFilename("csvファイル(*.csv),*.csv")
set ws=Workbooks.Open Filename:=FiletoOpen
'処理

ws.activate


Set WS = Workbooks(FiletoOpen).Worksheets(FiletoOpen)
の形式でやるのならFiletoOpenを編集しなければなりませんね。
Set fso = CreateObject("Scripting.FileSystemObject")
With fso
  bknm = .GetFileName(FiletoOpen)
  shtnm = .GetBaseName(FiletoOpen)
 End With
Set ws = Workbooks(bknm).Worksheets(shtnm)
ws.Activate
Set fso = Nothing

VBAの関数でもできそうですが、簡単なのでFsoを使いました。

【7007】Re:訂正
発言  ichinose  - 03/8/19(火) 23:54 -

引用なし
パスワード
   >よくみたら、それだけではなさそうですね。
>
>
>>>FiletoOpen = application _
>>> .GetOpenFilename("csvファイル(*.csv),*.csv")
>>>Workbooks.Open Filename:=FiletoOpen
>FiletoOpenには、フルパスが入っているはずです。
>(D:\My Documents\abc.csv とか)
>
>
>>>Set WS = Workbooks("FiletoOpen").Worksheets("FiletoOpen")
>↑でも駄目ですが、
>
>
>>Set WS = Workbooks(FiletoOpen).Worksheets(FiletoOpen)

>
>簡単なのは、Csvファイルをオープンするときに変数WSにセットする方法ですが、
>FiletoOpen = application.GetOpenFilename("csvファイル(*.csv),*.csv")
set ws=Workbooks.Open(Filename:=FiletoOpen)
'          ↑()しておかないとエラーになるかも・・
>'処理
>
>ws.activate
>
>
>Set WS = Workbooks(FiletoOpen).Worksheets(FiletoOpen)
>の形式でやるのならFiletoOpenを編集しなければなりませんね。
>Set fso = CreateObject("Scripting.FileSystemObject")
>With fso
>  bknm = .GetFileName(FiletoOpen)
>  shtnm = .GetBaseName(FiletoOpen)
> End With
>Set ws = Workbooks(bknm).Worksheets(shtnm)
>ws.Activate
>Set fso = Nothing
>
>VBAの関数でもできそうですが、簡単なのでFsoを使いました。

【7033】Re:開いたファイルをアクティブにしたいの...
お礼  yosi  - 03/8/20(水) 19:51 -

引用なし
パスワード
   回答をかなり早く頂いたのに
返信がおそくなり申し訳ございません。
おけげさまで上手く処理することができました。

やはり処理が上手くいったときはかなりうれしいですね!
本当に助かりました。ありがとうございます。
ぜひ、また解らないときなどありましたらよろしくお願いします。

13102 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free