• ベストアンサー

Access97。動作しているパソコンのOSの種類を知りたい

Access97でボタンをクリックするとデスクトップに有るCSVファイルのデータを取込むイベントプロシージャをつくりました。ところがWin98ならpathが"C:\WINDOWS\デスクトップ\Data.csv"となるのですが、Win2000なら"c\Documents and Settings\ユーザー\デスクトップ"となるので、OSの種類によりIF分で処理を分岐させようと考えています。 そこで、そのAccessのシステムを動作させているパソコンのOSの種類を認識させる方法は無いか悩んでいます。APIとかならそんなことも出来るのでしょうが、Access-VBAにそういう機能はあるでしょうか。

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

  • ベストアンサー
回答No.3

これはようするにデスクトップのパスを取得したいわけですよね。 Win98だからと言って、"C:\WINDOWS\デスクトップ\"とは限りませんよ。 AccessのVBAでもAPIは使用できます。以下のページが参考になると思います。 http://www.loadsystem.net/api/api05.asp OSのバージョンを知るにはこちらです。 http://www.loadsystem.net/api/api06.asp

souta_n
質問者

お礼

ありがとうございます。こういうHPもあるもんですね。参考にします。

その他の回答 (2)

  • jmh
  • ベストアンサー率23% (71/304)
回答No.2

GetVersionEx() API でバージョンは分かりますが、 「開く-ダイアログ」で、ユーザーに訊いたほうがよくないですか?

souta_n
質問者

お礼

ありがとうございます。不勉強でGetVersionEx()APIというのがわからなくて・・・AccessVBAのHELPみてものってないのですが・・・

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.1

残念ながら、簡単にOSのバージョンを取得する方法はわからないのですが、 代替の一つのアイディアとして、以下のようなやり方はいかがでしょうか? 例えば、VBA で、"C:\Documents and Settings" フォルダーを参照して、エラーの発生(Win98 だと存在しないフォルダーですので、当然エラーになりますよね。)の有無で条件分岐を行うとか。 具体的なコードはこんな感じ、 (この例だと、フォルダーの参照に GetAttr関数を使っています。) Private Sub 取込コマンド_Click() On Error GoTo Err_取込コマンド_Click If GetAttr("C:\Documents and Settings") <> vbDirectory Then 'ここで Win98, Me の時処理を行う。 Else 'ここで Win2000, XP の時の処理を行う。 End If Exit_取込コマンド_Click: Exit Sub Err_取込コマンド_Click: If Err.Number = 53 Then 'もしエラーナンバーが 53(ディレクトリが見つからない)なら、 '(エラーを無視して)次の Win98 の処理へ Resume Next Else 'それ以外のエラーなら、エラー内容を表示してプロシージャを終了 MsgBox Err.Description End If Resume Exit_取込コマンド_Click End Sub 多分これで、souta_nさんの目的の動作はすると思いますが、なんだか裏技っぽくてかっこ良くないので、自信なし ということで・・・・・・

souta_n
質問者

お礼

ありがとうございます。私もとりあえずエラールーチンで処理を分岐するという正にyoishoのお答えの様なコードでとりあえず作ったのです。それでこれまた全く同じ感想でなんかかっこ悪いな・・・それじゃ教えてgooに出してみよう、という事にしたのです。でもなんかyoishoさんの回答を見て「わっおんなじ考えだ!」と、そこはかとなくうれしかったです。

関連するQ&A