2011-03-29 23 views
1

私は、ライブ株価データで自動的に更新されるワークシートを持っています。現時点では、クリップボードに定期的にコピーし、そこからデータを操作する非常に面倒なソリューションがあります。Excelから自動的にデータをエクスポートする方法はありますか?

ではなく、自動的にCSVに価格変更が検出されるたびにデータをエクスポートすることは可能ですか?私はそれがVBAを含むだろうと推測しています。

+0

はDDE経由で株価のアップデートはありますか? –

+1

私は "every price tick"に依存していることに注意します。多忙な株や複数の株を手に入れて、突然あなたのExcelアプリケーションは常に忙しく、ユーザーの入力に反応しません。私は、Excelの出来事が株価の更新を受け入れるかどうかを100%確信しているわけではない(Bloomberg/ReutersがExcelプラットフォームでかなり公平に動くかどうかは決して覚えていない)。定期的な更新が最も安全です。 http://www.oraxcel.com/projects/sqlxl/help/techniques/odbc_data_source_administrator/: –

答えて

1

あなたは、データソースとしてExcelファイル扱うことができますし、それを問い合わせることができます。 Google検索結果をご覧ください:http://www.google.ro/#sclient=psy&hl=ro&q=excel+data+source+sql+query&aq=0&aqi=g1&aql=&oq=&pbx=1&fp=b0efac6ab816e29b

私はあなたのために特定の記事を見つけようとします。

+0

たとえば、ODBC経由エクセルにアクセスしよう。あなたのデータソースを設定した後、あなただけの、これは「自動的にCSVに価格変更が検出されるたびにデータをエクスポート」ではないだろうという便利なSQL言語 – Adi

0

私は、次の方法をお勧めしたい:

  • が火災アップワークシートをし、「デザインモード」
  • に切り替える在庫情報を更新]ボタンを右クリックして、そのマクロに出て探してみてくださいボタンは/メソッド
  • "開く" イベントを選択し、VBAエディタ(ALT + F11)
  • がそこから-section
  • を "ワークブック" を選択してください
  • オープンにバインドされています0
  • は、このような気にいらを(私が持っていないとして、それを確認することができないだろうCSV
  • として

コードをエクセルシートを保存し、定期的にして、プログラムで上記のマクロを呼び出す遅延との単純なループを書きます今Excelへのアクセス):

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Public Sub Workbook_open() 
    Do While True 

    Call name_of_macro() 
    ActiveWorkbook.SaveAs Filename:= _ 
    "c:\path/to/file.csv", FileFormat:=xlCSV _ 
    , CreateBackup:=False 
    Sleep 10000 'Sleep 10 seconds 

    Loop 
End Sub 

この例では、ちょうどラフソリューションを示すことを意図しています。 Jean-Francois氏によれば、このコードは変更が検出されるたびに更新されず、データが同じでも10秒ごとに更新されます。

+0

注意を使用してXLSデータ・ソースを照会しますシンプルなアプリ/サービスを作成するのではなくすべての(10秒+ 'name_of_macro()'実行時間)に変更されます。 –

+0

@ Jean-Francois:真実、もう少し正確にする必要があります。私はdeltanovemberにポインタを与えたかっただけです。 –

+0

十分に公正、私はちょうど@deltanovemberが認識してほしかった –

0

これは、トリックを行います:

Sub LoadNewValuesAndCheckForChange() 

    Dim rngMyValues As Range 
    Dim varBefore As Variant 
    Dim varAfter As Variant 
    Dim iRow As Long 
    Dim iCol As Long 
    Dim booValuesHaveChanged As Boolean 

    Set rngMyValues = Range("B4:D9") ' Or wherever your data is 

    varBefore = rngMyValues ' Save old values in an array 

    ' Call the function that loads your new stock prices here... 

    varAfter = rngMyValues ' Get new values 

    ' Loop through all cells to see if anything has changed. 
    booValuesHaveChanged = False 
    For iRow = LBound(varBefore, 1) To UBound(varBefore, 1) 
     For iCol = LBound(varBefore, 21) To UBound(varBefore, 21) 
      If Not varAfter(iRow, iCol) = varBefore(iRow, iCol) Then 
       ' Change detected! 
       booValuesHaveChanged = True 
      End If 
     Next iCol 
    Next iRow 

    If booValuesHaveChanged Then 
     ' Save .csv file with timestamp in filename 
     ActiveWorksheet.SaveAs _ 
      Filename:="c:\myfile" & Format(Now, "yyyymmddhhnnss") & ".csv", _ 
      FileFormat:=xlCSV 
    End If 

End Sub 
0

あなたが定期的に呼び出される関数を設定するためにApplication.OnTimeを使用することができます。

次の関数は30秒ごとにExcelで呼び出されます。スケジュールを開始するために一度呼び出すか、ワークシートを開いて実行するときにApplication.OnTimeを設定するだけです。

Public Sub DoExport() 

    ' do your export to CSV logic here 
    Application.OnTime Now + TimeValue("00:00:30"), "DoExport" 

End Sub