こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2003-01-10 14:56:05

QNo.442000

困ってます

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

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

OSのバージョンを知るにはこちらです。
http://www.loadsystem.net/api/api06.asp

投稿日時 - 2003-01-10 19:59:17

お礼

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

投稿日時 - 2003-01-14 17:17:49

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

jmh

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

投稿日時 - 2003-01-10 19:56:45

お礼

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

投稿日時 - 2003-01-14 17:16:51

ANo.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さんの目的の動作はすると思いますが、なんだか裏技っぽくてかっこ良くないので、自信なし ということで・・・・・・

投稿日時 - 2003-01-10 17:10:25

お礼

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

投稿日時 - 2003-01-10 17:52:56

あなたにオススメの質問