Excel VBA質問箱 IV

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

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


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

【76917】Re:マクロを教えてください
発言  カエムワセト  - 15/4/13(月) 13:09 -

引用なし
パスワード
   なぜ↓で続けないで新規にスレッドを立ち上げるのでしょう?

新規に立ち上げるのなら、↓は締めましょうね。

ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=76901;id=excel
・ツリー全体表示

【76916】マクロを教えてください
質問  たか E-MAIL  - 15/4/13(月) 10:45 -

引用なし
パスワード
   目的
文字化けするデータ(システムからダウンロードしたエクセル(CSV)
を文字化けしないようにマクロを組みたい。

データの取り込み方法

エクセルのデータタブ
テキストファイル→ダウンロードしたいフォルダ→ファイル名
→元のデータの形式 カンマや〜を選択→カンマにチェック→
全部の列を文字列に形式変更→A1にデータを返す

この流れをどのPCでもマクロが作動するようにしたい。


With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;C:\Users\社員コード\Desktop\チャンプダウンロード\NEW.CSV", Destination:=Range("$A$2") _
    )
    .Name = "NEW"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 65001
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 _
    , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
  End With
  ActiveWindow.Zoom = 80
  ActiveWindow.SmallScroll Down:=-9
  Range("A1").Select
End Sub
・ツリー全体表示

【76915】Re:PDFのプロパティの取得の仕方
発言  マナ  - 15/4/11(土) 20:39 -

引用なし
パスワード
   もっと削除してもよかった?

Sub test3()
  Dim filePath As String

  filePath = "C:\Users\hage\Desktop\test.pdf"

  Dim pdDoc As Object
  
  Set pdDoc = CreateObject("AcroExch.PDDoc")

  pdDoc.Open (filePath)

  Dim strTitle As String
  strTitle = pdDoc.GetInfo("Title")

  MsgBox (strTitle)

  pdDoc.Close

  Set pdDoc = Nothing

End Sub


逆に、元のコード(test)を最小限の修正ですませる場合は、
下記1行を

strTitle = pdDoc.GetInfo("Title")

strTitle = avDoc.getpdDoc().GetInfo("Title")
・ツリー全体表示

【76914】Re:PDFのプロパティの取得の仕方
発言  マナ  - 15/4/11(土) 16:12 -

引用なし
パスワード
   参考サイト
ht tp://pdf-file.nnn2.com/

★の部分を修正してみました

Sub test2()
  Dim ret As Boolean
  Dim filePath As String

  filePath = "C:\Users\hage\Desktop\test.pdf"

  Dim acroApp As Object
  Dim pdDoc As Object
'  Dim avDoc As Object  '★

  Set acroApp = CreateObject("AcroExch.APP")
  Set pdDoc = CreateObject("AcroExch.PDDoc")
'  Set avDoc = CreateObject("AcroExch.AVDoc")  '★

  ret = pdDoc.Open(filePath)  '★

  Dim strTitle As String
  strTitle = pdDoc.GetInfo("Title")

  MsgBox (strTitle)

  pdDoc.Close  '★
  acroApp.Exit

'  Set avDoc = Nothing  '★
  Set pdDoc = Nothing
  Set acroApp = Nothing

End Sub
・ツリー全体表示

【76913】PDFのプロパティの取得の仕方
質問  K  - 15/4/11(土) 0:57 -

引用なし
パスワード
   すみません、行き詰まったのでお願いします。

やりたいことは、ExcelにPDFファイル名の一覧が数百行ありまして、
それぞれのPDFに入力されているプロパティの
タイトル(Title)を取得したいのです。

環境はWindows7、Excel2010、Acrobat XIで、Readerではなく
製品版のAcrobatがインストールされています。

いろいろなサイトでそれっぽいコードがあるのですが、
どれもエラーで動かず、一応自分でエラーが出ないところまではいきました。
しかし肝心のタイトルが取得できません。

解決方法をご存知の方がいれば教えてください。

Sub test()
  Dim ret As Boolean
  Dim filePath As String

  filePath = "C:\Users\hage\Desktop\test.pdf"

  Dim acroApp As Object
  Dim pdDoc As Object
  Dim avDoc As Object

  Set acroApp = CreateObject("AcroExch.APP")
  Set pdDoc = CreateObject("AcroExch.PDDoc")
  Set avDoc = CreateObject("AcroExch.AVDoc")

  ret = avDoc.Open(filePath, "")

  Dim strTitle As String
  strTitle = pdDoc.GetInfo("Title")

  MsgBox (strTitle)

  ret = avDoc.Close(False)
  acroApp.Exit

  Set avDoc = Nothing
  Set pdDoc = Nothing
  Set acroApp = Nothing

End Sub

作業場が会社でデータを持ってこれないので打ち直しました。
細かい入力ミスは無視してください。

上はテストでMsgBoxにしていますが、最終的には一覧から
ファイル一覧を取得して、隣のセルにタイトルを入力していく感じです。
・ツリー全体表示

【76912】Re:日時の集計
発言    - 15/4/10(金) 20:34 -

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

ピボットテーブルはいかがですか。
下準備として、最初に一回 手作業でピボットテーブルを作成しておいて、
マクロでは、データを差し替えてピボットテーブルの更新ボタンを押し、
日数計算用の数式を入力します。
・ツリー全体表示

【76911】Re:日時の集計
発言  β  - 15/4/10(金) 13:47 -

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

出先のPC(WIn7+xl2010 スペックは中ぐらい)で、10万行のテストデータを作成し
アップしたコードで実行しますと、2.8〜2.9秒でした。
10万件なので、まぁ、これぐらいなら許してもらえませんかね?
・ツリー全体表示

【76910】Re:日時の集計
発言  β  - 15/4/10(金) 13:37 -

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

↑ と、大見得をきりましたが、実際にどれぐらいかかるか?
以下でお試しください。
H列に所要時間を記載、データ最終行の下のH列に合計と平均を記載します。

Sub Test()
  Dim w As Variant
  Dim c As Range
  Dim st As Double
  Dim ed As Double
  Dim tot As Double
  Dim cnt As Long
  
  With Range("A1", Range("A" & Rows.Count).End(xlUp)).Resize(, 7)
    ReDim w(1 To .Rows.Count, 1 To 1)
    w(1, 1) = "所要時間"
    For Each c In .Columns(1).Offset(1).Resize(.Rows.Count + 1).Cells
      If c.Row > 2 Then
        If c.Value <> c.Offset(-1).Value Then
          w(c.Row - 1, 1) = ed - st
          tot = tot + ed - st
          cnt = cnt + 1
        End If
      End If
      If c.Row > .Rows.Count Then Exit For
      st = c.Offset(, 4).Value2
      ed = c.Offset(, 4).Value2
      If Not IsEmpty(c.Offset(, 6)) Then ed = c.Offset(, 6).Value2
    Next
    .Columns(8).Value = w
    .Range("G" & .Rows.Count).Offset(1).Value = "合計"
    .Range("H" & .Rows.Count).Offset(1).Value = tot
    .Range("G" & .Rows.Count).Offset(2).Value = "平均"
    .Range("H" & .Rows.Count).Offset(2).Value = tot / cnt
  End With
End Sub
・ツリー全体表示

【76909】Re:日時の集計
発言  β  - 15/4/10(金) 13:16 -

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

1.はループなしで、各行に、一度のセットで数式を埋め込むことができます。
2.はループ処理必須だと思いますが、結果を毎回セルに書き出さず、配列やDictionaryといったものに
格納しておき、最後に一度、どさっと転記すれば、10万行程度ならそんなに時間はかからないと思いますが?
・ツリー全体表示

【76908】Re:日時の集計
発言  chou  - 15/4/10(金) 11:03 -

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

やはりループ処理しかないですよね。。

件数(行数)が10000行位あるので、ループも悩んでいたところでした。

ループさせる以外で方法のアイデアがある方いらっしゃいましたら、

ぜひ、ご教示ください。

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

【76907】Re:トリガの時間を抜き出すプログラム
発言  β  - 15/4/9(木) 18:13 -

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

「信号」というのがよくわからないのですが、
実際のデータのサンプルと、具体的にどうしたいか
その結果もサンプルとしてアップされてはいかがでしょう。
・ツリー全体表示

【76906】Re:日時の集計
発言  β  - 15/4/9(木) 18:10 -

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

こんにちは

1.は簡単ですよね。数式でもいけると思います。
日時(1)-日時(2) で、その間の時間がシリアル値で取得できます。
(シリアル値:整数部分に日数、小数点以下で、24時間中のどれだけかをあらわした数値)
必要なら、そのシリアル値から Day関数、Hour関数、Minute関数、Second関数で、その値を取り出すこともできます。
合計は簡単ですよね。平均はAverage関数あたりが使えると思います。

2.は、ループ処理が必要になりますね。いろんな処理方法が考えられますが、たとえば

・2行目からデータ最終行の次の行までループで繰り返し処理
  ・2行目なら開始時間と終了時間をそれぞれの変数に格納
  ・3行目以降なら、
     ・番号が1つ上のセルと同じなら、終了時間を置換
     ・番号が異なれば、すでに格納してある開始時間と終了時間から、1.で説明した関数などでその間の時間を取得し、1つ上の行の答えとし
      さらに、この行の開始時間と終了時間で変数置換

・ループが終了すれば、あとは 合計、平均は 1.と同じ要領で。
・ツリー全体表示

【76905】トリガの時間を抜き出すプログラム
質問  tsuru  - 15/4/9(木) 17:35 -

引用なし
パスワード
   A列に時間、B列に信号が並んだデータがあります。信号は一定値から時々負のピークが生じているものです。
vbaを使って別の列に、信号がある値(しきい値)を下回った時の時間を抜き出して並べたいのですが、どのようなものが考えられるでしょうか。閾値を下回るすべての値ではなく、しきい値を下回った次のセルでのみ抜き出す必要があります。

どなたかよろしくお願いします。
他に必要な情報があれば追記します。
・ツリー全体表示

【76904】日時の集計
質問  chou  - 15/4/9(木) 16:27 -

引用なし
パスワード
   下記のデータの経過時間の集計について質問です。
開始、更新、終了は、YYYY/MM/DD hh:mm:ssが入っています。
集計は何日何時間何分何秒で結果を出したいです。

  A   B    C   D   E    F      G
1 番号  カテ1 カテ2 状況    開始   更新    終了
2 A12345 あ   1     新規    2015/1/1 2015/1/1
3 A12345 あ   1   継続    2015/1/2 2015/1/2 2015/1/3
4 B12345 あ   1   新規    2015/1/4 2015/1/4
5 C12345 あ   2   新規    2015/1/4 2015/1/5
6 D12345 あ   2   新規    2015/1/7 2015/1/8
7 D12345 あ   2   継続    2015/1/8 2015/1/9
8 D12345 い   1   継続    2015/1/9 2015/1/9
9 D12345 い   1   継続    2015/1/12 2015/1/12 2015/1/14

1.各行の経過時間を算出
 1行目であれば、
 開始時間から更新時間、更新時間から終了時間までを出して、
 その合計と平均をだしたい。

2.開始時間から終了時間までの合計と平均。
 A列の番号が複数だった場合は、最初の開始と最後の行の終了時間をとって集計したい。
例えば、A12345の場合は、1行目の開始と2行目の終了、
D12345の場合は、6行目の開始から9行目の終了時間を取る。

その集計方法がわかれば、VBAはかけると思うので、方法だけでも教えていただきたいです。

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

【76903】Re:検索ワードを入力して検索する時に、...
お礼  さとちぃ  - 15/4/8(水) 11:23 -

引用なし
パスワード
   β様

さとちぃです。
大変遅くなりましたが、本件、無事解決いたしました。
お礼を申し上げておらず、大変失礼いたしました。
・ツリー全体表示

【76902】Re:マクロを教えてください
発言  カエムワセト  - 15/4/7(火) 23:04 -

引用なし
パスワード
   VBA質問箱基本ポリシー
ht tp://www.vbalab.net/bbspolicy.html

質問者の方へのお願い

何をやったか書いてください
おそらくあなたは、色々なことを試してできなかった末にここに質問を書くのでしょう。しかし回答者は、あなたが今まで何をやってきたか、何を知っていて何を知らないかわかりません。今まで試したこと、やろうと思ったけどやり方がわからなかったことなどをできるだけ詳しく書いてください。
・ツリー全体表示

【76901】マクロを教えてください
質問  たか E-MAIL  - 15/4/7(火) 22:41 -

引用なし
パスワード
   目的
文字化けするデータ(システムからダウンロードしたエクセル(CSV)
を文字化けしないようにマクロを組みたい。

データの取り込み方法

エクセルのデータタブ
テキストファイル→ダウンロードしたいフォルダ→ファイル名
→元のデータの形式 カンマや〜を選択→カンマにチェック→
全部の列を文字列に形式変更→A1にデータを返す

この流れをどのPCでもマクロが作動するようにしたい。
・ツリー全体表示

【76900】Re:VBAでピボットテーブルを自動化する方...
回答  a  - 15/4/6(月) 13:26 -

引用なし
パスワード
   ▼マナ さん:
>最終的にどうしたいかがよくわかりません。
>マクロ記録で無駄な操作まで記録されないように
>事前に操作を練習しておくとよいです。
>
>とりあえず、こちらで適当にマクロ記録とって
>それを編集してみました。
>
>Sub test()
>  Dim pt As PivotTable
>  Dim ws As Worksheet
>  
>  Set ws = ActiveWorkbook.Sheets("Book1")
>  
>  On Error Resume Next
>  ws.Range(ws.PivotTables(1).TableRange2.Address).Delete
>  On Error GoTo 0
>  
>  Set pt = ActiveWorkbook.PivotCaches.Create(xlDatabase, ws.Range("A1:E25")) _
>      .CreatePivotTable(ws.Range("W3"))
>
>  With pt
>  
>    With .PivotFields("都道府県")
>      .Orientation = xlRowField
>      .Position = 1
>    End With
>    With .PivotFields("性別")
>      .Orientation = xlColumnField
>      .Position = 1
>    End With
>    With .PivotFields("年齢")
>      .Orientation = xlColumnField
>      .Position = 2
>    End With
>    .AddDataField .PivotFields("氏名"), "データの個数 / 氏名", xlCount
>    
>  End With
>  
>End Sub

投稿者です。回答が遅れてすみません。
本当に有難うございます。このようにコードを短縮できるのですね。
とても分かりやすく、おかげさまでピポットテーブルを自動化することができました。
・ツリー全体表示

【76899】Re:Sort文について
発言  γ  - 15/4/5(日) 12:50 -

引用なし
パスワード
   ▼亜矢 さん:
>>とりあえず、MSの公式な説明ページです。
>>
>>h tps://msdn.microsoft.com/ja-jp/library/office/ff821877.aspx
>>
>>このページの左に、プロパティやメソッドと書かれているところをクリックしますと
>>様々なメンバーについての説明がでてきます。
>>さらに、左の個々のメンバーをクリックすると、その詳細説明がでてきます。
>ありがとうございました。内容を理解しました。

ちなみに、それはヘルプと同一内容です。
人徳のなせるわざか。一方は感謝され、一方は無視される。
・ツリー全体表示

【76898】Re:Sort文について
お礼  亜矢  - 15/4/5(日) 9:38 -

引用なし
パスワード
   ▼β さん:
>▼亜矢 さん:
>
>おはようございます
>
>とりあえず、MSの公式な説明ページです。
>
>h tps://msdn.microsoft.com/ja-jp/library/office/ff821877.aspx
>
>このページの左に、プロパティやメソッドと書かれているところをクリックしますと
>様々なメンバーについての説明がでてきます。
>さらに、左の個々のメンバーをクリックすると、その詳細説明がでてきます。
ありがとうございました。内容を理解しました。
・ツリー全体表示

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