Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11286 / 13644 ツリー ←次へ | 前へ→

【16811】OSの取得方法はどうすればいいですか? おしえて。 04/8/10(火) 20:18 お礼[未読]
【16812】Re:OSの取得方法はどうすればいいですか? Kein 04/8/10(火) 21:28 回答[未読]
【16813】Re:OSの取得方法はどうすればいいですか? ちゃっぴ 04/8/10(火) 22:07 回答[未読]
【16814】すみません。PCのOSの取得方法はどうすれ... おしえて。 04/8/10(火) 23:34 質問[未読]
【16817】Re:すみません。PCのOSの取得方法はどう... ちゃっぴ 04/8/11(水) 9:22 回答[未読]
【16834】Re:すみません。PCのOSの取得方法はどう... おしえて。 04/8/11(水) 15:42 質問[未読]
【16836】Re:すみません。PCのOSの取得方法はどう... IROC 04/8/11(水) 15:55 回答[未読]
【16837】Re:すみません。PCのOSの取得方法はどう... ちゃっぴ 04/8/11(水) 16:03 回答[未読]
【16877】Re:すみません。PCのOSの取得方法はどう... おしえて。 04/8/14(土) 4:11 お礼[未読]
【16944】Re:すみません。PCのOSの取得方法はどう... For Each 04/8/16(月) 23:03 回答[未読]
【16815】ありがとうございます。 おしえて。 04/8/10(火) 23:45 お礼[未読]

【16811】OSの取得方法はどうすればいいですか?
お礼  おしえて。  - 04/8/10(火) 20:18 -

引用なし
パスワード
   エクセル2000です。
OSの取得方法はどうすればいいですか?

【16812】Re:OSの取得方法はどうすればいいですか?
回答  Kein  - 04/8/10(火) 21:28 -

引用なし
パスワード
   最も簡単なのは

MsgBox Application.OperatingSystem

マイナーバージョンの違いまで細かく判別するなら、APIを使います。

【16813】Re:OSの取得方法はどうすればいいですか?
回答  ちゃっぴ  - 04/8/10(火) 22:07 -

引用なし
パスワード
     >マイナーバージョンの違いまで細かく判別するなら、APIを使います。

APIを使用しない場合こんな感じになります。

Dim objWMIService As Object
Dim colItems As Object
Dim objItem As Object

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.InstancesOf("Win32_OperatingSystem")
For Each objItem in colItems
  Debug.Print "BuildNumber: " & objItem.BuildNumber
  Debug.Print "Caption: " & objItem.Caption
  Debug.Print "CSDVersion: " & objItem.CSDVersion
  Debug.Print "ServicePackMajorVersion: " & objItem.ServicePackMajorVersion
  Debug.Print "ServicePackMinorVersion: " & objItem.ServicePackMinorVersion
  Debug.Print "Version: " & objItem.Version
Next

【16814】すみません。PCのOSの取得方法はどうす...
質問  おしえて。  - 04/8/10(火) 23:34 -

引用なし
パスワード
   質問の仕方が悪かったみたいです。

パソコンのOS (XPとか、Win98とか、2000)とか
と、そのマシン の ログインしている ユーザー名を取得する方法はありますでしょうか?

OS2000の場合
C:\Documents and Settings\Username\Application Data\Microsoft\Office\Recent
にできるエクセルを削除するソースを作りたいと思っています。

なので、ログイン中のUsernameとOS(PC)の取得が必要になります。

PCのOSごとに、Recentのディレクトリが若干違うようなので、Select文で分岐させたいと思っています。

【16815】ありがとうございます。
お礼  おしえて。  - 04/8/10(火) 23:45 -

引用なし
パスワード
   ちゃっぴさん。OS取得できるみたいですね。たすかります。ありがとうございました。

【16817】Re:すみません。PCのOSの取得方法はど...
回答  ちゃっぴ  - 04/8/11(水) 9:22 -

引用なし
パスワード
   >パソコンのOS (XPとか、Win98とか、2000)とか
>と、そのマシン の ログインしている ユーザー名を取得する方法はありますでしょうか?

WshNetworkオブジェクトを使用します。

Dim WshNetwork As Object
Set WshNetwork = WScript.CreateObject("WScript.Network")
Debug.Print "User Name = " & WshNetwork.UserName

>OS2000の場合
>C:\Documents and Settings\Username\Application Data\Microsoft\Office\Recent
>にできるエクセルを削除するソースを作りたいと思っています。

最近使ったファイルの削除でしょうか?
RecentFile オブジェクトをDeleteしてやればいいような気が・・・

ヘルプでお調べください。

【16834】Re:すみません。PCのOSの取得方法はど...
質問  おしえて。  - 04/8/11(水) 15:42 -

引用なし
パスワード
   ▼ちゃっぴ さん:
すみません。Win98にて、OSがどのように取得されるのか、実行してみました。

WScriptで、変数が、定義されていません。といわれるので、
Dim WScript as Object
を追加してみました、
するとオブジェクト変数または、Withブロック変数が設定されていません。といわれるので、以下のようにしてみましたが、
相変わらず、creatobjectのところで、オブジェクト変数または、Withブロック変数が設定されていませんといわれてしまいます。
どのようにしたらよいでしょうか?
object変数とか詳しくないので、よくわかりません。
ヘルプも読みましたが、いまいち理解できません。よろしくおねがいします。

sub kame

Dim WshNetwork As Object
Dim colItems as Object
Dim objItem as Object
Dim WScript as Object

Set WshNetwork = WScript.CreateObject("WScript.Network")
For Each objItem In colItems
Debug.Print "User Name = " & WshNetwork.UserName
Next

end sub

>最近使ったファイルの削除でしょうか?
>RecentFile オブジェクトをDeleteしてやればいいような気が・・・

手動で、ということでしょうか?
RecentFileにできる、特定のファイル名のエクセルのみ削除したいので、
そういう作りこみをしたいと思っています。ので、手動を自動にするためにVBA化したいと思っています。

【16836】Re:すみません。PCのOSの取得方法はど...
回答  IROC  - 04/8/11(水) 15:55 -

引用なし
パスワード
   WScript を消してみたら如何でしょうか?

>Set WshNetwork = WScript.CreateObject("WScript.Network")
 ↓
Set WshNetwork =CreateObject("WScript.Network")

【16837】Re:すみません。PCのOSの取得方法はど...
回答  ちゃっぴ  - 04/8/11(水) 16:03 -

引用なし
パスワード
   > WScriptで、変数が、定義されていません。といわれるので、

スクリプトの名残があったので、以下のように修正してください。(o*。_。)oペコッ

Set WshNetwork = CreateObject("WScript.Network")

>RecentFileにできる、特定のファイル名のエクセルのみ削除したいので、
>そういう作りこみをしたいと思っています。ので、手動を自動にするためにVBA化したいと思っています。

こんな感じでできるんじゃないかな?

Dim objTarget As RecentFile
  
For Each objTarget In Application.RecentFiles
  If objTarget.Name = "ファイルパス名" Then
    objTarget.Delete
  End If
Next objTarget

名前で直接指定するのはできないみたいです・・・。

【16877】Re:すみません。PCのOSの取得方法はど...
お礼  おしえて。  - 04/8/14(土) 4:11 -

引用なし
パスワード
   みなさん、お世話になりました。
とても助かりました。
ありがとうございました。

【16944】Re:すみません。PCのOSの取得方法はど...
回答  For Each  - 04/8/16(月) 23:03 -

引用なし
パスワード
   ユーザー名取得にこんなAPIがあります。

Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long


Sub ユーザー名()
  Dim Name As String
  Dim Leng As Long
  Dim Ret As Long

  'バッファを確保
  Name=String(250,chr(0))
  Leng=Len(Name)

  Ret=GetUserName(Name,Leng)
 
  MsgBox "ユーザー名は" & Name & " です。"
End Sub

API技術関連というサイトに載ってました

11286 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free