2017-06-08 7 views
0

ユーザーがダッシュボードから定期レポートをダウンロードします。このレポートは.xlsファイルとしてダウンロードされます。ユーザーは、このレポートをダウンロードするたびにいくつかのアクションを完了するVBAプログラムを作成するように求めました。特定の名前のファイルがダウンロードされるたびに自動的にVBAマクロをトリガー

彼女はレポートをダウンロードするときにこのマクロを開始することを覚えておく必要はありません。彼女はファイルをダウンロードするときにこのマクロを開始することを望んでいます。

レポートの名前と形式は常に同じです。

Excelにファイルが特定の名前でダウンロードされ、マクロが開始されたことを検出する方法はありますか?

+1

Excelの場合、いいえ。あなたは、彼女がそれを引き起こす可能性がExcelのためのオープンイベントで、次に、Excelのドキュメントを開くために使用しているブラウザで何とか遊ぶ必要があります。そのためには(ブラウザーの名前に基づいて文書を自動的に開く)、それが可能かどうかを調べる必要があります(tbh、そうは思わない)。 – Sgdva

+1

このスプレッドシートがオンラインになっている場所によっては、プロセスを「逆戻り」させる場合にVBAを使用する方法があります。彼女が開いているExcelを持って、Excelにレポートをダウンロードさせ、マクロを実行させます。 *または* - 使用するURLがわかっている場合は、Excelを使用してURLを尋ねてから、ファイルをダウンロード/操作できます。 ...もちろん、従業員はExcelを覚えておく必要があります。 – BruceWayne

+0

バックグラウンドで常時稼動しているExcel(またはExcelオブジェクトモジュールを使用できる他のアプリケーション)をユーザーが持っていれば、ハードドライブ上のファイルの作成/更新を常に監視するように設定できます、ブックを開き、必要な操作を実行します。 (でもBatm .. Bruceさんは、ダウンロードを行うためにExcelを使うという提案は、新しい方法を使うようにユーザーを訓練する機会があれば、私が行っていた方法だと思う)。 – YowE3K

答えて

0

OPここでは、

回答いただきありがとうございます。誰かが同様の仕事を達成する必要がある場合に、私がやったことを投稿したかったのです。

私はこれを達成したアドインを作成しました。

このモジュールには、WindowActivateイベントが発生したときにリッスンし、ブック名がレポートの名前と一致するかどうかを確認するクラスモジュールが含まれています。存在する場合、要求された変換を実行します。次のように

Public WithEvents appevent As Application 

Private Sub appevent_WindowActivate(ByVal wb As Workbook, ByVal Wn As Window) 
If ((wb.Name Like "WB NAME GIVEN BY USER*") 
    DO REQUESTED TRANSFORMATIONS 

クラスモジュールははThisWorkbookオブジェクトによって呼び出されます。

'Make instance of Class1 with global scope' 
    Dim myobject As New Class1 


Private Sub Workbook_Open() 
    Set myobject.appevent = Application 
End Sub 

明らかに、このソリューションは仮定の多様に依存し、パフォーマンスのためのかなり悪いです。しかし、私はそれが仕事をし、他の人にとって役に立つかもしれないので、私はそれを掲示しています。

英語は私の母国語ではありません - 間違いをお詫び申し上げます。

関連する問題