2016-09-14 13 views
0

私はExcelファイルパスのリストをループするマクロを持っています。マクロは各パスを読み取り、ブックを開き、各ブックからさまざまなデータをコピー/プルし、中央のブックにデータをペーストします。ループする必要のあるファイルパスは約2000個あります。ご覧のとおり、これはかなり簡単なマクロです。それはうまく動作します。excelファイルを開くときにVBAがハングアップする

しかし、しばらくの間(おそらく最初の70かそこらのファイルパスを通ってループした後に)、excelは私の上で電話をかけ続けます(ファイルを開くときに表示される "Downloading"メッセージボックスを表示します)。 msgボックスのキャンセルをクリックすると、ブックが開き、マクロが正常に続行されます。しかし、これらの "Downloading"メッセージボックスが絶えずポップアップしているので、私はここに座り、より多くのファイルパスのためにマクロをベビーシットする必要があります。誰もがなぜここにこだわるのか知っていますか?その周りに道があるのですか?

さらに奇妙なことは、このHangingメッセージボックスがすべてのWorkbooks.Openインスタンスで発生しないということです。ここ

は、私が使用していたコードの例です。コメントの

With ThisWorkbook.Sheets("Filepaths") 
     For i = firstrow To lastrow 
       SourceFile = .Cells(i, 1).Value 
       Workbooks.Open SourceFile, ReadOnly:=True 
       Set MyFile = Workbooks(Workbooks.Count) 
       ..more code.......... 
       ..more code.......... 
       ..more code.......... 
       MyFile.close 
     Next i 
End With 

おかげで、これらは両方の良い点は、(と私は、私が過去に試してみましたが信じて両方のソリューションです)。しかし、単に確認するために、私はこれまで私のWorkbooks.Openライン変更しました:

Application.DisplayAlerts = False 
Workbooks.Open SourceFile, ReadOnly:=True, UpdateLinks:=False 
Application.DisplayAlerts = True 

をしかし、問題はまだ奇妙なものを...

をポップアップされ、私はラインでラインを通してステップするときということです。.. 。 "Application.DisplayAlerts = False"の行を遡った後、 "Application.DisplayAlerts"変数にカーソルを合わせると、それでもtrueと表示されます。

+1

未テスト)このコードを試してみてください。 –

+0

'Application.DisplayAlerts = False'できませんでしたか? – Tyeler

+2

一部のブックで無効な外部リンクになっている可能性がありますか? –

答えて

0

共有ドライブからファイルを開こうとしているようだから、「をダウンロードしています」というメッセージボックスが表示されているようです。これは時々起こります。このようなシナリオでは、

Application.DisplayAlerts = Falseは役に立ちません。 ReadOnly:=True, UpdateLinks:=Falseヘルプもありません。

は役立つだろう(あなたがそれでありながら `ScreenUpdating`)たぶん` Application.DisplayAlerts`をオフ

With ThisWorkbook.Sheets("Filepaths") 
    For i = firstrow To lastrow 
     SourceFile = .Cells(i, 1).Value 

     '~~> Check for network path and use sendkeys 
     '~~> to close the downloading window 
     If InStr(1, SourceFile, "\\") Then _ 
     Application.SendKeys "~", True 

     Workbooks.Open SourceFile, ReadOnly:=True 

     Set MyFile = Workbooks(Workbooks.Count) 
     '..more code.......... 
     '..more code.......... 
     '..more code.......... 
     MyFile.Close 
    Next i 
End With 
+0

はい、それは共有ドライブからです。ただし、すべてのパスは、すべてのユーザーPC上にマップされたドライブ(O:\ドライブ)です。私はすでにSendKeysコードで遊んでいました(しかし、私が完全に理解しているとは言えません)。とにかく。私が周りを遊んでいたSendKeysのコードがうまくいっているようです。しかし、私はまだ時々 "msgstr" "msgstr" "msgstr" "msgstr"メッセージボックスがハングアップしているようですが、たぶん頻繁ではありません。 – ActuaryGuy

+0

'' \\ "'を '' O:\ "' –

+0

これは、奇妙なことが起こっている...マクロがときどき停止して、Workbooks.Open行のデバッグウィンドウを開くか、マクロがapplication.sendkeys行の後、またはworkbooks.open行の後に空白の行を追加して挿入するようなものです... – ActuaryGuy

関連する問題