アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロでCSVファイルを開き、CSVファイル上で一部の操作したいのですが、
画面には開いたCSVファイルを表示させたくないです。

 Application.ScreenUpdating = False
 csvFile.Activate
 Application.ScreenUpdating = True
※csvFileは、開いたCSVファイルにセットした名称

上記のように、CSVファイルをアクティブにしている部分をApplication.ScreenUpdatingで挟んでいるのですが、
CSVファイルが表面に出てきてしまいます。

 MsgBox "まえ"
 csvFile.Activate
 MsgBox "うしろ"

と記述すると、
「まえ」のメッセージボックスの『OK』をクリックするとCSVファイルが表面に表示され、
その上に「うしろ」のメッセージボックスが表示されるので、
CSVファイルを表面に出しているのは csvFile.Activate のコードで間違いないと思います。

表示させたくないファイルをわざわざアクティブにしているのは、
自分の知識ではアクティブにしないとそのファイル上での操作ができないためです。

シートの切り替えなどは
Application.ScreenUpdating = False
で止めることができるのですが、別ファイルの場合は止められないのでしょうか。

A 回答 (2件)

えっと、、、


画面描画を止めて、すぐに戻してるので表示されるのでは?
試してないけど、

 Application.ScreenUpdating = False
 csvFile.Activate
 Thisworkbook.Activate
 Application.ScreenUpdating = True

とか。

それよりも Open からのコードを出された方が良いアドバイスが得られるかも。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

理由がよくわかりませんが、提示していただいたようにThisworkbook.Activateを追加したところ思ったような動作をしました。

csvFile.Activateでアクティブにしており、
アクティブの副産物として(?)アクティブにしたファイルが表面に出るので、
それをScreenUpdating = False&Trueで挟んで止めたつもりだったのですが。

ソースを全部挙げるほうが回答しやすいであろうことは理解しているのですが、
長くなると全部挙げるわけにいかないので、
素人考えで「ここは必要無いだろう」と判断して削っているのですが、
巧く行かないものですね、申し訳ないです。
(今回、MsgBoxで試したように、その部分が問題なんだと思い込んでまして)

お礼日時:2007/10/13 09:50

質問が長いが、下記では、私のおおぼけかな。


下記やってみると
いまSheet3がアクチブになっている場合
Sub test01()
ActiveSheet.Visible = False
'ActiveSheet.Range("A10") = "aaaaaa" 'error 別のシートに値がセットされる
Worksheets("Sheet3").Range("A10") = "DDDDDD"
End Sub
非表示状態でも
Worksheets("Sheet3").Range("A10") = "DDDDDD"
は有効のようなので、初めにシートを非表示にすればどうかな。
ActiveSheetは意図どおりにならないから使わず、具体指定する。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

質問長かったでしょうか。
「始めにシートを非表示にする」とのことですが、今回開きたいCSVファイルはシートが1つしかなく、
非表示を断られてしまいました。
何か方法があるのだと思いますが、解決しましたので締め切らせていただきます。

お礼日時:2007/10/13 09:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!