• ベストアンサー

Access→Excelへの出力とVBA

エクセルのシート1のB列に2種類の数値どちららかを選択させ、 A列の行数にそって入力させたいと考えています。 数値の判断は、 AccessのフォームABCにあるコンボボックスAで ○×を選んだときは「1」、 AccessのフォームABCにあるコンボボックスAで ☆★を選んだときは「2」 をA列に入力されている値の行数だけB列に値を入力させるには、 どの様にしたら良いのでしょうか? Access単品の操作では出来ないと聞きました。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.1

既に起動しているアクセスの画面情報を監視しエクセルのシートに反映したいということでしょうか? これは、エクセル側で仕組めば出来ないことはないでしょう。 しかし、必死こいて、そういう仕組みを開発する必要性は・・・・??? そういうことで、簡易的な仕組みを提案。 テキストファイルにAccessの更新情報を吐き出すというやり方。 更新情報01.txt 1 まあ、これだけの情報の受け渡しを担当するファイル。 エクセル側では0.1秒程度の間隔で更新の有無をチェック。 ファイルが存在すれば読み込んで削除して更新。 0.1秒以下の間隔で更新された場合の事を考えて、更新情報01.txt、更新情報02.txt・・・更新情報10.txtと命名。 auto_run でこの仕組みを起動しておけば事実上Access の更新が Excel に反映されると思います。 ただ、0.1秒待機する関数は、簡単ですが落とし穴もありますので紹介しておきます。 Public Sub Pause(ByVal PauseTime As Single)   Dim Finish As Single      Finish = Timer + PauseTime   Do     DoEvents   Loop Until Timer > Finish End Sub なお、ファイル出力等では次のような関数を利用すれば簡単です。 Public Function FileWrite(ByVal FileName As String, _              ByVal Text As String) As Boolean On Error GoTo Err_FileWrite   Dim fso As FileSystemObject   Dim txs As TextStream      Set fso = New FileSystemObject   Set txs = fso.CreateTextFile(FileName, True)   txs.Write Text   FileWrite = True Exit_FileWrite:   Exit Function Err_FileWrite:   MsgBox Err.Description & "(FileWrite)", vbExclamation, " 関数エラーメッセージ"   Resume Exit_FileWrite End Function Public Function FolderExists(ByVal FolderName As String) As Boolean   Dim fso As FileSystemObject      Set fso = New FileSystemObject   FolderExists = fso.FolderExists(FolderName) End Function Public Function DeleteFile(ByVal FileName As String) As Boolean On Error GoTo Err_DeleteFile   Dim isOK  As Boolean   Dim fso   As FileSystemObject      Set fso = New FileSystemObject   fso.DeleteFile FileName   isOK = True Exit_DeleteFile:   DeleteFile = isOK   Exit Function Err_DeleteFile:   Resume Exit_DeleteFile End Function Public Function FileReadArray(ByVal FileName As String) As String() On Error GoTo Err_FileReadArray    Dim fso    As FileSystemObject    Dim strTexts() As String       Set fso = New FileSystemObject    strTexts() = Split(fso.OpenTextFile(FileName).ReadAll, vbCrLf) Exit_FileReadArray:    FileReadArray = strTexts()    Exit Function Err_FileReadArray:    MsgBox Err.Description & "(FileReadArray)", vbExclamation, " 関数エラーメッセージ"    strTexts() = Split("")    Resume Exit_FileReadArray End Function

n_c63amg
質問者

お礼

お礼が遅くなりましてすいません。 有り難うございました。 ちょっと難しいです。

その他の回答 (1)

noname#140971
noname#140971
回答No.2

補足: API+SendKeysでアクセスからエクセルにショートカットキーを送出という手段も。 これが希望ならば、質問の的を絞って過去ログを探されたらいいです。

n_c63amg
質問者

お礼

お礼が遅くなりましてすいません。 有り難うございました。 ちょっと難しいです。

関連するQ&A