2017-09-07 6 views
1

データウェアハウスからプルするスクリプトを作成し、データをcsvファイルとしてエクスポートする形式でクリーンアップしました。私はファイルを取り出し、既に別のタブにスライサー付きのピボットテーブルがあるExcelファイルに貼り付けます。私は、Excelマクロを使用して販売担当者ごとにレポートを作成しています。私はこのユニークなレポートを送っている営業担当者が300人います。今は、個々のレポートを作成してOutlookを経由して各営業担当者に送信するExcel VBAマクロを使用しています。これは非常に時間がかかり、ラップトップを遅くします。複数のExcelファイルをRのピボットテーブルで更新するにはどうすればよいですか?

Rを使用して営業担当者のデータごとにExcelファイルを自動更新し、ピボットテーブルを個別に開くことなく更新する方法はありますか?また、Excelファイルを添付してOutlookを介して各営業担当者に送信する自動メールを送信したいと考えています。私は、Rを介してテキストやCSVファイルを作成しましたが、100以上の営業担当者にはループしません。

+0

データの例を提供し、出力をどのようにしたいのかここで誰かがRでそれを行うのを助けることができると確信しています。 – BLT

+0

R内では、データを集計してaピボットテーブルを作成し、サマリーテーブルをExcelファイルに書き込んで電子メールで送信します。これは 'lapply'または' for'ループを使ってループすることができ、各販売担当者のサマリーテーブルを作成して電子メールで送ることができます。 – eipi10

+0

[このSOの答え](https://stackoverflow.com/questions/19404270/run-vba-script-from-r)RからVBAスクリプトを実行する方法を理解するのに役立つかもしれません – eipi10

答えて

1

RからExcelにデータを送信する場合、私はexcel.linkパッケージをGregory Demin(私はWindowsのみのパッケージだと考えています)を使用しています。私はそれが最も有用だと分かった。ここhttps://cran.r-project.org/web/packages/excel.link/excel.link.pdf は、Windows上の例のワークフローは次のとおりです。

オブジェクトd の下で、現在お使いのRセッションでdata.frameを持っていて、c:\mybook.xlsb

# kill an existing Excel process running (if any) 
shell("taskkill /im EXCEL.exe /f /t") 

# open a workbook from 'c:\\mybook.xlsb' 
xl.workbook.open("c:\\mybook.xlsb") 
xl.workbook.activate("mybook.xlsb") 
mybook = xl.get.excel() 


# paste the data from dataframe object `d` to the active sheet in cell (1,1) which corresponds to cell A1 
xl.write(d,row.names=FALSE,xl.rng=mybook[["Activesheet"]]$Cells(1,1)) 

# activate a different sheet named 'mysheet' 
xl.sheet.activate("mysheet") 

# do more stuff with 'mysheet' here... 

# save your workbook to a different copy once done 
xl.workbook.save("c:\mybook_current_version".xlsb")) 

# kill Excel process again to quit Excel 
shell("taskkill /im EXCEL.exe /f /t") 

の下に保存されたExcelワークブックは、より多くのためのマニュアルを確認してください持っていると仮定すると、例。

添付ファイル付きの電子メールを送信するには、sendmailRパッケージをご覧ください。

+0

Excelシートを更新した後、RのピボットテーブルでExcelファイルをどのように更新しますか? –

+0

'ActiveWorkbook.RefreshAll'のようにマクロコマンドを実行すると、リフレッシュすることができます。ただし、通常、ユーザーがブックを開いたときに、すべてのピボットテーブルが次回更新されるため、その必要はありません。したがって、ブックに新しいデータを保存して閉じ、後で再度開くと、すべてのピボットが更新されます。 –

+0

ありがとうございます。ExcelでPivotTableを自動更新するオプションが見つかりました。ピボットテーブルを右クリックし、[ピボットテーブルオプション...]をクリックしました。私はデータテーブルに行き、「ファイルを開くときにデータをリフレッシュする」をチェックしました。静的なピボットテーブルで空のテンプレートを使用していることを確認する必要があります。それ以外の場合は、新しいデータを書き込んだ後に古いデータがあります。 –

関連する問題