ちくのう症(蓄膿症)は「菌」が原因!?

現在、Excelのマクロ及びVBAで作成したツールを第三者へ配布する事を予定しています。
その際に、VBA及びマクロを表示、改ざんできないように制御したいと思い、以下のような事ができないか考えています。

* 1: メニューバー上のメニューを最低限必要なものだけを表示
2: 1がNGの場合 メニューバー上のメニューを非表示
3: ツールバーの非表示
* 4: ショートカットキーの動作の制御(ショートカットキーで操作してもらいたくない)
* 5:タイトルバー上の文字列も出来れば任意に変更したい。
* 6: AUTO_OPENで指定したモジュールを必ず実行されることは出来るのか?
(SHIFTキーを押しながらのOpenやモジュールの無効とされても組んだ処理以外のことが出来なければOK)
7: マクロ、モジュール、ワークシートの保護

という事を行いたいと思っています。
特に、今わかならないのが 1:/4:/5:/6:(先頭に*を付けてます)なのですが Excelで制御可能なのでしょうか?

また、こういったレベルについて記載のあるExcel関連書やサイトなどお奨めがあったら教えていただけると助かります。

VBA自体は数年前にAccessでやっただけで浦島太郎だし、ExcelとAccessで勝手が違うし・・・と苦戦しています。
お手間かけますがよろしくお願いいたします!!

このQ&Aに関連する最新のQ&A

A 回答 (6件)

質問とは直接は関係ないかもしれませんが、↓もご一読ください。


参考になると思います。

配布の問題
http://www.asahi-net.or.jp/~ef2o-inue/haifu/sub0 …
    • good
    • 0
この回答へのお礼

情報ありがとうございます。参考になります。
ありがとうございました!

お礼日時:2006/10/26 09:50

こんにちは。

#5のWendy02です。

>Excelにこだわって(というかExcelでやるしかないと思い込んで)ました。

#5で書いたのは、私のある意味ボヤキです。Excel VBAプログラムというのは、かなり制限された状態の中で、物事を組み立てているわけで、VBAプログラマーには、プロが育ちにくい環境であることは言うまでもありません。Excelの回答をしている「専門家」と称する人が、必ずしも、Excel VBAプログラマーとして、職が成り立っているわけでもなく、VBが分かれば、Excelでも分かるだろう程度の人がほとんどではないか、と想像するのです。

「たかが、Excel」なんですが、逆に、VB の本格的な言語に移って製作したほうが、どれほど自由なのか分かりません。実際、VBからSpreadSheet Control を組み合わせて、特化した機能を使ったほうが楽なのです。私が、Developer や VSTO について必要性を求めないのは、しょせん、それを使っても、Excelのアドインと何も変わらないというか、単に、コンパイルした分だけ、ソースのセキュリティが守られる程度に過ぎないと思っているのです。

Excel Application の恩恵は受けながらも、一方では、不必要な機能が多すぎて、アプリケーション化には、その他の機能の負担が大きすぎるわけです。
    • good
    • 1

こんばんは。



基本的には、私などは手を出さない部類です。私個人で使用するものには、そういうものは行っていますが、他人に配布するものには、そういう思い切ったものというのは出せません。よほど、身近な人でないと、そういうものは提供できないのです。

1~6のリクエストの内容は、ショートカットキーは、主要なものに限りますが、それ以外は概ね可能です。

経験的に、他人の配布したものを使って、不快な思いをさせられたことが何度かあるわけで、ここの掲示板でも、Excelブックのマクロのフリーソフトウェアのトラブルで相談で、私が「それは作った人が悪い」と断言してしまうぐらいなわけで、逆に、こちらとしても、だんだん、思い切りが出来なくなるのです。

Access とは違って、Excelというものは、多数のブックを開けますから、しょせん、ワン・オブ・ゼムで、ブックを作るしかないわけです。ユーザーに、そのブックだけを占有させ使用させるというようには行かないし、強制させることも、なかなか難しいものがあります。

他に影響を与えないようにし、本体(Application)に、それ痕跡を残さないようにする、というのが、私のマクロのマナーにしています。つまり、「立鳥後を濁さず(ブックをクローズした時には何もなかったようにする)」っていうようなことだと思うのです。(ただし、内部的には iniファイルを書き込んだりレジストリを操作したりすることは、場合によってはあります。)

その点で、アドインがよいのですが、「アドイン配布」というのも、それはそれなりの責任がないと、人に迷惑を掛けてしまうわけで、アドイン配布の原則は、「人に提供する最低限の機能」ということ、になるのかと思うのです。ヘルプファイルを含めて、アドインはアドイン内で処理させるというのが、一つのマナーだと思います。このレベルになると、Developer の知識が必要だと思います。ただし、今更、Developer を購入したり、VSTOを最初から勉強というのでは気が遠くなるほど、先の話になってしまいますし、これらは、それほどに有用ではありませんが、知識として必要になる部分があります。(ヘルプ作成ツールなどは、フリーで手に入ります。)

それから、マクロのセキュリティを上げた場合、という問題がありますが、一つは、「デジタル署名」を入れることですが、それ以上の証明書である、CA証明は、私など個人では、とてもコストが合いませんので、セキュリティを「高」にした場合は、利益供給をしない、という方法で立ち向かうしかありません。

それ以上に、マクロ使用可能状態でないと、主要シートを開かない、という仕組みも作ったことがありますが、大真面目に配布ブックに組み込むというのには、チュウチョがあります。今後、アドインとして、Excelブックと、マクロファイルと分離していく、という方向性がつよいです。

せめて、*を全部分かるレベルの方が、それを行おうとして、どうしたらよいものだろうか、というご質問なら、まだ良いのですが・・・。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
Excelファイル自体は、提携拠点のような箇所への配布を考えています。
同一社内のようにフランクでもなく、かといって全く連絡が取れない場所ではないところへの配布であり、内容を変更された場合のリスクを回避したい為に、ある程度のアプリケーション化をして配布できればというのが最初の発想でした。
また、既に、ある程度完成に近いExcelで作成した物に手を加えるというのが命題でしたので、Excelにこだわって(というかExcelでやるしかないと思い込んで)ました。
Accessとは違い、アプリケーション化にする為にはExcelだけでというのには限界がありそうですね。いくら、Excelの環境を元に戻す処理を入れたとしても強制終了などのケースも考慮しないといけないでしょうし。
Excel1ファイルだけで!という点にこだわっていること自体をクリアにして、もう一度考え直したいと思います。
皆様の回答で、気づかせていただきました。
とともに恥ずかしい質問をしてしまったのだなぁと反省です・・・。
色んな意味で思い込みはいけませんね。

皆様、本当にありがとうございました。

お礼日時:2006/10/26 10:11

>その際に、VBA及びマクロを表示、改ざんできないように制御したいと思い



これだけなら、VBAのプロジェクトにパスワードを掛ける事が出来るので、閲覧も編集もできないようにロックできます。

1~4のような事を行いたいなら、状態(設定)を保存して確実に戻す事が可能な方法で行う事です。
(万一復元が出来なかった場合のサポートも確実に行えるだけのスキルも必要でしょう)
他の方も書かれていますが、そのまま終了してしまうと環境を手動で戻す事は大変(不可能)になります。
トラブルで強制終了になる場合もあるので、必要なメニューの追加程度にとどめるべきかと思います。

6については勉強してください。Auto_Open は、起動方法によってはキャンセル可能(実行されません)です。

>こういったレベルについて記載のあるExcel関連書やサイトなどお奨めがあったら

ネット検索すれば主要なサイトはすぐに見つかります。
すでに参考になる良いサイトが紹介されいますね。
殆どの必要な情報が見つかるはずですから、サイトの内容をじっくりとお読みになるのが一番かと思います。

どのような物を作成しているのか解らないのですが、シートを使わない(見せない)で済むものなら、フォームだけを表示させる事も可能です。
この場合、他のソフトで作ったオリジナルのプログラムのように見せる事も可能です。

配布を考えての改変等の対策も必要ですが、「ユーザー」の事を考えないと一方的な作業を押しつけるプログラムにしかなりませんよ。
どういった使い方がされるのかを考えて、ユーザーの使い勝手を向上させるように考えていかないと、「必要な対策」が見えなくなってしまいます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
皆様にご回答いただいて、Excelファイルでという選択肢が正しいのかどうか
今一度考察してみないといけないことを痛感しています。
ありがとうございました。

お礼日時:2006/10/26 09:58

シェアウェア?


個人的にはユーザーの環境を大きく改変するような仕様は好きではありません。
実装する場合は、実行後に環境を戻すために細心の注意が必要だと思います。

参考までに下記マクロを実行するとシート表示のみでメニューもツールバーもタイトルバーも見えなくなり、右クリックも効かなくなります。
間違ってこの状態で Excelを終了させてしまうと一般ユーザーさんは結構大変です。

戻すには ALT + F11 でVBEを起動してもう一度同じマクロを実行します。

*** 下記マクロを試す場合は「自己責任」で!! ***

Sub 実行注意()
Dim cmb As CommandBar
 With Application
  .ScreenUpdating = False
  .DisplayFullScreen = Not .DisplayFullScreen
    For Each cmb In .CommandBars
      cmb.Enabled = Not cmb.Enabled
    Next cmb
 End With
End Sub


マクロ無効時対策として下記のような仕様を使った事があります。
どのレベルまで有効か解りませんが、一般的なユーザーであれば問題無いと思っています。

1)マクロ無効時に前面に表示するシートのみを残して、他のシートは非表示にする
2)Bookを保護(もちろんパスワード付きで)
3)Workbooks_Open(Auto_Openでも可)でパスワード入力を要求しOKの場合は VBAでBook保護を解除しマクロ無効時シートと他シートの表示・非表示を入れ替える。
4)パスワードが合わない場合は何度もパスワード入力を要求し、キャンセルした場合は Bookを閉じる。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
すべて非表示にする事は可能なのですね。
ただ、ご指摘のどおり、Excelのデフォルト環境を変えたままでの終了がありえるという所を考えていかないといけませんね。
やはりExcelだけで考えるのは難しいのかな・・・。

お礼日時:2006/10/26 09:55

エクセルファイルのアイコン上で右クリックでプロパティ、そして読み取り専用をチェックするのじゃ駄目なんですか?1番とか4番は相手のPC次第なんで無理だと思います。

この回答への補足

さっそくのご回答ありがとうございます。
配布先が第三者なので、だれでも任意に変更可能なファイル属性の変更ではファ
イル内容の保護は難しいのではと考えています。
1:はAccessでは出来ていたように思うのですが(古い知識でボケています)Excelでは出来ないのでしょうか・・・。
引き続き何か情報がありましたら、よろしくお願い致します。

補足日時:2006/10/26 09:46
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで個人用マクロの配布方法

このたびわたしが作成した業務用の簡単なマクロを社内の他部門(遠隔地)の10名ほどのかたがたにメールで配布して使っていただくことになりました。

自分では個人用マクロブックに登録し、任意のエクセルのシートに対して使用していたものです。
一応そのマクロだけをエクスポートしてModule1.basというファイルは作ったのですが、これまでマクロそのものを配布したことがないので送った先の人にどうインポート方法を説明したらよいのかわかりません。多分マクロはよく知らないひとたちのはずです。
いい説明方法があれば教えてください。

Aベストアンサー

> 成功しました!!他の端末へのインストールも出来ました。

おお!それは、よかった!(^^)

> 再度送付してあげれば相手のアドインは上書きされると思ってよい
> のでしょうか?

ええ、最初から修正やバージョンアップはあるものとして、考慮して
ましたから、その手順で大丈夫ですよ。

それでは、さらに一歩進んで、、

アドイン化したものは、どんな時に実行されるか保証されないので、
注意が必要です。つまり、ActiveSheet がない状態でメニューを
クリックすることも、あり得るってことです。この場合、エラーの
発生が予想されますね。

エラーが発生して、「デバッグしますか?」と聞かれたり、デバッグ
モードの VBE 画面がでてきたら、初心者の方はビックリしてしまう
でしょう。

ですから、コードの冒頭でそれをトラップしてやらなければなりま
せんし、VBA プロジェクトも保護しておいた方が良いでしょう。

VBA プロジェクトの保護は、VBE のプロジェクトエクスプローラーで
MyADDIN を選択し、右クリック[VBA プロジェクトのプロパティー]
から行います。

トラップの方法は、例えば Selection ならセル以外が選択されて
いてはマズイ場合、

IF Ucase$(Typename(Selection))<>"RANGE" Then Exit Sub

のようにコードの冒頭に書き込みます。On Error ~ ステートメント
も必要があれば使います。

関数もワークシート関数として使われたくない場合は Private Function
にしてしまうか、次のように Caller を使ってトラップします。

Function Test(A As Variant) As String

  ' ワークシート関数として使えないようにする
  If UCase$(TypeName(Application.Caller)) = "RANGE" Then
    Exit Function
  End If

  '~ 処理 ~

End Function

こうすると、VBA からしか使えない関数になります。

この辺は、場数を積めば勘処が養えるので、無理に今全部やる必要は
ありません。エラーが発生したときに困ったら、読み返してみて下さい。

以下は、余談です。

・プロシージャ Count_Net の

x = ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Count).Row



x = rngTarget(rngTarget.Count).Row

の方が良いと思います。

・プロシージャ Del_Sqt について

これは、前回のご質問のやつですよね。そちらに手が回らず、済みません。


アドイン化、、大変だったと思いますが、いろいろやってみて下さい。
自分にとって都合がよく便利で、自分だけのツールが作れますよ。

では、頑張って下さい。

あ、慣れてきたら、アドインの名前はもっとセンスのいいヤツに変えて
下さいね。MyADDIN って適当につけたヤツなので(^^;)

> 成功しました!!他の端末へのインストールも出来ました。

おお!それは、よかった!(^^)

> 再度送付してあげれば相手のアドインは上書きされると思ってよい
> のでしょうか?

ええ、最初から修正やバージョンアップはあるものとして、考慮して
ましたから、その手順で大丈夫ですよ。

それでは、さらに一歩進んで、、

アドイン化したものは、どんな時に実行されるか保証されないので、
注意が必要です。つまり、ActiveSheet がない状態でメニューを
クリックすることも、あり得るってこと...続きを読む

QExcelを配布するときの注意点など

VBAを使ったExcelのデータ表をブログで配布しようと思っているのですが、何か注意点はありますか?
消しておいた方が良いデータがあるなどなど。
よろしければアドバイスよろしくお願いします。

Aベストアンサー

個人情報や非表示情報を削除する
http://office.microsoft.com/ja-jp/excel-help/HP001050332.aspx
http://office.microsoft.com/ja-jp/excel-help/HA010037593.aspx

Office文書ファイルに含まれているプライバシー情報を削除する
http://www.atmarkit.co.jp/fwin2k/win2ktips/940rmofprvcy/rmofprvcy.html

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

Qエクセルで別ブックをバックグラウンドでオープンする方法

最初にメニュー画面となるブックを開いた後、データブックをバックグランドのみで開きたいのですが、エクセルVBAで単純にOPENを行うと画面上にデータブックが表示されてしまいます。操作作業者に画面が次々入れ替わることを見せたくないのですが、ブックをバックグラウンドだけで開く方法はあるのでしょうか。VBAについては素人で宜しくお願いします。

Aベストアンサー

ごめんなさい。解決済みと思って見ていませんでした。 まだですか?

後で開いた3つのブックは、VBAで操作しないのですか。
操作するのでしたら、ブックをオブジェクト変数に入れておいた方が操作しやすい
と思うのですが・・・ 一応何処でどのように使うのか判りませんので・・・

こんな感じで如何でしょうか。

ブックを開いてから非表示にするまでの瞬時の画面のことですね。
それなら、その間、ScreenUpdating = False でどうでしょうか。

Public Bk1 As Workbook
Public Bk2 As Workbook
Public Bk3 As Workbook
Dim PathName As String

Sub Auto_Open()
PathName = ThisWorkbook.Sheets("メニュー").Range("C28").Value
ファイル読込 "初期値.xls", Bk1
ファイル読込 "データ1.xls", Bk2
ファイル読込 "データ2.xls", Bk3
End Sub

Sub ファイル読込(BkName, ObjBk)
Application.ScreenUpdating = False
Set ObjBk = Workbooks.Open(Filename:=PathName & "\" & BkName)
Windows(BkName).Visible = False
Application.ScreenUpdating = True
End Sub

ごめんなさい。解決済みと思って見ていませんでした。 まだですか?

後で開いた3つのブックは、VBAで操作しないのですか。
操作するのでしたら、ブックをオブジェクト変数に入れておいた方が操作しやすい
と思うのですが・・・ 一応何処でどのように使うのか判りませんので・・・

こんな感じで如何でしょうか。

ブックを開いてから非表示にするまでの瞬時の画面のことですね。
それなら、その間、ScreenUpdating = False でどうでしょうか。

Public Bk1 As Workbook
Public Bk2 As Workbook
P...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub


人気Q&Aランキング