A 回答 (9件)
- 最新から表示
- 回答順に表示
No.9
- 回答日時:
こんばんは、
>目的が達成できればほかの方法でも良い
こんな方法は?
ThisWorkbookに
Private Sub Workbook_Open()
Dim flg As Boolean
Dim sh As Worksheet, ShCk As Worksheet
Dim WshNetworkObject As Object
Set WshNetworkObject = CreateObject("WScript.Network")
For Each sh In Worksheets
If sh.Name = "setup_check" Then
flg = True
Exit For
End If
Next
If flg = False Then
Application.ScreenUpdating = False
Worksheets.Add after:=Worksheets(Worksheets.Count)
With ActiveSheet
.Name = "setup_check"
.Cells(1, 1) = WshNetworkObject.UserName
.Cells(2, 1) = WshNetworkObject.ComputerName
.Visible = xlVeryHidden
End With
Application.ScreenUpdating = True
End If
Set ShCk = Sheets("setup_check")
With WshNetworkObject
If ShCk.Cells(1, 1) <> .UserName _
Or ShCk.Cells(2, 1) <> .ComputerName Then
MsgBox "起動できません"
Application.Quit
End If
End With
Set WshNetworkObject = Nothing
End Sub
このコードがWorkbook_Openに書かれている場合、
初めに開いたPC及びユーザーでないと開けなくなります。
初めて開いた時に新規シート setup_check を作成、
User名、PC名をWshNetworkObjectで取得し、A1A2セルに書き込み
シート非表示xlVeryHiddenシートタグからも表示できないようにします。
2度目開いた時にsetup_checkシートを検索、A1 A2 セルの値と
開いているPC名、User名と照合、合っていなければ、Application.Quit
私的には昔よく行った手法です。(今はしません。フルオープンなので)
非表示シートを表示する場合は、
Sub a()
Sheets("setup_check").Visible = True
End Sub
ただし、非表示に戻す時 .Visible = xlVeryHidden としないと
タグ右クリックで表示できてしまいます。
No.6
- 回答日時:
5をbookの標準モジュールにいれ
下記をワークシートに入れ、00:00:00:00:00:00
を該当するMACアドレスにすればうごくかと
必ず マクロ有効のXLSMで保存
起動時マクロを有効にしない場合は、SHIFT押して起動
マクロの編集画面にいくにはALT+F11でいけます。
Private Sub Workbook_Open()
If Get_MacAddr() <> "00:00:00:00:00:00" Then
MsgBox "パソコンが違います"
Application.Quit
End If
End Sub
No.5
- 回答日時:
落ちてたコードを改造してみました。
セルでget_macaddrでマックアドレスが参照できます。
Option Explicit
Public Function Get_MacAddr() As String
'WMIにて使用する各種オブジェクトを定義・生成する。
Dim oClassSet
Dim oClass
Dim oLocator
Dim oService
Dim sMesStr As String
Dim sMacaddr As String
'ローカルコンピュータに接続する。
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer
'クエリー条件を WQL にて指定する。
Set oClassSet = oService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration")
'コレクションを解析する。
For Each oClass In oClassSet
If oClass.IPEnabled = True Then
sMacaddr = oClass.MACAddress
Exit For '複数のNICがあれば最初のものを所得
End If
Next
'使用した各種オブジェクトを後片付けする。
Set oClassSet = Nothing
Set oClass = Nothing
Set oService = Nothing
Set oLocator = Nothing
Get_MacAddr = sMacaddr
End Function
No.4
- 回答日時:
>パスワードだとほかのPCで使用できてしまいますので!
え?他人の話じゃなく自分の話なの?
自分で使えないようにしたいなら自制すればいいだけなんじゃないの?
そんな屁理屈てきなことを言い出したらMacアドレスなど偽装できるので他のPCでも使えちゃいますよ?
再度ありがとうございます
特定のPC以外では使用できないようにしたいのが目的でした
MACアドレスは変更できないものだと思っていましたので、それをキーにすれば可能かと思い込んでいました
そんなに簡単なものではないのですね
勉強になりました
No.3
- 回答日時:
エクセルのマクロに限りませんが、利用している言語でサポートしていない機能を使う場合、その機能を持った外部のプログラムを呼びだして、その結果を受け取って判定するようにします。
外部のプログラムが使いやすい形で使える、マクロ等で使いやすくなっていればいいのですが、そうじゃあない場合は、その箇所でひと苦労することになります。
さしあたりWindowsのコマンドプロンプトで使える「ipconfig」で結果は得ることができるので、その出力を解析するって方法がありますね。
たとえば、C#でプログラムを作っているけど、ある特殊な処理はC++でプログラムを作る必要があって、その間のインターフェース作成に頭を悩ましたこともありましたが、それと同じ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ちょっと先の未来クイズ第2問
9月9日(月)に発表される「第3回子どもマネー川柳」に入賞する川柳を考えてこちらに投稿してください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Macアドレスの取得(ソースは書けたが不安です)
Visual Basic(VBA)
-
Excelでセルの書式設定を使用して 『:』で区切ったMACアドレス形式の書式を設定したい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
【 Excel】シートの見出しに自...
-
エクセルVBAでcmbBoxのプロパテ...
-
エクセルでシートの並び替えで...
-
マクロを特定の複数シートで実...
-
Excelのマクロの呼び出し元を知...
-
マクロを複数シートに実行する...
-
エクセルを閉じる際に自動保存...
-
エクセル・複数のシートを一度...
-
エクセル ヘッダー(フッター)...
-
エクセルのチェックボックス
-
エクセルで、マクロボタンの表...
-
VBAでユーザーに別ファイルのシ...
-
EXCELでワークシートを開いたら...
-
EXCELでマクロを使わずに図形の...
-
ExcelのSheetに作られたMacro1...
-
マクロで複数シートに条件付き...
-
エクセルを開いたとき常に同じ...
-
エクセル 行の表示非表示のマ...
-
Excelで,特定のシートを開いた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
エクセルを開いたとき常に同じ...
-
EXCELでマクロを使わずに図形の...
-
EXCELでワークシートを開いたら...
-
EXCELの起動時に常に同じ...
-
シートを保護した時でも並べ替...
-
エクセルでシートの並び替えで...
-
マクロを特定の複数シートで実...
-
VBA シート名を先月の名前に...
-
エクセルVBAでcmbBoxのプロパテ...
-
エクセルで複数のSheetを一括フ...
-
EXCELのエラー
-
エクセル・複数のシートを一度...
-
VBAで条件によってシート見出し...
-
ExcelのSheetに作られたMacro1...
-
Excelのマクロの呼び出し元を知...
-
複数シートの保護・解除
-
マクロ 各シートの決められた位...
おすすめ情報