Excel VBA質問箱 IV

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

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


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

【76510】Re:一行目のみ検索しない
お礼  ゆーあ  - 14/12/18(木) 16:46 -

引用なし
パスワード
   ウッシ さん

こんにちはです。
コメントありがとうございます。

今動作確認しましたが、
希望の動作確認致しました!バッチリです!!
お忙しい中、お手数お掛けしました!!

一人でずっと悩んでたので、かなりスッキリしました!
本当にありがとうございました m(_ _)m
・ツリー全体表示

【76509】Re:一行目のみ検索しない
回答  ウッシ  - 14/12/18(木) 15:56 -

引用なし
パスワード
   こんにちは

  Set tSh = ThisWorkbook.Worksheets("Sheet1") '対象シート
  
  With tSh.Range("A1").CurrentRegion.Offset(1)
    Set 検索氏名 = Union(.Columns("B:C"), .Columns("E:E"), .Columns("I:I")).Find(TextBox検索, LookAt:=xlPart)
  End With

とかでどうですか?

▼ゆーあ さん:
>Win XP Excel2000
>
>フォーム上で顧客データ(氏名/住所/電話番号etc)の
>管理(登録・更新)をしており、
>更にフォーム上に検索Box(TextBox)を設置し、
>検索Boxに氏名や住所を入力すると該当したデータを
>表示するようにしております。
>
>検索時、列で検索するようにしており、
>Unionメゾットを用い、B列/C列/E列/I列を検索させております。
>
>Set 検索氏名 = Union(Columns("B:C"), Columns("E:E"), Columns("I:I")).Find(TextBox検索, LookAt:=xlPart)
>
>
>  A   B   C    D  E  F  ・・・
>1 No.  氏名 氏名フリガナ 営業 ID 契約日
>2 1  山田  ヤマダ  田中 1111 20141218 ・・・
>3 2  ・・・
>・
>・
>
>各列共に1行目は各項目名になる為、表示したくないのですが、
>現コードをアレンジして希望の動作は可能ですでしょうか?
>ヒントでも構いませんので、お教え願います。
・ツリー全体表示

【76508】一行目のみ検索しない
質問  ゆーあ  - 14/12/18(木) 13:29 -

引用なし
パスワード
   Win XP Excel2000

フォーム上で顧客データ(氏名/住所/電話番号etc)の
管理(登録・更新)をしており、
更にフォーム上に検索Box(TextBox)を設置し、
検索Boxに氏名や住所を入力すると該当したデータを
表示するようにしております。

検索時、列で検索するようにしており、
Unionメゾットを用い、B列/C列/E列/I列を検索させております。

Set 検索氏名 = Union(Columns("B:C"), Columns("E:E"), Columns("I:I")).Find(TextBox検索, LookAt:=xlPart)


  A   B   C    D  E  F  ・・・
1 No.  氏名 氏名フリガナ 営業 ID 契約日
2 1  山田  ヤマダ  田中 1111 20141218 ・・・
3 2  ・・・



各列共に1行目は各項目名になる為、表示したくないのですが、
現コードをアレンジして希望の動作は可能ですでしょうか?
ヒントでも構いませんので、お教え願います。
・ツリー全体表示

【76507】Re:他PCのEXCEL VBによるイベントビュー...
発言  コマさん  - 14/12/18(木) 9:59 -

引用なし
パスワード
   >「送られてきた他PC(XP)のAppevent.EVTファイルを自PCのエクセルマクロでデータ抽出し、エクセルシートに展開可能か」という内容となります。

XPでしたか・・・。
すみません、こちらにXP環境がありませんので、これにて失礼します。
・ツリー全体表示

【76506】Re:セルの値のファイル名のファイルを移...
回答  RS  - 14/12/17(水) 22:15 -

引用なし
パスワード
   γさん
ご回答ありがとうございます!
いただいた助言とコードを咀嚼して理解を進めながら組みなおしたいと思います。

おっしゃられているようにコードをツギハギしながら構築しているため
チグハグなコードになっていると存じます。当然のこととお叱りを受けそうですが、コードの本質を理解するように勤めたいと思います。
・ツリー全体表示

【76505】Re:他PCのEXCEL VBによるイベントビュー...
質問  K2R  - 14/12/17(水) 22:10 -

引用なし
パスワード
   返事ありがとうございます。以下、補足します。
>> 他のPCで収集したApp.evtをエクセルのVBで開き、作業したいと考えています。
>
> [他のPCで収集したApp.evt]は、どこにあるんですか?自PC?

→自分のPCにあります。他のPCから採取したEVTファイルがログ解析にて送られてきます。

>> 1.手動で「ファイルを開く」操作を行い、EVTファイルを指定
>> 上記1.2.に関しては可能でしょうか。。
>
> 手動で「ファイルを開く」操作を行い、EVTファイルを指定
> →これが可能でしょうか?という質問の意味がわかりかねます。

→すいません。こちらはマクロで作成可能でした。

>
> 結局のところ、
> 『自PCで他PCのEVT抽出を行いたいけど可能かどうか?』
> という質問なのでしょうか?

→抽出は既に他PC自身のログ収集でEVTファイル形式で自動で行われており、EVTファイルのみ自PCに送られてきています。
他PCで抽出時点でCSVにしてもらえば良いだけの話かもしれませんが、その変更に
いろいろ制約があって費用がかかり容易ではないので相談させてもらいました。

まとめますと、
「送られてきた他PC(XP)のAppevent.EVTファイルを自PCのエクセルマクロでデータ抽出し、エクセルシートに展開可能か」という内容となります。

以上、よろしくお願いします。
・ツリー全体表示

【76503】Re:セルの値のファイル名のファイルを移...
発言  γ  - 14/12/17(水) 21:40 -

引用なし
パスワード
   こんばんは。

> 空白のセルの値を参照した時点で
> .Movefileのパスがエラーを返しているという理解でよいのでしょうか。

そうだと思いますよ。
ご自分で試してみたらどうでしょうか。

Sub test2()
  Dim Target2 As String
  Dim strMoveTo As String
  Dim strScriptPath2 As String
  Dim objFileSys As Object

  Set objFileSys = CreateObject("Scripting.FileSystemObject")
  strScriptPath2 = "C:\Users\100221\Desktop\ ・・以下略 ・・"

  strMoveTo = objFileSys.BuildPath(strScriptPath2, "")
  objFileSys.MoveFile "", strMoveTo
End Sub


> この空白のセルを無視して、200行目までセルの値を参照してそのパス名のファイルを
> 移動させたいのですが、その場合はどのように考えたらよいのでしょうか。

余り難しく考えないようにして下さい。
空白でない時だけ実行すればいいのですよね。
例えば以下のようにするといいでしょう。

  Fn = Cells(i, 12).Value
  If Fn <> "" Then
    strMoveFrom = objFileSys.BuildPath(Fn, "")
    strMoveTo = objFileSys.BuildPath(strScriptPath2, "")
    objFileSys.MoveFile strMoveFrom, strMoveTo
  End If

== 以上 ===

なお、細かい事ながら、意図がわからないところがあります。
(1)
> strScriptPath1 = (Target1) 
 変数を変える必要はありません。
(2) 
> strMoveFrom = objFileSys.BuildPath(Fn, "")
 普通は、フォルダ名に、ファイル名を連結するときなどに使います。 
 strMoveFrom = objFileSys.BuildPath(Fn, "")ならば、
 単に
 strMoveFrom = Fn
 で良いはずです。

なにかコードをつぎはぎしているので、本来の意図と離れたコードに
なっているようにお見受けします。頑張ってください。
 
・ツリー全体表示

【76502】Re:他PCのEXCEL VBによるイベントビュー...
回答  コマさん  - 14/12/17(水) 11:36 -

引用なし
パスワード
   ちょっと質問の内容がわからないので、補足願えますか?


>他のPCで収集したApp.evtをエクセルのVBで開き、作業したいと考えています。

[他のPCで収集したApp.evt]は、どこにあるんですか?自PC?


>1.手動で「ファイルを開く」操作を行い、EVTファイルを指定
>上記1.2.に関しては可能でしょうか。。

手動で「ファイルを開く」操作を行い、EVTファイルを指定
→これが可能でしょうか?という質問の意味がわかりかねます。


結局のところ、
『自PCで他PCのEVT抽出を行いたいけど可能かどうか?』
という質問なのでしょうか?
・ツリー全体表示

【76501】Re:セルの値のファイル名のファイルを移...
発言  RS  - 14/12/17(水) 8:49 -

引用なし
パスワード
   助言ありがとうございます。
確認したところ、6〜200行の間に空白のセルがありました。
セルを連続で参照する過程で、空白のセルの値を参照した時点で.Movefileのパスがエラーを返しているという理解でよいのでしょうか。

この空白のセルを無視して、200行目までセルの値を参照してそのパス名のファイルを移動させたいのですが、その場合はどのように考えたらよいのでしょうか。
・ツリー全体表示

【76500】Re:セルの値のファイル名のファイルを移...
発言  γ  - 14/12/17(水) 7:13 -

引用なし
パスワード
   ▼RS さん:
>Q1について
>VBAについて理解不足で申し訳ないのですが、Filについては不要ではと考えています。
>元のエクセルシートの特性上12列目の6行目以降に移動したいファイルパスを記入するようにしています。

了解です。使っていないなら不要ですね。
(もし、特定のフォルダに入っているすべてのファイルということなら、
 むしろFilを使ったほうが正確だし、手間が省けるでしょう。)

>Q2について
>objFileSys.MoveFile strMoveFrom, strMoveToの行でエラーとなっているようで、
>テストフォルダからバックアップフォルダにファイルが移動した後にエラーが起きています。
>理解不足で曖昧な回答で申し訳ありません。
>Fnには指定したセルの値(値はファイルのパス名)を列方向で6行目から200行目まで取得したいと考えています。

200行目まですべて埋まっていますか?
200行というのは最大限の目安であって、入っていない行もあるということなら、
そこで、同様のエラーメッセージが出ますね。確認してください。
・ツリー全体表示

【76499】他PCのEXCEL VBによるイベントビューアの...
質問  K2R  - 14/12/16(火) 22:58 -

引用なし
パスワード
   こんにちは。
他のPCで収集したApp.evtをエクセルのVBで開き、作業したいと考えています。
作業性の効率を考えると「イベントビューワで開いてCSVファイルで保存し、エクセルで開いて作業」とすると、他のEVTファイルが多いので結構手間となってしまいます。

1.手動で「ファイルを開く」操作を行い、EVTファイルを指定
2.イベントIDが6005と6006のデータ・日付・時刻をシートに一覧抽出
3.そこから別マクロで色わけなど自動作業を実施(こちらは作成できます)。

過去履歴を検索しますと
【72497】EXCEL VBによるイベントビューアの抽出 
がありますが、自PCからの抽出で、他のPC(XP)のEVTファイルではできないようで、いじってみましたができませんでした。
上記1.2.に関しては可能でしょうか。。

以上、よろしくお願いします。
・ツリー全体表示

【76498】Re:セルの値のファイル名のファイルを移...
発言  RS  - 14/12/16(火) 22:15 -

引用なし
パスワード
   回答が遅れまして失礼します。

Q1について
VBAについて理解不足で申し訳ないのですが、Filについては不要ではと考えています。
元のエクセルシートの特性上12列目の6行目以降に移動したいファイルパスを記入するようにしています。

Q2について
objFileSys.MoveFile strMoveFrom, strMoveToの行でエラーとなっているようで、
テストフォルダからバックアップフォルダにファイルが移動した後にエラーが起きています。
理解不足で曖昧な回答で申し訳ありません。
Fnには指定したセルの値(値はファイルのパス名)を列方向で6行目から200行目まで取得したいと考えています。
・ツリー全体表示

【76497】Re:セルの値のファイル名のファイルを移...
発言  γ  - 14/12/16(火) 21:16 -

引用なし
パスワード
   こんにちは。
質問があります。
(Q1) Fil と、12列目のパス名との関係は?
(Q2) そのエラーが起きるのはどの行でしょうか。
   関連する変数名(Fnなど)はどのようなものですか?
・ツリー全体表示

【76496】Re:表示形式
発言  γ  - 14/12/16(火) 20:58 -

引用なし
パスワード
   ▼[名前なし] さん:
> ややこしくて申し訳ありません。
ってゆうか、意味が正確にとれません。
>    textタブ区切り
言葉を省略せずに普通に説明してください。
・ツリー全体表示

【76495】セルの値のファイル名のファイルを移動さ...
質問  RS  - 14/12/16(火) 20:53 -

引用なし
パスワード
   列方向のセルに列挙されたファイルパス名のファイルを移動させるマクロを作ろうと
しており、以下のコードを組んでみたのですが、ファイルは移動するのですがプロシージャの呼び出し、または引数が不正ですというエラーが出ます。
どのように改善したらよいでしょうか。

Sub ファイル移動マクロ()
   Dim objFileSys  As Object
   Dim strScriptPath As String
   Dim strMoveFrom  As Variant
   Dim strMoveTo   As String
   Dim Fn   As Variant  
   Target1 = "C:\Users\100221\Desktop\エクセルマクロ(VBA)\テストフォルダ\"
   Target2 = "C:\Users\100221\Desktop\エクセルマクロ(VBA)\バックアップフォルダ\"  
   Set objFileSys = CreateObject("Scripting.FileSystemObject")
   Set Fol = objFileSys.GetFolder(Target1)
   Set Fil = Fol.Files
  
   strScriptPath1 = (Target1)
   strScriptPath2 = (Target2)  
   For i = 6 To 200  
   Fn = Cells(i, 12).Value  
   strMoveFrom = objFileSys.BuildPath(Fn, "")
   strMoveTo = objFileSys.BuildPath(strScriptPath2, "")  
   objFileSys.MoveFile strMoveFrom, strMoveTo  
   Next
   MsgBox "ファイルをテストフォルダからバックアップフォルダに移動しました。"  
   Set objFileSys = Nothing
End Sub
・ツリー全体表示

【76494】Re:表示形式
発言  [名前なし]  - 14/12/16(火) 13:00 -

引用なし
パスワード
   お返事ありがとうございます。

エクセルの表記からいらない部分を取り除く
     ↓
いる部分は表記のまま。.valueじゃなく見た目のまま
     ↓
    textタブ区切り
     ↓
    印刷

以上の工程が発生するためです。

selection部分を見た目のまま新規シートにコピーできたらbestです。

* uteigi.Value = Format(uteigi.Value,"#,###")
  参考にさせて頂きます。

 ややこしくて申し訳ありません。


▼γ さん:
>> 14,200にはできないのでしょうか?
>そういう文字列にしたいということですか?
>それはなぜですか?
>実体としては数値で、その表示形式を工夫するという現状では
>どんなまずい点がありますか?
>
>uteigi.Value = uteigi.Text
>とした段階で、Excelが気を利かせて数値と認識してしまうのですが、
>どうしてもということなら書式を文字列にしたうえで(マクロ記録で得られます)
>uteigi.Value = Format(uteigi.Value,"#,###")
>などとしてはどうですか?
・ツリー全体表示

【76493】Re:表示形式
発言  γ  - 14/12/16(火) 7:41 -

引用なし
パスワード
   > 14,200にはできないのでしょうか?
そういう文字列にしたいということですか?
それはなぜですか?
実体としては数値で、その表示形式を工夫するという現状では
どんなまずい点がありますか?

uteigi.Value = uteigi.Text
とした段階で、Excelが気を利かせて数値と認識してしまうのですが、
どうしてもということなら書式を文字列にしたうえで(マクロ記録で得られます)
uteigi.Value = Format(uteigi.Value,"#,###")
などとしてはどうですか?
・ツリー全体表示

【76492】Re:表示形式
発言  わからない  - 14/12/15(月) 21:17 -

引用なし
パスワード
   buf2 = uteigi.NumberFormatLocal
確かにこちらの方がスマートですね。

作業をしててもうひとつ不明点が。


Sub uteigiche()
Dim uteigi
Dim buf As String
Dim ms As Boolean

For Each uteigi In Selection
  buf = uteigi.NumberFormatLocal

    Debug.Print uteigi, uteigi.Text
    uteigi.Value = uteigi.Text
    ms = True
  'End If
    
Next uteigi

If ms Then MsgBox "表示形式に注意して下さい。", vbCritical

End Sub


uteigi.Text → 14,200 (通貨、会計で,を表記してます。)
uteigi →  14200

uteigi.Value = uteigi.Text

シート上で表示もvalueも 14200 です。

14,200にはできないのでしょうか?

▼γ さん:
>>>buf2 = Cells(uteigi.Row , uteigi.Column).NumberFormatLocal
>
>buf2 = uteigi.NumberFormatLocal
>のほうがより自然ですね。
>.Textのほうはそうされているのに・・・。
>
># ところで、
># Cells("2,1") は Cells(21)のように解釈されるみたいですね。
># こちらもすぐには想定できなかった。
・ツリー全体表示

【76491】Re:表示形式
発言  γ  - 14/12/15(月) 21:04 -

引用なし
パスワード
   >>buf2 = Cells(uteigi.Row , uteigi.Column).NumberFormatLocal

buf2 = uteigi.NumberFormatLocal
のほうがより自然ですね。
.Textのほうはそうされているのに・・・。

# ところで、
# Cells("2,1") は Cells(21)のように解釈されるみたいですね。
# こちらもすぐには想定できなかった。
・ツリー全体表示

【76490】Re:表示形式
お礼  わからない  - 14/12/15(月) 14:48 -

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

うまく表示できるようになりました。

▼くにぞう さん:
>>何がわるいのでしょうか?
>
>↓この行が悪いでしょう。
>>  buf2 = Cells(uteigi.Row & "," & uteigi.Column).NumberFormatLocal
>
>↓これでどうでしょうか?
>buf2 = Cells(uteigi.Row , uteigi.Column).NumberFormatLocal
・ツリー全体表示

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