2

プロセスを CRM システムに移行する前の一時的な修正として、ユーザーがテリトリー計画を実行できるようにするツールを Excel/VBA で作成しました。

このツールは、共有ディレクトリにあるブックを開きます。次に、非表示のシートにあるユーザーのワークブックにデータを取り込みます。次に、ユーザーは、表示されているシートを介して必要な変更を行います (これらのシートには、非表示のシートの適切なデータを変更する保存ボタンがあります)。

ユーザーが必要な変更をすべて行ったら、「確認」ボタンを押します。次に、共有ディレクトリのワークブックに再接続するマクロがあります。共有ディレクトリ上のこのワークブックにデータをプッシュします。このワークブックは [共有] されているため、複数のユーザーが同時に変更を行うことができ、データが不適切に上書きされないようにコードが設定されています。

そうは言っても、私は厄介な問題を思いつきました。私たちは、国際的に多くの場所にオフィスを構えています。ユーザーの接続速度は大きく異なるようです。接続速度が遅いユーザーには、次のエラーが発生しています。

「Microsoft Office Excel は、別のアプリケーションが OLE アクションを完了するのを待っています。」

Microsoft のサポート サイトには、タイムリーに応答しない別のアプリケーションと Excel が対話しようとすると、このエラーが発生する可能性があると記載されているため、接続が遅いことが原因であると思われます。

このエラーは、マクロが共有ディレクトリでワークブックを開こうとしたときに発生するため、接続速度が主な問題です。

を使用してこのエラーをブロックできることを発見しましApplication.DisplayAlerts = Falseたが、より良い修正は、このプロセスをより効率的にすることです。

だから私の本当の質問は、ワークブックを開く以外に、そのデータを取り込むために使用できるより効率的な方法はありますか?

編集:ワークシートが共有ワークブックを開くコード:

Dim xlo As New Excel.Application
Dim xlw As New Excel.Workbook
Dim xlz As String, regions As String


xlz = Sheet1.Range("o1").Value & "\Region Planning\TestDB.xlsx"
Set xlw = xlo.Workbooks.Open(xlz)

セル O1 には、共有ドライブのドライブ文字が含まれています。

4

0 に答える 0