お世話になります。

表題の件で 質問が御座います。

一度 VBAを起動すると 閉じても また勝手にVBEの画面が立ち上がってきます。

厳密に言うと「勝手に」では ないのですが「ログオフ後、再度ログイン」するとそうなります。
(上記の表現が適切かどうか分かりませんが、会社では「Ctrl」+「Alt」+「Delete」でロックを掛けて離席します)
そして席に戻り 再度「Ctrl」+「Alt」+「Delete」でロックを解除すると
閉じたはずのVBEの画面が立ち上がってきます。

これは 普通なのでしょうか?

通常「Alt」+「F11」でVBAを起動していますので必要であればまた同じ操作で起動すれば済みます。
必要ない時にも立ち上がってくる この現象を何とかしたいです。
特に困っているというワケではないのですが「なんでだろう?」という疑問もあり、ついでに何とかなればと思い質問致しました。

上記のような状況で再度起動しないようにするには どこか設定を変更すれば良いのでしょうか?

お分かりになる方、どうぞ宜しくお願い致します。

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

A 回答 (3件)

こんにちは。



>現在「個人用マクロブック」に いくつもマクロを登録しているので(10数個程度)「それが原因なのか?」と思いはじめました。

VBEditor が立ち上がったときに、どこのモジュールが開いているか、ということですから、だいたい分かるはずです。それと、その内容にもよります。ショートカットなどの登録がしてあれば、組み合わせによっては、その命令が残ることがあると思います。

もちろん、私は、個人用マクロブック自体、開かないようにしてあります。クラス・インスタンスの生成は、個人用マクロブックで行っているので、そこを万が一いじってしまうと、オブジェクトが壊れてマクロが使えなくなってしまうことがあります。

この回答への補足

20Pでは御座いますが ご査収くださいませ。

補足日時:2009/05/28 14:50
    • good
    • 0
この回答へのお礼

再々度の ご回答誠にありがとう御座います。

色々と勉強になりました!
何度も お付き合いいただきまして ありがとう御座いました!

また何かありましたら宜しくお願い致します。

お礼日時:2009/05/28 14:49

こんにちは。



事情は分かりました。
こちらも、事情は違いますが、試行錯誤しています。

>もし よろしければ
>>私などは、通常はいたずらに開かないように、VBEditor は、プロテクトをしています。
>この辺について再度ご教示いただけませんでしょうか。

 Alt + F11 --> プロジェクト・ウィンドウ -->VBAProject --> 右クリック
 VBAProjectのプロパティ -->保護(タブ)をクリック
 プロジェクトを表示用にロックする(V) をチェック

 パスワードを入れるなら、簡単なものを入れます。
 複雑なものは入れません。

保存して、再度ファイルを開ければ、VBAプロジェクト自体は開きません。

しかし、今のようなご使用方法の場合は、この方法は上手く行くという保証はありません。

たぶん、今回の根本的な原因は「自動保存」が生きているからだと思います。
それと、VBA側のApplication.OnTime は忘れてください。両方併用したら、マクロ側にトラブルが発生することがありますから、しばらく、そのような使い方をしていれば気が付くはずです。

>通常 すっと同じExcelファイルを1日中使用しているのでずっと開きっぱなしです。。

「自動保存」を使いっぱなしで、トラブルはないから使っているのですね。
私は、かなり長い期間、何度もやってみて、Excel 2003 でも、「自動保存」の問題があるので、ついに継続使用するのは断念しました。「2003 でも」というのは、それ以前のバージョンでは、トラブルがあったからです。マクロの内容によっては、「自動保存」は、問題があります。

私は、「自動保存」をやめて、入力の回数(Calculation)によって保存するというマクロを使ってみたりしました。また、シートを切り替えるときに、保存する方法とかいうマクロも作ってみましたが、長期に続きませんでした。データ量が多すぎて、保存に時間が多すぎるから、その待ち時間がうっとうしいのです。(興味があればお教えします)

席を離れる前に、ついでに保存すれば、ベストですよね。ついでに、画面を最小化しておくとかすればよいです。どこかにコマンドボタンを置いて、以下のようなマクロを入れればよいのですが……。

一例です。

'ログオフ
Sub Test1()
  If ThisWorkbook.Saved = False Then
  ThisWorkbook.Save
  End If
  Application.WindowState = xlMinimized 'Window を最小化
  Application.AutoRecover.Enabled = False '自動保存をオフにする
End Sub

'再度、ログオン
Sub Test2()
  Application.WindowState = xlNormal 'Window を元に戻す
  Application.AutoRecover.Enabled = True '自動保存をオンにする
End Sub

少しずつ、試してみてください。
    • good
    • 0
この回答へのお礼

再度のご回答 誠にありがとう御座います!

今回 ご回答いただいた内容を拝見しながら「もしかしたら!?」と思ったのですが
現在「個人用マクロブック」に いくつもマクロを登録しているので(10数個程度)
「それが原因なのか?」と思いはじめました。

マクロを登録していないブックを開いていている時にもVBEを開いたら
同様の現象が起きるので、それが原因でしょうか?

>私は、「自動保存」をやめて、入力の回数(Calculation)によって保存するというマクロを使ってみたりしました。
これは「なるほど そういう考え方もあるのだな」と思いました。
結構 自分も上書き保存に関しましては痛い目に合っているので、入力後「よし!」と思った瞬間に勝手に左手が「Ctrl」+「S」を押すようになってしまいましたw

もし よろしければ掲題の件について「個人用マクロブック」が関係あるか無いか
Wendy02さんの お考えをお聞かせいただけませんでしょうか。。

気が向いた時で結構です。
宜しくお願い致します。

お礼日時:2009/05/28 10:17

こんばんは。



前回 5/11 にも、ご質問されていますね。

ご説明で、Excel自体のご質問ではないようで、背景の説明がありませんから、良く分かりません。そのような状態になることは聞いたことがありません。

Excel のバージョンは 2007 ですか?
Win OS は、XP ですか?

Excelをオープンしたままで、ログオフするように思えますが、それは確かですか?
そうでけなければ、VBEditor 画面が立ち上がるはずがありません。
VBEditor 自身だけが立ち上がるの場合は、故障だといっても間違いではないと思います。

それと、
>「Ctrl」+「Alt」+「Delete」でロックを掛け

という部分で、通常は、タスクマネージャーや、ログオフ等のメニューが出てくるはずですが、ダイレクトで、ロックでログオフに入るのですか?

そういうショートカットをしているのでしょうか?そういうソフトウェアですか?

スタートから行って、ログインしても、同じようになるのですか?

周辺状況がさっぱり分かりません。

もし、ショートカットからそうなるのだとすれば、その組み合わせが、Excelになんらかの命令を与えている可能性があります。

>一度 VBAを起動すると 閉じても また勝手にVBEの画面が立ち上がってきます。

Application.OnTime は組んでいないのですか?
自動保存はしているのでしょうか?

VBEditor が、開いた後、どこかのラインに飛ぶのですか?

私などは、通常はいたずらに開かないように、VBEditor は、プロテクトをしています。
それから、On Error Goto で、エラーの際に、プロシージャ内で止まらないようにしています。開いて触ると、インスタンス・オブジェクトが壊れることがあるからです。

それと、席を離れるときは、必ず、Excelというか、Office は閉じておきます。

この回答への補足

ちなみになのですが、当然のことながら(?)
Excelを一旦閉じれば この現象はおこりません。

でも 通常 すっと同じExcelファイルを1日中使用しているので
ずっと開きっぱなしです。。

(下の「お礼」では 文字数がオーバーしてしまったので補足まで。)

補足日時:2009/05/27 10:25
    • good
    • 0
この回答へのお礼

ご回答ありがとう御座います。
>Excel のバージョンは 2007 ですか?Win OS は、XP ですか?
OSはXPでExcel のバージョンは 2003 です。

>Excelをオープンしたままで、ログオフするように思えますが、それは確かですか?
そうですね。正確に言うとログオフではなく「ロックを掛ける」ということになります。

>>「Ctrl」+「Alt」+「Delete」でロックを掛け
>という部分で、通常は、タスクマネージャーや、ログオフ等のメニューが出てくるはずですが、ダイレクトで、ロックでログオフに入るのですか?
そうですよね。
「Ctrl」+「Alt」+「Delete」では現状「Winのセキュリティ」というダイヤログボックスが出て来て
「ロック」「ログオフ」「シャットダウン」「パスワード変更」「タスクマネージャー」「キャンセル」
の6項目が出て来るようになっています。
(会社のPCなので、そのように一元管理されている状況です)

ちなみに通常は「Winキー」+「L」でロックを掛けています。
(これも本来はログオフですよね)

>Application.OnTime は組んでいないのですか?
すみません。。「Application.OnTime」がよく分かりません。。
VBEの構文のことでしょうか?

>自動保存はしているのでしょうか?
Excelの自動保存は10分毎に設定してあります。

>VBEditor が、開いた後、どこかのラインに飛ぶのですか?
そうですね。
通常のメインで構文を入力する画面(?)にカーソルが入ります。

>私などは、通常はいたずらに開かないように、VBEditor は、プロテクトをしています。
もしかしたら この設定をすれば解決するのでしょうか。

もし よろしければ
>私などは、通常はいたずらに開かないように、VBEditor は、プロテクトをしています。
この辺について再度ご教示いただけませんでしょうか。

お忙しい中 お手数お掛けしまして 大変恐縮では御座いますが
何卒 宜しくお願い致します。

お礼日時:2009/05/27 10:24

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

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

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

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

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

QエクセルVBAでファイルを連続して処理する方法は

エクセルVBAで、エクセルファイルを開いた状態で特定処理を行う仕組みを作りました。
ただ、複数のファイルを処理したいのですが、いちいちファイルを開いてから処理しなければならないため効率が今ひとつです。
ファイル名称をテーブル化するなどして、一気に連続して処理するようにしたいのですが、どのように行えばいいでしょうか。

また、処理したいのは、更新日付が一定日以降のエクセルファイルです。
更新日付と対象ファイルのフォルダーを指定すれば、更新日がそれ以降のファイルを検索し、それが順次処理されていくようなVBAをつくりたいと考えています。

部分的にでもよいので、どなたか分かる方、教えてください。
ちなみにエクセルのバージョンは2000です。
よろしくお願いします。

Aベストアンサー

> 選択フォルダのサブフォルダをのものも含むようにはできないでしょうか。

再帰処理すればできますよ。

Microsoft Scripting Runtime を参照してから、次のコードを試してみて
下さい。
取り急ぎで書いたので、エラーがあるかもしれませんが。。。

まあ、環境によっては使えませんし、推奨はできないのですが、FileSearch
を使ってもサブフォルダを含めた検索はできます。調べればサンプルはすぐ
でてくると思いますよ。

ご参考までに。

Private mDateFilter As Date

Sub フォルダ内のXLSファイル順次処理()

  Dim fso As FileSystemObject
  Dim sDir As String
  
  ' // 日付のフィルタ条件設定 例)10日前の 0:00 以降更新のファイルを対象とする場合
  mDateFilter = DateAdd("d", -10, Date) + TimeValue("00:00:00")

  ' // 対象ファイルのあるフォルダを指定
  sDir = BrowseForFolder()
  If Len(sDir) = 0 Then
    Exit Sub
  End If

  Set fso = CreateObject("Scripting.FileSystemObject")
  
  Dim fld As Folder
  Dim iRes As Integer
  
  If fso.FolderExists(sDir) Then
    Set fld = fso.GetFolder(sDir)
    iRes = 0
    If fld.SubFolders.Count > 0 Then
      iRes = MsgBox("サブフォルダも検索しますか?", _
             vbYesNoCancel Or vbInformation)
    End If
    Select Case iRes
      Case vbYes:  Call FindFiles(fld, True)
      Case vbNo, 0: Call FindFiles(fld, False)
      Case Else:  ' // User Cancel
    End Select
  End If
  
  Set fld = Nothing
  Set fso = Nothing


End Sub

' // XLS ファイルを検索するサブプロシージャ
Private Sub FindFiles( _
  ByRef fld As Folder, _
  ByVal fCheckSubfolders As Boolean _
)

  ' // ファイルへの処理
  Dim f   As Object
  For Each f In fld.Files
    If f.Name Like "*.xls" And f.Name <> ThisWorkbook.Name Then
      If f.DateLastModified >= mDateFilter Then
        ' // 処理例
        Call MainProc(f)
      End If
    End If
  Next

  ' // サブフォルダ検索オプション
  Dim subFolder As folder
  If fCheckSubfolders Then
    ' // 再帰呼び出し
    For Each subFolder In fld.SubFolders
      Call FindFiles(subFolder, True)
    Next
  End If

End Sub

' // メイン処理 -- FindFiles から順次呼び出されます
Sub MainProc(ByRef f As file)

  ' // ここにご自分で書いたプロシージャを
  ' // とりあえず、セルにでも書き出してみます
  Dim i As Long
  i = Cells(Rows.Count, "A").End(xlUp).Row + 1
  Cells(i, "A").Value = f.Name
  Cells(i, "B").Value = f.DateLastModified

End Sub

' // フォルダ選択ダイアログ
Private Function BrowseForFolder() As String

  Const BIF_RETURNONLYFSDIRS = &H1

  Dim fld As Object
  Set fld = CreateObject("Shell.Application") _
       .BrowseForFolder(0&, "選択します", BIF_RETURNONLYFSDIRS)
  If Not fld Is Nothing Then
    BrowseForFolder = fld.Self.Path
  End If
  Set fld = Nothing

End Function

> 選択フォルダのサブフォルダをのものも含むようにはできないでしょうか。

再帰処理すればできますよ。

Microsoft Scripting Runtime を参照してから、次のコードを試してみて
下さい。
取り急ぎで書いたので、エラーがあるかもしれませんが。。。

まあ、環境によっては使えませんし、推奨はできないのですが、FileSearch
を使ってもサブフォルダを含めた検索はできます。調べればサンプルはすぐ
でてくると思いますよ。

ご参考までに。

Private mDateFilter As Date

Sub フォルダ内のXLS...続きを読む

QPCのスタート画面が立ち上がません

機種:東芝PA-DB50CDC8メモリ192MB,ハードデイスク30GB。WinMeの画面が出た後、スタート画面に成りません。 自分がした原因と思われる作業
(1)WindowsUpdateのOtlookExpress6のサービスパックをインストールしました。 (2)「OutlookExpressでmsoe.dllを読み込めなかったためOEを起動できません」のメッセージが表示され(3)トラブルシューテイングに従い、「*.dbx」を入力。プロパテイの「属性」には「読み取り専用」になっていないのを確認。解決せず。(4)もう1台のCPからmsoe.dllをフロッピーに写して、OutlookExpressのmsoe.dllにコピーしました。解決せず、(2)の表示になりました。(5)WinMeをそまま再インストールしたところ終了間際に「リソースが一杯に近い」のコメントがありましたが続行しました。「起動デイスク」の作成あり。この結果と思われますが電源をOnにするとWinMeの画面が出るだけで「スタート」画面になりません。対処を教えて下さい。

Aベストアンサー

レジストリチェッカーで復元を試みては・・・
Safeモードでも起動できないなら「起動ディスク」で。

※東芝のサポートページのURLが非常に長いのでVAIOのURLをあげときました。

参考URL:http://search.vaio.sony.co.jp/solution/S0203040009667/

QエクセルVBA 2千万行のCSVファイルを開きたい

上から順に読み込み、順次処理していき最終的には全部処理します。CSVファイルは読むだけです。

やり方はいくつか考えられます。
1
100万行ずつシートに読み込み、終わったら次を読み込む。CSVファイルは開きっぱなし。

2
100万行ずつのエクセルファイルに分割し、順次開いて処理。ファイル開閉に時間がかかる

3
2千万行の巨大な配列に代入し、順次処理。
CSVファイルは閉じることが出来る。

3がいいように思えますが、どうでしょうか?使用メモリは1と同じですか?

Aベストアンサー

> 懸念点は、最初から最後まで巨大なCSVファイルを開いたまま処理することです。

それに関しては問題ないです。VBAのOpenでファイルを開いた場合、実は一切読んでいません。今何行目を読んでいるかを示すカウンタを用意するだけです。またLine Inputで読み込む場合も、今操作している一行しか相手にしません。

だからこそ、実装している物理メモリ量をはるかに超えるサイズのファイルを扱っていても、仮想メモリのお世話にならずに済むわけです。

なので懸念材料はそこではなく、分割処理することによってデータ同士の断絶が起きると言うか、連続性がなくなることでしょうか。最初の100万行の固まりと、次の100万個の固まりには全くつながりがないことになるので。

Q[ctrl] + [V] で書式無しテキストとして貼り付ける

PowerPoint2002を使用しています。

テキストを [ctrl] + [C] でコピーし、[ctrl] + [V] で貼り付けるときに、書式無しテキストとして貼り付ける方法はないでしょうか?

書式なしテキストとして貼り付けるには、
「編集」→「形式を選択して貼り付け」→「書式なしテキスト」と選択しますが、これでは手間がかかります。
マクロを登録すればよいのかもしれませんが、もっとスマートにできる方法がありましたら教えてください。

Aベストアンサー

こんにちは

私はテキストエディタを別に立ち上げておき,一度そこにペーストしてから再びコピーし
て,パワーポイントにペーストしています.
コピー&ペーストを2回繰り返すことになりますが,[型式を…]をやるよりは楽かなぁ~
と思っています.書式を無くしたいときはいつもこの方法を使っています.

[型式を…]のコマンドをツールバーに入れてしまうという方法もありますが,メニューか
ら選ぶという手間が省けるという程度です.

QVBAからファイルをセル入力から開く方法

VBAからファイルをセル入力から開く方法

だれかご教授頂けませんでしょうか?VBAからエクセルファイルを開こうとしています。
そこでシート1のA1セルにファイル名を記述してあり、そのファイル名からファイルを開く事は出来ますでしょうか?
何か良い方法がありましたら教えて頂きたいのですが。

Aベストアンサー

下記で試してください。
パス名の最後には\を付けるようにしてください。

Workbooks.Open "D:\ABC\" & Sheets("シート1").Range("A1").Value


ワークシートのイベントを使う方法も考えられると思います。
BeforeDoubleClickイベント辺りを使って
ファイル名セルをダブルクリックすれば

Excel(エクセル) VBA入門:ワークシートのイベント
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html

QCtrl + Q でアクセスが終了した

マッキントッシュを使っていたときのクセでWindowsのアクセス2002で、Ctrl+Qを押したら終了してしまいました。

これはこれで便利なショートカットキーです。
ところが、ワードやエクセルでは機能しませんでした。
ワードやエクセルでもソフト終了させるショートカットキーはあるのでしょうか?
(Alt + F4 以外でお願いします。)

Aベストアンサー

こんにちは。

Ctrl + W は、Window(開いている一つのファイル)を閉じるのであって、アプリケーションの終了ではありません。それは、マクロとショートカットで、ご自身がつけるしかないと思います。

おそらく、メーカー側でつけなかった理由は、そのソフトウェアの性格的な問題だと思います。
ExcelにしてもWordにしても、複数のファイルを取り扱うので、「アプリケーションの終了」というショートカットを作っても、結果的には、一つずつ、確認ダイアログが出てきてしまうので、ショートカットとしての意味合いが薄れてしまうからではないでしょうか?

必ずしも、全部、保存でもなければ、全部、保存しない、でもないですから。

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

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

Aベストアンサー

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

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

QアクセスのVBEの初歩的な質問

アクセス(に限らないとは思うのですが)のVBEを今、一生懸命勉強しているのですが、初歩的なところで、つまずいています。

あああいいいうううえええ
11あいうえおかきくけこ
12あいうえおかきくけこ
13あいうえおかきくけこ
21あいうえおかきくけこ
22あいうえおかきくけこ
23あいうえおかきくけこ
31あいうえおかきくけこ
32あいうえおかきくけこ
33あいうえおかきくけこ

というような、データを自動で入力したいのです。多分、for next と、do until あたりを組み合わせるとできると思うのですが、どうしてもうまくいきません。

とりあえず、以下のような、めちゃめちゃ効率の悪いコードを書いたのですが、もっと効率よくするには、どうしたらいいでしょうか? 

…………………………………………………
Private Sub コマンド6_Click()
Dim Aaa As Integer
Dim Bbb As Integer
Dim Ccc As String
Dim Ddd As String
DoCmd.GoToRecord , , acFirst

Aaa = 1
Bbb = 0
Ccc = "あいうえお"
Ddd = "かきくけこ"

For i = 1 To 3
Bbb = Bbb + 1
あああ = Aaa
いいい = Bbb
ううう = Ccc
えええ = Ddd
DoCmd.GoToRecord , , acNext

Next i
Aaa = 2
Bbb = 0
For i = 1 To 3

Bbb = Bbb + 1
あああ = Aaa
いいい = Bbb
ううう = Ccc
えええ = Ddd
DoCmd.GoToRecord , , acNext

Next i
Aaa = 3
Bbb = 0
For i = 1 To 3

Bbb = Bbb + 1
あああ = Aaa
いいい = Bbb
ううう = Ccc
えええ = Ddd
DoCmd.GoToRecord , , acNext

Next i
End Sub
……………………………………
ほんとうに、おはずかしいのですが、どうかご指導くださいませ。m(__)mm(__)m

アクセス(に限らないとは思うのですが)のVBEを今、一生懸命勉強しているのですが、初歩的なところで、つまずいています。

あああいいいうううえええ
11あいうえおかきくけこ
12あいうえおかきくけこ
13あいうえおかきくけこ
21あいうえおかきくけこ
22あいうえおかきくけこ
23あいうえおかきくけこ
31あいうえおかきくけこ
32あいうえおかきくけこ
33あいうえおかきくけこ

というような、データを自動で入力したいのです。多分、for next と、do until あたりを組み合わせるとできると思うのです...続きを読む

Aベストアンサー

Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim lngIdx1 As Long
Dim lngIdx2 As Long

Set dbs = Currentdb
Set rst = dbs.OpenRecordset("テーブル名")

For lngIdx1 = 1 To 10
  For lngIdx2 = 1 To 3
    rst.AddNew
      rst!あああ = lngIdx1
      rst!いいい = lngIdx2
      rst!ううう = "あいうえお"
      rst!えええ = "かきくけこ"
    rst.Update
  Next lngIdx2
Next lngIdx1

Set rst = Nothing
Set dbs = Nothing

でどうでしょうか?
#「ツール」→「参照設定」で、
 Microsoft DAO 3.x Object Library にチェックを入れてください。
 

Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim lngIdx1 As Long
Dim lngIdx2 As Long

Set dbs = Currentdb
Set rst = dbs.OpenRecordset("テーブル名")

For lngIdx1 = 1 To 10
  For lngIdx2 = 1 To 3
    rst.AddNew
      rst!あああ = lngIdx1
      rst!いいい = lngIdx2
      rst!ううう = "あいうえお"
      rst!えええ = "かきくけこ"
    rst.Update
  Next lngIdx2
Next lngIdx1

Set rst = Nothing
Set dbs = Nothing

でどう...続きを読む

Q他のExcelファイルのVBAコードを検索したい

他のExcelファイルに書かれたVBAコードに、ある特定のキーワード(パス名など)が使われているかを自動的に調べるためのVBAを書きたいと思っています。

仕事で使っているマクロが書かれたExcelファイルからある特定の処理をしているマクロを含むものを検索したいのですが、検索するExcelファイルが膨大なため、順番にExcelファイルを開いてVBAコードをチェックしていく工程をマクロ化したいのです。ファイルを順に開いていく処理はマクロ化できるのですが、書かれたVBAコードのチェックをどうしたらよいか悩んでいます。

「VBAコードに対して検索する」または「VBAコードを1行ずつ変数に代入する」、「モジュールシートをテキストファイルに出力する」などの処理が自動化できれば対応できそうなのですが、そのような処理をExcelVBAで作成できるでしょうか。

なお環境はWindowsXPのExcel2003です。
よろしくお願いいたします。

Aベストアンサー

開いたブックにあるVBAコードをテキストに出力する方法
Sub VBExport(WKB As Workbook)
  Dim A, B
  Set A = WKB.VBProject.VBComponents
  For Each B In A
    B.Export "C:\~" '★テキストファイルでエクスポート
    xxxxxx '★上記テキストファイルを調べる処理
  Next
End Sub
ブックやシートにあるコードも(空でも)出力されます。
もし、標準モジュールのみ処理したい場合は「B.Type = 1」に限り
エクスポートします。

QVBE でワイルドカード的にファイルを指定したい

いつも拝見させていただいています。
VBE 初心者です。
ファイルを開くとき、ワイルドカードのような指定はできますか?

毎日アメリカのサーバからデータをDLする作業をしています。
データは自動的にテキスト(CSV)ファイルでこちらのローカルドライブに保存されます。
そこまではアメリカでのコントロールです。
そのCSV ファイルに付いている名前が、毎日ちがうので困っています。
DLするプログラム名に番号が割り振られて保存されているのです。


R554211J1_PJPPM000_945844_PDF.csv
R554211J1_PJPPM000_944634_PDF.csv
R554211J1_PJPPM000_935448_PDF.csv

このファイルを開いて加工するのですが、VBE に記述するときはどうしたらいいですか?
くっついてくる番号は、予想できません。

Workbooks.Open FileName:="c:\R554211J1_PJPPM000_*.csv"

としてみたらやはりダメでした(x_x)短絡的?
MS-DOS のREN コマンドのようなのがあれば、楽なのですが……。
エクセルのバージョンは97 SR-2 です。
よろしくお願いします。

いつも拝見させていただいています。
VBE 初心者です。
ファイルを開くとき、ワイルドカードのような指定はできますか?

毎日アメリカのサーバからデータをDLする作業をしています。
データは自動的にテキスト(CSV)ファイルでこちらのローカルドライブに保存されます。
そこまではアメリカでのコントロールです。
そのCSV ファイルに付いている名前が、毎日ちがうので困っています。
DLするプログラム名に番号が割り振られて保存されているのです。


R554211J1_PJPPM000_945844_PDF.csv
R554...続きを読む

Aベストアンサー

特定のフォルダに保存されたファイルを、無条件で全ファイル処理するのか、一部を選択するのかで違ってくると思われます。

○フォルダ内の全csvファイルを無条件で処理するのであれば、
 『FileChoose1』のようにDirを使って、ファイル名を特定できます。
 今はSheet1のA列に書き出しています。

○フォルダ内の指定したcsvファイルを処理するのであれば、
 『FileChoose2』のようにしてGetOpenFilenameで複数ファイルを指定し、ファイル名を特定できます。
 複数ファイルの指定は、ダイアログボックスの選択で、Shiftキー、Ctrlキーを使います。
 今はSheet1のB列に書き出しています。

標準モジュールに貼りつけます。(ファイル名特定方法のサンプル)

Sub FileChoose1()
  Dim myFolder 'フォルダ
  Dim myFilename As String 'ファイル名
  Dim rw As Long '行カウンタ

  myFolder = "A:\TEST\" '例です

  'DirでExcelBookを探す
  myFilename = Dir(myFolder & "*.csv")
  While myFilename <> ""
    rw = rw + 1
    Worksheets("Sheet1").Cells(rw, 1) = myFolder & myFilename
    'myFolder & myFilenameが抽出されたファイル名の1つ
    '***** 処理を書くこともできる **** Workbooks.Open FileName:= ・・・

    '次のファイル
    myFilename = Dir
  Wend
End Sub

Sub FileChoose2()
  Dim fileToOpen As Variant
  Dim myFilter As String 'フィルタ
  Dim myTitle As String 'タイトル
  Dim rw As Long '行カウンタ

  myFilter = "excle(*.csv),*.csv"
  myTitle = "ファイルを指定します"

  fileToOpen = Application.GetOpenFilename(Filefilter:=myFilter, _
                       Title:=myTitle, MultiSelect:=True)
  If IsArray(fileToOpen) = False Then
    MsgBox "キャンセルされました"
  Else
    For rw = 1 To UBound(fileToOpen)
      Worksheets("Sheet1").Cells(rw, 2) = fileToOpen(rw)
      'fileToOpen(rw)が選択したファイル名の1つ
      '***** 処理を書くこともできる **** Workbooks.Open FileName:= ・・・

    Next
  End If
End Sub

特定のフォルダに保存されたファイルを、無条件で全ファイル処理するのか、一部を選択するのかで違ってくると思われます。

○フォルダ内の全csvファイルを無条件で処理するのであれば、
 『FileChoose1』のようにDirを使って、ファイル名を特定できます。
 今はSheet1のA列に書き出しています。

○フォルダ内の指定したcsvファイルを処理するのであれば、
 『FileChoose2』のようにしてGetOpenFilenameで複数ファイルを指定し、ファイル名を特定できます。
 複数ファイルの指定は、ダイアログボックス...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング