Excel VBA質問箱 IV

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

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


160 / 3841 ページ ←次へ | 前へ→

【79276】WMIを利用したWindowsイベントログの取得
質問  ギケン E-MAIL  - 17/6/26(月) 15:09 -

引用なし
パスワード
   はじめまして。

勤怠管理用(出勤簿)にWindowsの開始時間、シャットダウン時間を取得しようとしています。

Windowsの「システムログ」からイベントIDの「12(Windowsの開始)」と「13(Windowsのシャットダウン)」日時を一覧(一ヶ月分)で取得したいです。

出勤簿の処理に使用しますので、「指定日時」〜「指定日時」の一ヶ月間のログが欲しいのです。

現状、以下ページを参考に取得を試みました。

http://vba−geek.jp/blogーentry−314.html

実行した結果、ログは取得出来るのですが「すべてのログ」が「1日分だけ」取得されます。

処理完了までの時間も長いです。

ログが4000~5000行ある中で必要なのは2行だけですので、なんとかピンポイントでその2行だけ取得したいです。


WMIオブジェクトの参照
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

イベントログの抽出条件(日付指定のみ)を指定したSQLを実行
Set colEvents = objWMIService.ExecQuery _
  ("Select * from Win32_NTLogEvent Where TimeWritten >= '" & utcStartDate & "'")


↑このあたりを修正するのかなと思いましたが、試した限り上手く行きませんでした。

結構ググりましたが情報見つけること出来ず、手持ちの資料にもWMIについて記載されたものありませんでしたので質問させていただきました。

もしおわかりになられる方がいらっしゃればご教示頂きたく、もしくはヒント頂けるだけでもありがたいので、よろしくお願いいたします。
・ツリー全体表示

【79275】Re:チェックボックスがONの場合に選択し...
発言  マナ  - 17/6/24(土) 19:21 -

引用なし
パスワード
   ▼ペーターパン さん:

試したのは、こんな感じです。

Option Explicit

Dim WithEvents xlApp As Application
Dim bLine As Range


Private Sub Workbook_Open()
  Set xlApp = Application
  
 With xlApp.CommandBars("Cell").Controls.Add(before:=1)
  .Caption = "強調表示OFF"
  .OnAction = "thisworkbook.メニュ切り替え"
  ThisWorkbook.Sheets(1).Cells(1).Value = False
 End With
  
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

  If Not bLine Is Nothing Then bLine.Font.Bold = False
  xlApp.CommandBars("Cell").Controls(1).Delete
  
End Sub

Private Sub メニュ切り替え()
  
  With ThisWorkbook.Sheets(1).Cells(1)
    If .Value = False Then
      xlApp.CommandBars("Cell").Controls(1).Caption = "強調表示ON"
    Else
      xlApp.CommandBars("Cell").Controls(1).Caption = "強調表示OFF"
    End If
    .Value = Not .Value
  End With
   
End Sub


Private Sub xlApp_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

  If Not bLine Is Nothing Then
    bLine.Font.Bold = False
    Set bLine = Nothing
  End If
  If ThisWorkbook.Sheets(1).Cells(1).Value Then
    Selection.EntireRow.Font.Bold = True
    Set bLine = Selection.EntireRow
  End If
  
End Sub
・ツリー全体表示

【79274】Re:オートシェイプ
発言  マナ  - 17/6/24(土) 19:15 -

引用なし
パスワード
   ▼AS さん:

>全然わからなくなってしまいました。

何がわからないのでしょうか。
とりあえず試してみたことを教えてください。

現在の「普通」だけのコードは理解できているのですか?
・ツリー全体表示

【79273】Re:オートシェイプ
発言  AS  - 17/6/24(土) 18:53 -

引用なし
パスワード
   ▼マナ さん:

全然わからなくなってしまいました。

参考にコードを教えて頂けないでしょうか?
・ツリー全体表示

【79272】Re:If
発言  マナ  - 17/6/24(土) 16:39 -

引用なし
パスワード
   ▼トキノハジメ さん:

>回答が付かないので閉じさせていただきます。

条件付き書式ではだめでしたか?
・ツリー全体表示

【79271】Re:If
お礼  トキノハジメ  - 17/6/24(土) 16:00 -

引用なし
パスワード
   ▼みなさん有り難うございました。

回答が付かないので閉じさせていただきます。

また宜しくお願い致します。
・ツリー全体表示

【79270】Re:チェックボックスがONの場合に選択し...
発言  マナ  - 17/6/24(土) 12:28 -

引用なし
パスワード
   ▼ペーターパン さん:

なぜアドインなのでしょうか。
ちょっと試してみましたが
メリットが感じられませんでした。

「元に戻す」の機能が使えなくなるのは気にしないのでしょうか。
特定ファイルにのみに適用するマクロではないのでしょうか。
・ツリー全体表示

【79269】Re:オートシェイプ
発言  マナ  - 17/6/24(土) 8:04 -

引用なし
パスワード
   ▼AS さん:

>>ht tp://excelvba.pc-users.net/fol6/6_1.html 
>>

if "普通" then
 …
elseif "異常" then
 …
else
 …
end if

こんな感じで考えてみてください
・ツリー全体表示

【79268】Re:オートシェイプ
発言  AS  - 17/6/24(土) 7:21 -

引用なし
パスワード
   ▼マナ さん:
>▼AS さん:
>
>こんな感じです。
>ht tp://excelvba.pc-users.net/fol6/6_1.html 
>
>1)"普通"ならば
>"普通"のオートシェイプを表示
>"異常"のオートシェイプを非表示
>2)"異常"ならば
>"普通"のオートシェイプを非表示
>"異常"のオートシェイプを表示
>3)それ以外は、
>"普通"のオートシェイプを非表示
>"異常"のオートシェイプを非表示
>
>
>別シートの件は、これができてからでよいですか。


上記の条件で問題ありません。
宜しくお願い致します。
・ツリー全体表示

【79267】Re:オートシェイプ
発言  マナ  - 17/6/23(金) 20:41 -

引用なし
パスワード
   ▼AS さん:

こんな感じです。
ht tp://excelvba.pc-users.net/fol6/6_1.html 

1)"普通"ならば
"普通"のオートシェイプを表示
"異常"のオートシェイプを非表示
2)"異常"ならば
"普通"のオートシェイプを非表示
"異常"のオートシェイプを表示
3)それ以外は、
"普通"のオートシェイプを非表示
"異常"のオートシェイプを非表示


別シートの件は、これができてからでよいですか。
・ツリー全体表示

【79266】Re:オートシェイプ
発言  AS  - 17/6/23(金) 20:02 -

引用なし
パスワード
   >データリストとは何でしょうか?

データの入力規則のリストです。

A1に"普通"と"異常"の入力規則のリストがあり、

"普通"を選択すれば、B10にある"普通"のオートシェイプが表示され、
"異常"のオートシェイプは、非表示。

"異常"を選択すれば、D10にある"異常"のオートシェイプが表示され、
"普通"のオートシェイプが非表示にしたいのです。

又、空白の場合は両方非表示です。

データの入力規則のリストは、別シートのA1にしたいです。

説明が下手ですいません。

宜しくお願い致します。
・ツリー全体表示

【79265】Re:オートシェイプ
発言  マナ  - 17/6/23(金) 18:58 -

引用なし
パスワード
   ▼AS さん:

>A1セルに普通、異常のデータリストがあります
>普通を選択するとB10セルにオートシェイプで丸をするようにしました。

>異常の場合でもオートシェイプで丸をつけたいのですが
>どのように記述すれば良いのでしょうか?

データリストとは何でしょうか?
普通と異常しかないのであれば、常にオートシェイプは表示状態ではないのですか
どうなったら非表示にしたいのでしょうか?
・ツリー全体表示

【79264】Re:隣のセルが空白でない場合に値を入力...
発言  マナ  - 17/6/23(金) 18:45 -

引用なし
パスワード
   ▼VBA勉強始めました さん:

下記マクロの意味がわかりますか。
ステップ実行で1行ずつ確認してください。
数値を入れたいセル範囲を選択できましたか?

Option Explicit

Sub test()
  Dim ws As Worksheet
  
  Set ws = ActiveSheet
  
  ws.Columns(1).Insert
  ws.Range("A1").Select
  ws.Range("A1").CurrentRegion.Select
  ws.Range("A1").CurrentRegion.Columns(1).Select
  
End Sub
・ツリー全体表示

【79263】Re:チェックボックスがONの場合に選択し...
質問  ペーターパン  - 17/6/23(金) 17:59 -

引用なし
パスワード
   もし、下記のコードをアドインにしようとした場合、どうすればよいでしょうか?
過去の質問に再質問で申し訳ありませんが、何卒宜しくお願い致します。

>▼β さん:
>ありがとうございます。
>
>モジュールレベルで変数を宣言する。
>if not構文で宣言する。
>どちらも今の私ではたどり着けない答えでした。
>
>Worksheet_SelectionChangeの場合、イベント発生の度に変数がどうなっているかよく考えなくてはいけないのですね。
>自分が試しに作ったものだと太字が延々と作られ続けた理由がよくわかりました。
>
>壁にぶつかってまた1つ成長できました。
>これからも精進します。
>
>>▼ペーターパン さん:
>>
>>元々アップしたコードの Cellsを必要行のみにするとどうでしょうか?
>>
>>
>>Option Explicit
>>
>>Dim bLine As Range
>>
>>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>>  If Not bLine Is Nothing Then
>>    bLine.Font.Bold = False
>>    Set bLine = Nothing
>>  End If
>>  If CheckBoxes("ChkBx1").Value = xlOn Then
>>    Selection.EntireRow.Font.Bold = True
>>    Set bLine = Selection.EntireRow
>>  End If
>>End Sub
・ツリー全体表示

【79262】Re:隣のセルが空白でない場合に値を入力...
発言  VBA勉強始めました  - 17/6/23(金) 16:25 -

引用なし
パスワード
   ▼マナ さん:

返信が遅くなり申し訳ありません。
投稿した翌日から風邪で寝込んでおりました…。

B列の途中には空白はありません。

宜しくお願い致します。

>▼VBA勉強始めました さん:
>
>>この挿入したA列にB列が空白ではない場合
>>数値を入力したいと考えているのですが
>
>B列の途中の行に空白はあるのでしょうか。
>それとも、データはすべて埋まっているのでしょうか。
・ツリー全体表示

【79261】Re:オートシェイプ
発言  AS  - 17/6/23(金) 7:25 -

引用なし
パスワード
   マナ様
返信ありがとうございます。

コードは以下です。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "$A$1" Then Exit Sub

If Target.Value = "普通" Then
  On Error GoTo SHAPEMAKE
  ActiveSheet.Shapes("普通").Visible = True
Else
  ActiveSheet.Shapes("普通").Visible = False
End If
Exit Sub

SHAPEMAKE:
With ActiveSheet.Range("B1")
  ActiveSheet.Shapes.AddShape(Type:=msoShapeHeart, _
   Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Name = "普通"
End With
End Sub


宜しくお願い致します。
・ツリー全体表示

【79260】Re:オートシェイプ
発言  マナ  - 17/6/21(水) 19:10 -

引用なし
パスワード
   ▼AS さん:

>サンプルは、下記です。
>
>fast-uploader.com/file/7053571193354/
>

ダウンロードするのはためらいます。
できれば、文章で説明できませんか。
現在のコードもここに貼り付けてください。
・ツリー全体表示

【79259】Re:隣のセルが空白でない場合に値を入力...
発言  マナ  - 17/6/21(水) 18:49 -

引用なし
パスワード
   ▼VBA勉強始めました さん:

>この挿入したA列にB列が空白ではない場合
>数値を入力したいと考えているのですが

B列の途中の行に空白はあるのでしょうか。
それとも、データはすべて埋まっているのでしょうか。
・ツリー全体表示

【79258】隣のセルが空白でない場合に値を入力した...
質問  VBA勉強始めました  - 17/6/21(水) 13:28 -

引用なし
パスワード
   始めましてVBAを勉強し始めた者です。

毎月、従業員名簿を作成しているのですが
ほぼ同じ作業を手作業で行っており、非効率な為
VBAを使って作業を簡略化できればと考えております。

途中までの過程は独学ながらなんとか作成できているのですが
下記の作業だけどうすればよいかわからず固まっております…

【作業内容】
名簿を作成する為のファイルには5つのシートがあり
列の構成はすべて同じで、行は所属従業員によってシートごとでバラバラです。

   A   B   C   D  E  F
1 コード 部門名 No. 氏名
2  0000   A   10  a
3  0001   B   11  b
4  0002   C   12  c
5  0003   D   13  d
6

ここに下記のVBAでA列の左横に1列挿入します。
Sheets(1).Select
Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

   A    B    C   D   E  F
1     コード 部門名 No. 氏名
2      0000   A   10  a
3      0001   B   11  b
4      0002   C   12  c
5      0003   D   13  d
6

この挿入したA列にB列が空白ではない場合
数値を入力したいと考えているのですが
VBAのテキストも買って読んでいるのですが
うまくVBAを組めません…

どなたかお力添えを頂けないでしょうか?
・ツリー全体表示

【79257】オートシェイプ
質問  AS  - 17/6/21(水) 12:28 -

引用なし
パスワード
   はじめまして
オートシェイプのオンオフで質問させて頂きます。

A1セルに普通、異常のデータリストがあります
普通を選択するとB10セルにオートシェイプで丸をするようにしました。

異常の場合でもオートシェイプで丸をつけたいのですが
どのように記述すれば良いのでしょうか?
また、選択セルを別シートにしたいのですが
その場合も合わせて教えてくださいませ。

サンプルは、下記です。

fast-uploader.com/file/7053571193354/

パスワードは、ASASASです。

宜しくお願い致します。
・ツリー全体表示

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