- ベストアンサー
Access→Excelへの出力とVBA
エクセルのシート1のB列に2種類の数値どちららかを選択させ、 A列の行数にそって入力させたいと考えています。 数値の判断は、 AccessのフォームABCにあるコンボボックスAで ○×を選んだときは「1」、 AccessのフォームABCにあるコンボボックスAで ☆★を選んだときは「2」 をA列に入力されている値の行数だけB列に値を入力させるには、 どの様にしたら良いのでしょうか? Access単品の操作では出来ないと聞きました。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
既に起動しているアクセスの画面情報を監視しエクセルのシートに反映したいということでしょうか? これは、エクセル側で仕組めば出来ないことはないでしょう。 しかし、必死こいて、そういう仕組みを開発する必要性は・・・・??? そういうことで、簡易的な仕組みを提案。 テキストファイルに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
その他の回答 (1)
補足: API+SendKeysでアクセスからエクセルにショートカットキーを送出という手段も。 これが希望ならば、質問の的を絞って過去ログを探されたらいいです。
お礼
お礼が遅くなりましてすいません。 有り難うございました。 ちょっと難しいです。
お礼
お礼が遅くなりましてすいません。 有り難うございました。 ちょっと難しいです。