Excel VBA質問箱 IV

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

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


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

【77600】Re:膨大な件数を区分けしたいです
質問  あぶ  - 15/11/3(火) 22:07 -

引用なし
パスワード
   不勉強ですみません。色々アドバイスありがとうございます。
さて、結果ですが、私が作ったものと同じ結果になってしまいました。
これであってるのか?と思いたくなるくらいです。
・ツリー全体表示

【77599】Re:膨大な件数を区分けしたいです
発言  β  - 15/11/3(火) 21:53 -

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

まず、エクセルでは、横方向に伸びるセル群、これを【行】と呼びます。
この行が縦に何行もあるわけですね。
で、縦方向に伸びるセル群を【列】と呼びます。
この列が横に何列もあって、A列、B列、C列 あるいは 1列目、2列目、3列目 と呼びます。

「13行目に」ではなく「13列目に」ですね。もっとわかりやすく、「M列に」と書いてもらったほうがいいでしょうね。

さて、そのM列の時間ですが、ここは文字列で記入されているのですか?
それとも、時間という数値(いわゆる日付型)ですか?

Dim StrTime As String を Dim StrTime As Date
If StrTime >= "00:01:00" Then を If StrTime >= TimeSerial(0,1,0) Then
にすると、どうなりますか。

それと、テーマとは離れますが、

Cells(VarGyou, 13) これは Cells(VarGyou, "M") と記述できますし、そのほうがわかりやすいかもしれません。

少なくとも、Cells(3, 47) これは、Cells(3, "AU") のほうがわかりやすいですし、
さらにいえば Range("AU3") が、そのものずばりで、コードを見た人が悩まなくても済むと思いますが。
・ツリー全体表示

【77598】膨大な件数を区分けしたいです
質問  あぶ  - 15/11/3(火) 21:26 -

引用なし
パスワード
   膨大な時間と数値の情報で、13行目に通話時間、14行目に通話結果(通話、不応答、話中)というデータがあります。
1分以上通話した数、1分以内の数を出したいので、下記のプログラムを作りましたが、期待する数値が出てきません。どこかおかしいかわかりません。
つたない説明で申し訳ないですが、教えてください。

Private Sub CommandButton3_Click()

Dim VarGyou As Variant
Dim StrTime As String
Dim VarCount_On As Variant
Dim VarCount_Off As Variant
VarCount_On = 0
VarCount_Off = 0
VarGyou = 1
  Do
    VarGyou = VarGyou + 1
    If Cells(VarGyou, 13) = "" Then
      Exit Do
    End If
    If Cells(VarGyou, 14) = 1 Then
      StrTime = Cells(VarGyou, 13)
       If StrTime >= "00:01:00" Then
        VarCount_On = VarCount_On + 1
      Else
        VarCount_Off = VarCount_Off + 1
      End If
    End If
  Loop
  Cells(3, 47) = VarCount_On
  Cells(4, 47) = VarCount_Off
End Sub
・ツリー全体表示

【77597】Re:IEの検索方法
お礼  Satsuki  - 15/10/31(土) 22:28 -

引用なし
パスワード
   ▼γ さん:
> レベルが低くて悪かったですね。
2つ前の投稿で「γさんのようなスキルの高い方々」と書いております。
どうぞ誤解なきようお願いいたします。

> スクリプトが動いて入力したものを検査しているのでしょうけど、
> 手入力と全く同じものをセットして、一定の時間待ちをすれば解決するかも
> しれないが、それこをそういうものは中身を見ないと確実なことは
> 言えないと思う。
アドバイスありがとうございます。もう一度確認してみます。

> 自分だけ情報を持っていて、他人になんらかのことを求めるのは
> やめたほうがいいと思う。
了解いたしました。今後気を付けます。
・ツリー全体表示

【77596】Re:負荷のなくシートないのデータを取得...
お礼  Show  - 15/10/31(土) 11:23 -

引用なし
パスワード
   ▼β さん:
お礼が遅くなって申し訳ありません。確かにうまく行きました。ありがとうございます。

フィルタの掛かっている状態を記憶するような周りくどいことせずにすみました。本当に助かりました。
・ツリー全体表示

【77595】Re:IEの検索方法
発言  γ  - 15/10/31(土) 7:10 -

引用なし
パスワード
   > 原因を推定せよという意味ではなく、レベルの高い方なら
> 質問の意味や状況を察して頂けるのではないかと思ったのです。
 レベルが低くて悪かったですね。

> サイトの検索窓に手動で検索語をコピペすると、検索ボタンを押さなくても、
> 自動で個別のページが開きますが、

 スクリプトが動いて入力したものを検査しているのでしょうけど、
 手入力と全く同じものをセットして、一定の時間待ちをすれば解決するかも
 しれないが、それこをそういうものは中身を見ないと確実なことは
 言えないと思う。

> こういう場所で質問するのが難しい内容もあるのですね。
 いや、サイトの作りに依存した話なんだから、
 普通にサイトを示して相談すればいいだけの話ですよ。
 ごく常識的なことだと思ったけどねえ。
 自分だけ情報を持っていて、他人になんらかのことを求めるのは
 やめたほうがいいと思う。
・ツリー全体表示

【77594】Re:特定ファイルのコピーについて
お礼  SHO  - 15/10/31(土) 0:15 -

引用なし
パスワード
   β様

レス遅くなり申し訳ありません

ご丁寧にソースまで書いていただきありがとうございました
LIKE演算子ばかりに捕らわれてしまい、このような書き方があるなんて想像しておりませんでした
とても参考になり助かりました
ありがとうございました
・ツリー全体表示

【77593】Re:IEの検索方法
お礼  Satsuki  - 15/10/31(土) 0:13 -

引用なし
パスワード
   ▼γ さん
ご返答ありがとうございます。

>参考
>ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=77587;id=excel
>のように書くとよい。
なるほど、そのような記載方法で投稿できるのですね。

>上手く動作しないときに、現物を示さずに推定せよ、とは酷な話。
原因を推定せよという意味ではなく、レベルの高い方なら
質問の意味や状況を察して頂けるのではないかと思ったのです。

>動作しない原因なんて、山ほどあるし、
>サイトの作り方はそれぞれなんですから。
質問の意図は、同じような事例に出くわしたことがある方がいらっしゃったら、
経験談として教えて頂けたらということでした。

しかしながら、γさんのご意見ごもっともです。
こういう場所で質問するのが難しい内容もあるのですね。
ご指摘ありがとうございました。
・ツリー全体表示

【77592】Re:IEの検索方法
発言  γ  - 15/10/30(金) 21:30 -

引用なし
パスワード
   参考
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=77587;id=excel
のように書くとよい。

上手く動作しないときに、現物を示さずに推定せよ、とは酷な話。
動作しない原因なんて、山ほどあるし、
サイトの作り方はそれぞれなんですから。私はこれで失礼します。
・ツリー全体表示

【77591】Re:IEの検索方法
質問  Satsuki  - 15/10/30(金) 20:53 -

引用なし
パスワード
   ▼γ さん:
ご感想ありがとうございます。

これは特定のサイトに関しての質問です。
ネットで調べていると見かける他の方々の質問方法と同じく、
いつもURLはダミーのものを使って質問していますが、
こちらのサイトでは、URLと判断されるような文字列が入っていると、
禁止文字というエラーが出て投稿できません。
よって、必要最小限のコードだけ記載し、
γさんのようなスキルの高い方々に察して頂くしかないと思い、
このような投稿の仕方になっております。申し訳ありません。

ですが、少し抽象的すぎるかと思い、捕捉致します。
サイトのsearchboxの部分のコードは、下記のようになっています。
<input type="text" name="keywords" id="searchbox" autocomplete="off" placeholder="検索語を入力"/>

ネットでautocompleteについて調べて見ましたが、
今回の件とは関係ないようでした。
・ツリー全体表示

【77590】Re:特定ファイルのコピーについて
発言  β  - 15/10/30(金) 17:52 -

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

FSOを使ったほうが、そちらのコードにあうのでしょうが、標準機能だけで。
フォルダは、実際のものにしておいてください。

Sub Test()
  Dim SFolder As String
  Dim DFolder As String
  Dim fName As String
  Dim z As String
  Dim ym1 As String
  Dim ym2 As String
  Dim ym As String
  Dim tmp1 As Variant
  Dim tmp2 As Variant
  
  Dim ok As Boolean
  
  z = Range("C8").Value
  ym1 = Format(DateSerial(Left(z, 4), Mid(z, 5), 1), "yyyymm")
  ym2 = Format(DateSerial(Left(z, 4), Mid(z, 5) + 1, 1), "yyyymm")
  
  SFolder = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\SFolder\"
  DFolder = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\DFolder\"
  
  fName = Dir(SFolder & "*.xml")
  
  Do While fName <> ""
    tmp1 = Split(fName, "_")
    tmp2 = Split(tmp1(UBound(tmp1)), ".")
    ok = False
    ym = tmp2(LBound(tmp2))
    Select Case Left(ym, 6)
      Case ym1
        If Right(ym, 2) <> "01" Then ok = True
      Case ym2
        If Right(ym, 2) = "01" Then ok = True
    End Select
    
    If ok Then
    
      On Error Resume Next
      Kill DFolder & fName
      On Error GoTo 0
      FileCopy SFolder & fName, DFolder & fName
    
    End If
      
    fName = Dir()
    
  Loop
  
End Sub
・ツリー全体表示

【77589】特定ファイルのコピーについて
質問  SHO  - 15/10/30(金) 15:47 -

引用なし
パスワード
   いつもこちらで勉強させていただいています
現在特定のファイルだけをコピーするマクロを作成しています

状況としましては
・SFolderのフォルダ内にAAAA_YYYYMMDD.xmlという形式でファイルが毎日分格納されている
・C8のセルにYYYYDDのフォーマットで月を指定する(例:201509)
・指定した月の1日以外と次の月の1日分のデータだけをDFolderにコピーしたい
 (9月分で指定すると20150902〜20151001分がコピーされてほしい)

Like演算子で9月分全部コピーするところまで出来たのですが、
当月の2日の除外と来月の1日の追加で躓いています。
無理やりManth+1 & 01 で20151001を作ってManth & 01で20150901を除外しようと思ったのですが
年が変わると使えなくなってしまうので困っています
知恵を貸していただけたら幸いです

作ったソースの一部です
不足あればご指摘ください
    
  Manth = cells(8,3)
  Set folderObj = fso.GetFolder(SFolder)
  For Each fileObj In folderObj.Files
    If fileObj.Name Like "*" & Manth & "*" Then
      fileObj.Copy DFolder
    End If
  Next

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

【77588】Re:IEの検索方法
発言  γ  - 15/10/29(木) 23:11 -

引用なし
パスワード
   回答じゃなくてすみません。感想です。

私には、「IEの検索方法」一般の話じゃなく、
特定の作り込みがされた特定のサイトの話のように思うんだけど、
スキルの高い人はお互いに通じるんでしょうか。すごいものですね。

# サイトは秘密のようなので、レベルの低い私には、
# 他人からその人が見た夢の話を聞かされているような感じですね。
# 本人は驚いたり、感動したりしたんだろうけど、
# 他人は、はあ、そうですか、というしかない・・・。
# だって、同時に夢を見ていたわけじゃないしねえ。
・ツリー全体表示

【77587】IEの検索方法
質問  Satsuki  - 15/10/29(木) 18:59 -

引用なし
パスワード
   こんにちは、Satsukiと申します。
いつもいろいろ教えて頂いてありがとうございます。

サイト上の検索ボックスに文字を入力して、検索結果を表示したく、
下記のように記述しました。

 objIE.document.getElementById("searchbox").Value = kensakugo
 objIE.document.getElementById("searchbutton").Click

サイトの検索窓に手動で検索語をコピペすると、検索ボタンを押さなくても、
自動で個別のページが開きますが、
上記の方法だと、検索結果の一覧(該当は1件のみ)の形式で表示され、
個別のページに移動するにはその一覧から選択しないといけません。
コードで個別のページを開くようにできるでしょうか?

ちなみにコピペではなく、手動で1文字ずつ入力したところ、最後の文字で完全一致したと同時に、(ボタンを押さなくても)個別のページに遷移します。

どなたかご教示のほどよろしくお願いいたします。
・ツリー全体表示

【77586】Re:外部データとピボットテーブルの同時...
お礼  ragiwo  - 15/10/29(木) 14:37 -

引用なし
パスワード
   >>ウッシ 様
ご回答ありがとうございます。

>SQLでの外部データの更新のプロパティでバックグラウンドで更新に
なっていませんか?

まさにこれが原因でした。

.BackgroundQuery = False

VBAの接続設定に↑を追加して無事解決できました。

ピボットの更新タイミングでデータベースが変わっていないのだろうな
という所まで想像は出来ていたのですが、VBAの書き方ばかり調べて、
基本的な設定の部分を見落としておりました。

2度の更新作業が一度になって非常に楽になりました。
ありがとうございました。
・ツリー全体表示

【77585】Re:外部データとピボットテーブルの同時...
回答  ウッシ  - 15/10/29(木) 8:40 -

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

同時は無理なのでは?

テーブルが更新されてからピボットも更新というのが順番かと思います。

SQLでの外部データの更新のプロパティでバックグラウンドで更新に
なっていませんか?

テーブルの更新が済んでから、ピボットテーブルを更新するといいのでは?
・ツリー全体表示

【77584】外部データとピボットテーブルの同時更新...
質問  ragiwo  - 15/10/27(火) 16:28 -

引用なし
パスワード
   はじめまして。ragiwoと申します。

VBAを利用した外部データとピボットテーブルの更新処理に付いて質問させてください。

SQLで取り出した外部データでテーブルを更新し、
そのテーブルを元にしたピボットテーブルも更新する一連の処理を作成しているのですが、
PivotCache.Refreshによるピボットテーブルの更新がうまくいきません。

分解して別々に実行したり、テーブルが更新された後に
ブレークポイントで一度停止を挟むときちんと更新されるのですが、
間を置かず一度に実行すると更新されません。

ネットで調べても調べ方が悪いのか似たような現象がヒットせず、
こちらに投稿させて頂きました。

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

【77583】Re:マッチしたら指定範囲を別シートへコ...
お礼  soul-taker  - 15/10/27(火) 14:53 -

引用なし
パスワード
   βさま

ご助言、どうもありがとうございました。

A列が「実は数値に見える文字列」だった事に考えが至りませんでした。

(これを数値化して試してみましたが、結果的には両方のシートとも文字列
であれば、問題ない事も確認できました。)

あれこれと原因を探りまして、結局、「r1」、「r2」に格納した範囲と

> r2.Item(m, 3).Resize(, 7).Copy c.Item(1, 3)

で指定したセル位置のところで勘違いがあり、投稿したサンプルでは上手く
回るものが、実際のシートでは上手くいかない原因でした。

(上記の「3」がシート全体に対する絶対的な列番号だと勘違いしていました。
 「r2」の範囲での「3列目」であることに気づくのに時間がかかりました。)

お忙しい中お時間を割いていただき、誠にありがとうございました。
また何かありましたら、よろしくお願い致します。
・ツリー全体表示

【77582】Re:マッチしたら指定範囲を別シートへコ...
発言  β  - 15/10/27(火) 8:52 -

引用なし
パスワード
   ▼soul-taker さん:

Value2を使っておられるということから推測して
両シートのA列は、「数値」で、表示書式で 0001 等になっているんだと思います。

で、両シートのA列を提示の状態にして、提示コードそのまま
(AやBは変数宣言した上で、実際のシート名をそこに代入して)
実行しましたが、マッチしたものは、ちゃんと転記されます。

考えられるとすれば A や B に、目的のシート名ではないものが入っていて、
処理が別シートに対してなされている。

あるいは、一方のシートの A列は【数値】としての 0001 だけど、一方のシートのA列は
文字列としての '0001 。

このいずれかだと思うのですが?

なお、不具合とは関係ありませんが、マッチしなかった場合、当該転記領域をクリアするように
しておかれたらよろしいかと思います。
・ツリー全体表示

【77581】Re:マッチしたら指定範囲を別シートへコ...
発言  soul-taker  - 15/10/27(火) 8:23 -

引用なし
パスワード
   βさま

リアクションありがとうございます。

そうですね、記述が足りませんでした。
申し訳ありません。

うまくいかなかった現象は、まさに

・マッチするはずなのに何も転記されなかった

…です。

マクロ自体は、どこにも引っかかりませんでしたが、何も
記載されませんでした。

> Worksheets(A) や Worksheets(B)
>
> この A や B は変数ですけど、どこかに定義されているのでしょうか?
>で、その変数内には、あらかじめ シート名が格納されているのでしょうか?

→シート名は変数で、あらかじめ別途に格納されています。

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

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