私は、ライブ株価データで自動的に更新されるワークシートを持っています。現時点では、クリップボードに定期的にコピーし、そこからデータを操作する非常に面倒なソリューションがあります。Excelから自動的にデータをエクスポートする方法はありますか?
ではなく、自動的にCSVに価格変更が検出されるたびにデータをエクスポートすることは可能ですか?私はそれがVBAを含むだろうと推測しています。
私は、ライブ株価データで自動的に更新されるワークシートを持っています。現時点では、クリップボードに定期的にコピーし、そこからデータを操作する非常に面倒なソリューションがあります。Excelから自動的にデータをエクスポートする方法はありますか?
ではなく、自動的にCSVに価格変更が検出されるたびにデータをエクスポートすることは可能ですか?私はそれがVBAを含むだろうと推測しています。
あなたは、データソースとして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
私はあなたのために特定の記事を見つけようとします。
たとえば、ODBC経由エクセルにアクセスしよう。あなたのデータソースを設定した後、あなただけの、これは「自動的にCSVに価格変更が検出されるたびにデータをエクスポート」ではないだろうという便利なSQL言語 – Adi
私は、次の方法をお勧めしたい:
コードをエクセルシートを保存し、定期的にして、プログラムで上記のマクロを呼び出す遅延との単純なループを書きます今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秒ごとに更新されます。
注意を使用してXLSデータ・ソースを照会しますシンプルなアプリ/サービスを作成するのではなくすべての(10秒+ 'name_of_macro()'実行時間)に変更されます。 –
@ Jean-Francois:真実、もう少し正確にする必要があります。私はdeltanovemberにポインタを与えたかっただけです。 –
十分に公正、私はちょうど@deltanovemberが認識してほしかった –
これは、トリックを行います:
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
あなたが定期的に呼び出される関数を設定するために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
はDDE経由で株価のアップデートはありますか? –
私は "every price tick"に依存していることに注意します。多忙な株や複数の株を手に入れて、突然あなたのExcelアプリケーションは常に忙しく、ユーザーの入力に反応しません。私は、Excelの出来事が株価の更新を受け入れるかどうかを100%確信しているわけではない(Bloomberg/ReutersがExcelプラットフォームでかなり公平に動くかどうかは決して覚えていない)。定期的な更新が最も安全です。 http://www.oraxcel.com/projects/sqlxl/help/techniques/odbc_data_source_administrator/: –