2016-09-06 2 views
0

まず、Visual Basicを習得するのは初めてです。私は3列のユーザー定義データをRに使用する(グラフ目的のために)コードを記述しようとしています。ユーザーは、Rからのグラフ出力を作成するExcelのボタンを押します。私は、少なくともこの例に従うRと対話することができました:http://shashiasrblog.blogspot.com/2013/10/vba-front-end-for-r.htmlVBAを使用してデータをRに送信

これを拡張して複数のセル入力を組み込み、

Sub RunRscript() 
Dim shell As Object 
Set shell = VBA.CreateObject("WScript.Shell") 
Dim waitTillComplete As Boolean: waitTillComplete = True 
Dim style As Integer: style = 1 
Dim errorCode As Integer 
Dim Attributes() As Variant 
Attributes = Sheet55.Range("A2:C68") 

Dim path As String 
path = "RScript S:\...\test.R " & Attributes 
errorCode = shell.Run(path, style, waitTillComplete) 

End Sub 

が、私はエラーを取得しています:「コンパイルエラー:型の不一致を」R.におけるデータフレームは、ここに私の試みです。私はAttributes()を間違って定義していると仮定しています。文学やチュートリアルへの助けや指導は大変ありがたいです!すべての正直なところ、私はpathとerrorCode行を理解していません。

おかげで、すべて、 J

+3

'Attributes'を使用すると、指定した範囲の値の2次元配列です。そのようなコマンドライン上に文字列として書くことはできません。範囲をテキストファイルに書き込んだ後、Rスクリプトにファイルパスを渡すことを検討することができます –

+1

実際に@TimWilliamsが述べているように、範囲はコマンドラインでargsを渡すために使われるスカラー値ではありません。実際、それは3列、66行のかなり長いテーブルのような範囲です。 txt/csvをRで読み込み、 'read.table()'をdfに、 'readLines()'をlistに保存することを検討してください。 – Parfait

+0

非常に有用なコメント。私は後でRで使用するためにCSVファイルに書き込むコードを見つけることができました。指導をいただきありがとうございます! –

答えて

0

このコードは、csvファイルに書き込むためのトリックをした:http://www.excel-easy.com/vba/examples/write-data-to-text-file.html

Private Sub CommandButton21_Click() 
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer 

myFile = "...\test.csv" 
Set rng = Selection 

Open myFile For Output As #1 

For i = 1 To rng.Rows.Count 
    For j = 1 To rng.Columns.Count 
     cellValue = rng.Cells(i, j).Value 

     If j = rng.Columns.Count Then 
      Write #1, cellValue 
     Else 
      Write #1, cellValue, 
     End If 
    Next j 
Next i 

Close #1 


End Sub 
関連する問題