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
No.2
- 回答日時:
GetVersionEx() API でバージョンは分かりますが、
「開く-ダイアログ」で、ユーザーに訊いたほうがよくないですか?
ありがとうございます。不勉強でGetVersionEx()APIというのがわからなくて・・・AccessVBAのHELPみてものってないのですが・・・
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さんの目的の動作はすると思いますが、なんだか裏技っぽくてかっこ良くないので、自信なし ということで・・・・・・
ありがとうございます。私もとりあえずエラールーチンで処理を分岐するという正にyoishoのお答えの様なコードでとりあえず作ったのです。それでこれまた全く同じ感想でなんかかっこ悪いな・・・それじゃ教えてgooに出してみよう、という事にしたのです。でもなんかyoishoさんの回答を見て「わっおんなじ考えだ!」と、そこはかとなくうれしかったです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Accessの代わりのノンプログラムデータベース作成 4 2022/10/21 09:26
- その他(パソコン・スマホ・電化製品) EXCELのSUMPRODUCT関数について 2 2022/09/21 17:30
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- その他(データベース) Microsoft Accessについて 1 2022/06/06 16:20
- その他(データベース) 20万行あるデータを動かしたい 2 2023/06/13 15:21
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Windows 10 起動ディスクについて 1 2022/06/14 13:00
- Mac OS mac OSについて教えてください。 6 2023/02/14 10:25
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
列名に変数を使うことはできな...
-
実行時エラー459 withステート...
-
#1062 - '0' は索引 'PRIMARY' ...
-
空白はダメというエラーの表示...
-
SQLserver2005 nvarchar を flo...
-
オラクル(PL/SQL)のエラー
-
AccessVBA 実行時エラー'2766'...
-
Access 実行時エラー'3075' 対...
-
SQL文長の制限
-
(素人の質問) SQL Server エ...
-
VBAで RecordSet を扱うには?
-
DBDが動作しません。
-
アクセスでエラー このフィー...
-
SQL エラー コードの一覧 につ...
-
AccessでのSQL文
-
1人社内SEとして
-
アクセスでのエラーについて
-
PL/SQL ORA-06502エラーに関し...
-
SQLiteで全文検索はANDできない?
-
同ベータベース内でのwordpress...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
「1004:アプリケーション定義...
-
列名に変数を使うことはできな...
-
アクセスでエラー このフィー...
-
実行時エラー459 withステート...
-
AccessVBA 実行時エラー'2766'...
-
空白はダメというエラーの表示...
-
SQLserver2005 nvarchar を flo...
-
SQL文長の制限
-
オラクル(PL/SQL)のエラー
-
DocuWorksでの印刷
-
SQL エラー コードの一覧 につ...
-
Access2010実行時エラー-21473525
-
BULK INSERTのエラー取得は可能...
-
PL/SQL ORA-06502エラーに関し...
-
UPDATEを使ったSQL文にて
-
DLLが正しく呼び出せません (ToT)
-
『ORA-00936: 式がありません。...
-
(素人の質問) SQL Server エ...
-
Access 実行時エラー'3075' 対...
おすすめ情報