dポイントプレゼントキャンペーン実施中!

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

A 回答 (3件)

これはようするにデスクトップのパスを取得したいわけですよね。


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

OSのバージョンを知るにはこちらです。
http://www.loadsystem.net/api/api06.asp
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/01/14 17:17

GetVersionEx() API でバージョンは分かりますが、


「開く-ダイアログ」で、ユーザーに訊いたほうがよくないですか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/01/14 17:16

残念ながら、簡単に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さんの目的の動作はすると思いますが、なんだか裏技っぽくてかっこ良くないので、自信なし ということで・・・・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/01/10 17:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す