Excel VBA質問箱 IV

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

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


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

【79243】Re:コマンドボタンのプロシージャを見や...
質問  miro  - 17/6/18(日) 20:19 -

引用なし
パスワード
   '追加ボタンの処理
Private Sub CommandButton1_Click()
  Dim 背景色 As Long, i As Integer     '背景色
  Dim 追加カウンタ As Range      'Count用の変数設定、9行づつ
  Dim 削除カウンタ As Integer '         '追加SUMの13文字削除用のカウンタ、13づつマイナス
  Dim 基点 As Integer           '基点セル定数設定
  Dim 人数 As Range
    
    
    '人数
''    人数 = Cells(20, 6)
    Set 人数 = ThisWorkbook.Worksheets("data").Cells(1, 2)
    人数 = 人数 + 1
    
    
    '追加ボタン用、行ずらしカウンター(9行づつ)
    Set 追加カウンタ = ThisWorkbook.Worksheets("data").Cells(2, 2)
    追加カウンタ = 人数 * 9
    
    
    '削除ボタン用,文字数削除カウンター(13文字づつ)
     削除カウンタ = Cells(18, 7)
     削除カウンタ = 人数 * 13
     Cells(18, 7) = 削除カウンタ

     基点 = 追加カウンタ - 5
    
    If 人数 = 1 Then 'qの値が-13なら以下の処理
          
    Else '基点からの通常処理
       '総計名称移動
       Range(Cells(基点, 3), Cells(基点 + 4, 3)).Cut Cells(基点 + 9, 3)
       '給料項目取得
       Range(Cells(基点 - 9, 3), Cells(基点 - 1, 3)).Copy Cells(基点, 3)
      
       '総計式に追加するSUM関数を文字列に変換するための変数宣言
       Dim 追加基本給 As String, 追加税金 As String, 追加諸手 As String
       Dim 基本給範囲 As String, 税金範囲 As String, 諸手範囲 As String '(D?:D?)
       Dim SUM関数 As String                      'SUM()
      
       Cells(基点, 4).Select
       '範囲選択したセルから座標データ取得
       Selection.Resize(3, 1).Select
         基本給範囲 = Selection.Address(False, False)
       Selection.Resize(4, 1).Offset(3).Select
         税金範囲 = Selection.Address(False, False)
       Selection.Resize(2, 1).Offset(4).Select
         諸手範囲 = Selection.Address(False, False)
             
       SUM関数 = "+SUM()"
            
       '取得した座標データを文字列のフォーマットに加工
       追加基本給 = strInsert(SUM関数, 5, 基本給範囲)
         Cells(12, 7) = 追加基本給
       追加税金 = strInsert(SUM関数, 5, 税金範囲)
         Cells(12, 9) = 追加税金
       追加諸手 = strInsert(SUM関数, 5, 諸手範囲)
         Cells(12, 11) = 追加諸手
      
      '--総計式移動--
      
       '基本給計の一人分の数式追加
       Cells(基点 + 10, 4) = Cells(基点 + 1, 4).Formula + 追加基本給
      
       '税金・社会保障計一人分の数式追加
       Cells(基点 + 11, 4) = Cells(基点 + 2, 4).Formula + 追加税金
      
       '諸手当計一人分の数式追加
       Cells(基点 + 12, 4) = Cells(基点 + 3, 4).Formula + 追加諸手
      
       '支給総計、数式設定一人分の数式追加
       Cells(基点 + 13, 4) = "=" & Cells(基点 + 10, 4).Address(False, False) _
                 & "-" & Cells(基点 + 11, 4).Address(False, False) _
                 & "+" & Cells(基点 + 12, 4).Address(False, False)
     End If
    
    '罫線作成
    Cells(基点, 2).Select ' 枠位置
    ActiveCell.Resize(9, 3).BorderAround Weight:=xlThin

    
    'ずらした時に残った総計の値をクリア
    Range(Cells(基点 + 1, 4), Cells(基点 + 4, 4)).ClearContents '総計クリア
      
    Range(Cells(基点, 2), Cells(基点 + 8, 2)).Merge       '名前のセル結合
    背景色 = Range("B4").Interior.Color                     '背景色数値取得
    Cells(基点, 2).Interior.Color = 背景色                 '色数値を対象セルにリリース
    Cells(基点, 2) = "さん"                      '名前設定
    Cells(基点, 2).HorizontalAlignment = xlCenter           '顧客名セル中央配置
    Cells(基点, 2).Font.Bold = True                  '顧客名文字太字
    Range("D:D").NumberFormatLocal = "\#,##0;\-#,##0"            '\設定
    
End Sub
この処理をいくつかに区切ったプロシージャで表示したいのです。
・ツリー全体表示

【79242】Re:コマンドボタンのプロシージャを見や...
発言  マナ  - 17/6/18(日) 20:10 -

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

>コマンドボタン1のプロシの記述が長くなってしまったのですが、

それをここに貼り付けていただけますか。
そのほうが回答がつきやすいと思います。
・ツリー全体表示

【79241】コマンドボタンのプロシージャを見やすい...
質問  miro  - 17/6/18(日) 19:58 -

引用なし
パスワード
   コマンドボタン1のプロシの記述が長くなってしまったのですが、それをいくつかに分けて一つのモジュール内でで表示したいです。
同じPrivate Sub CommandButton1_Click() だとエラーが出ますので、適当な方法があれば教えていただきたいです。
・ツリー全体表示

【79240】Re:複数のファイルに存在する表を抜き出...
発言  マナ  - 17/6/18(日) 18:21 -

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

CurrentRegionが使えるならば
データ範囲をこんな感じでコピーできるかもしれません。

Sub test()
  Dim ws As Worksheet
  Dim r As Range
  Dim myStr As String
  
  myStr = "目印"
  
  Set ws = ActiveSheet
  Set r = ws.Cells.Find(What:=myStr, LookIn:=xlValues, LookAt:=xlWhole)
  
  Set r = r.CurrentRegion
  Set r = Intersect(r, r.Offset(2))

  r.Copy
  
  Worksheets.Add
  Range("A3").PasteSpecial xlPasteValues
  
End Sub
・ツリー全体表示

【79239】Re:複数のファイルに存在する表を抜き出...
回答  inoue  - 17/6/18(日) 17:20 -

引用なし
パスワード
   ▼カリーニン さん:
>よくみたら、ご自身が書いたコードの中にブックを開く記述がありましたね。

ご返信いただきありがとうございます。

記載させていただいたコードはほぼネット検索で出てきた
そのままを使用しています。

そのため、ここの部分がこんなことを表しているんだろうな
程度はわかるのですが、このコードに新しいコードを入れたりする
ことが知識に乏しくできません。。
・ツリー全体表示

【79238】Re:複数のファイルに存在する表を抜き出...
回答  inoue  - 17/6/18(日) 17:16 -

引用なし
パスワード
   ▼マナ さん:
>▼inoue さん:
>
>今のコードを修正していけばできると思います。
>課題は、
>
>1)表の場所が、決まっていない
>2)シート名が決まっていない(まとめ、まとめ1 など)
>
>の2点ですね。
>まずは、1)から。
>
>・表の横サイズ(列数)は固定ですか
>・表に必ずあって、他にはない単語はありますか。
>
>例えば、電圧というセルは、シート内に1箇所ですか
>もし、そうなら、電圧を検索して、見つかったセルから
>転記するセル範囲を決めることができませんか。

ご返信ありがとうございます。

1)
・表の横サイズは固定です。

・表に必ずあってほかにない単語はあります。
→表の左上に必ず同じ表題が1か所ついています。

また、目印となりそうな心当たりとして挙げた「電圧」は
表以外にも存在しますが、目的の表の「電圧」はセルの左上から
数えて一番初め(VLoolupだと最初に検索に引っかかる場所)にあります。

>もし、そうなら、電圧を検索して、見つかったセルから
>転記するセル範囲を決めることができませんか。
という部分についてですが、そのような発想でvbaを書きたいのですが
知識が乏しくvlookupのようなことをする機能を自分でvbaに書くことが
できません。

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

【79237】Re:複数のファイルに存在する表を抜き出...
発言  カリーニン  - 17/6/18(日) 15:25 -

引用なし
パスワード
   よくみたら、ご自身が書いたコードの中にブックを開く記述がありましたね。
・ツリー全体表示

【79236】Re:複数のファイルに存在する表を抜き出...
発言  マナ  - 17/6/18(日) 15:19 -

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

今のコードを修正していけばできると思います。
課題は、

1)表の場所が、決まっていない
2)シート名が決まっていない(まとめ、まとめ1 など)

の2点ですね。
まずは、1)から。

・表の横サイズ(列数)は固定ですか
・表に必ずあって、他にはない単語はありますか。

例えば、電圧というセルは、シート内に1箇所ですか
もし、そうなら、電圧を検索して、見つかったセルから
転記するセル範囲を決めることができませんか。
・ツリー全体表示

【79235】Re:複数のファイルに存在する表を抜き出...
発言  カリーニン  - 17/6/18(日) 14:45 -

引用なし
パスワード
   横から失礼します。

>vbaには自動でファイルを開いて自動で閉じてくれる
>命令文もあるようですがそれでも不可能でしょうか。

これはマクロの自動記録で参考コードが得られますし、ネットの検索で
いくらでも参考コードが得られると思います。
・ツリー全体表示

【79234】Re:複数のファイルに存在する表を抜き出...
回答  inoue  - 17/6/18(日) 14:30 -

引用なし
パスワード
   ▼γ さん:
>ファイルを開かずには無理です。
>それにこだわるなら、達成できません。
>普通の手法でトライして下さい。


ご返信ありがとうございます。

言葉の使い方が悪く申し訳ありませんが、
手動でファイルを開かずに、ということでした。
vbaには自動でファイルを開いて自動で閉じてくれる
命令文もあるようですがそれでも不可能でしょうか。

しつこいようですが、何卒よろしくお願いいたします。
・ツリー全体表示

【79233】Re:複数のファイルに存在する表を抜き出...
回答  inoue  - 17/6/18(日) 14:23 -

引用なし
パスワード
   ▼マナ さん:
>▼inoue さん:
>
>>vbaの応用例を調べて、同一フォルダ内に存在するすべてのファイルから指定した
>>セル(A1等)の値を一覧にするvbaは作成できたのですが、
>
>どいうものを作成したか教えてください。
>それを改良できるかもしれません。

ご返信ありがとうございます。
下記に記載します。

Sub getA_F()

Application.ScreenUpdating = False

Const myPath As String = "C:Users\ユーザ名\Desktop\フォルダ名\"
Dim rIdx As Long
Dim fName As Strimg
fName = Dir (myPath & "*.xls")
Do Until fName = ""
Workbooks.Open Filename:=myPath & fName
rIdx = rIdx + 1

Cells(rIdx, 1).Value = fName
Me.Cells(rIdx, 2).Value = ActiveSheet.Range("A1").Value
Me.Cells(rIdx, 3).Value = ActiveSheet.Range("B1").Value
Me.Cells(rIdx, 4).Value = ActiveSheet.Range("C1").Value
Me.Cells(rIdx, 5).Value = ActiveSheet.Range("D1").Value
Me.Cells(rIdx, 6).Value = ActiveSheet.Range("E1").Value
Me.Cells(rIdx, 7).Value = ActiveSheet.Range("F1").Value

Windows(fName).Close
fName = Dir
Loop

Applicaion.ScreenUpdating = True

End Sub

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

【79232】Re:複数のファイルに存在する表を抜き出...
発言  γ  - 17/6/18(日) 14:11 -

引用なし
パスワード
   ファイルを開かずには無理です。
それにこだわるなら、達成できません。
普通の手法でトライして下さい。
・ツリー全体表示

【79231】Re:複数のファイルに存在する表を抜き出...
発言  マナ  - 17/6/18(日) 8:07 -

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

>vbaの応用例を調べて、同一フォルダ内に存在するすべてのファイルから指定した
>セル(A1等)の値を一覧にするvbaは作成できたのですが、

どいうものを作成したか教えてください。
それを改良できるかもしれません。
・ツリー全体表示

【79230】複数のファイルに存在する表を抜き出して...
質問  inoue  - 17/6/18(日) 2:08 -

引用なし
パスワード
   こんばんは。
お世話になります。inoueと申します。

当方初心者でありまして、標記のようなことをしたく、
助力いただけないかと投稿させていただきました。

早速ではありますが、簡単に図で説明させていただきます。

現状−−−−−−−−−−−−−−−−−−

ファイル1
  電圧 電流 ・・・・・・ 
a  1  2
b  3  4
c  5  6

ファイル2
  電圧 電流 ・・・・・・
d  7  8
e  9  10
f  11 12

ファイル3
ファイル4
ファイル5




−−−−−−−−−−−−−−−−−

現在、上図のような表を含むファイルが500個ほどあります。
すべてのファイルのすべての表を一つのファイルの一つの表に
まとめたいと考えています。

ひとつひとつのファイルを開いてコピー&ペーストではあまりに
時間がかかりますので、vbaにてファイルを開かずに特定のセル値を
抜き出してくることはできないかと考えています。

やりたい−−−−−−−−−−−−−

ファイルx(ファイル1からすべてのファイルの情報を集約したファイル)
 電圧 電流 ・・・・・・
a 1  2
b 3  4
c 5  6
d 7  8
e 9  10
f 11 12




ーーーーーーーーーーーーーーーーーーー

vbaの応用例を調べて、同一フォルダ内に存在するすべてのファイルから指定した
セル(A1等)の値を一覧にするvbaは作成できたのですが、
厄介なことにデータの元であるファイル1とファイル2とでは表はまったく異なる
セル番号の場所に作られており、vbaの中であらかじめセル番号を指定するといった
方法では望みの抜き出し方をすることができませんでした。

恐らく、表の各見出し(電圧 等)をvba中で指定してその見出しを検索し、
その見出しの列を抜き出してくるといった方法でうまくいくのかと思うのですが、
具体的にどのようなvbaを組んだらいいのかわかりません。

当方初心者でありまして、各命令文が何を意味しているのか理解が乏しいです。
大変恐縮ですが、上記のような図の抜き出し方が叶うvbaの作成例がございましたら
貼り付けてくださると幸いです。

下記にデータ元である手持ちファイルについて補足させていただきます。
1.それぞれのファイル名には規則性はないため、複数のファイルを指定するためには
同一フォルダ内のファイル、という指定が良いと考えています。
2.各ファイルのシート名も多少ばらつきがあります(まとめ、まとめ1 など)
そのファイルを最後に開いたシートから読みだしてくるような指定の仕方をするのが
よいかと思っています。

不躾な質問ながら、ご回答いただけますと幸いです。
何卒よろしくお願い申し上げます。
・ツリー全体表示

【79229】Re:OLEObject
発言  マナ  - 17/6/17(土) 21:08 -

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

> "CMB" & i

CMB列が存在するので、別の名前にできませんか。
・ツリー全体表示

【79228】Re:dドライブを常にアクティブにするには
お礼  Pomerol E-MAIL  - 17/6/17(土) 5:09 -

引用なし
パスワード
   ▼カエムワセト さん:
>こういう記事がありました。参考まで。
>
>ht tp://michisugara.jp/archives/2013/windows8.1_hdd.html
お返事遅れてすみませんでした。
なかなか、直らないんですね。
でも、丁寧なご返事、たいへんありがとうございました。
・ツリー全体表示

【79227】Re:既に開いているIEの画面から、エクセ...
発言  カリーニン  - 17/6/16(金) 21:13 -

引用なし
パスワード
   あとはAPIを使った方法か、IEウィンドウに対してSendKeysでF8を送るか、ですかね。

あとはAPIを使った方法に関してはネット上にサンプルがあると思いますし、私自身は
IEに対しては行ったことがありません。

また、SendKeysは不安定ですし、また取引先のシステムということですので、VBAから
操作した結果に対しては当方は当然責任は負えません。

先ほどの「三流君VBAでIE操作 InternetExplorer.Applicationを操作する」をリンク先
を含め隅から隅まで熟読すると手がかりがあるかもしれません。
・ツリー全体表示

【79226】Re:既に開いているIEの画面から、エクセ...
質問  keen  - 17/6/16(金) 20:50 -

引用なし
パスワード
   ▼カリーニン さん:
>あと、「IEで開くデータベースページ」が社内システムでしたら、本件は
>ここのようはQ&Aサイトではなく、社内のシステム管理者に相談すべき事柄
>です。

ありがとうございます。

F8を押すことでURLは変わるのですが、規則性のないアルファベットの羅列であり、URL指定はできないと思います。

なお、このシステムは 社内システムではなく、客先のシステムであり 当方からの質問も受け付けてくれるシステム管理者がいない状況です。

ありがとうございます。
・ツリー全体表示

【79225】Re:既に開いているIEの画面から、エクセ...
発言  カリーニン  - 17/6/16(金) 20:43 -

引用なし
パスワード
   あと、「IEで開くデータベースページ」が社内システムでしたら、本件は
ここのようはQ&Aサイトではなく、社内のシステム管理者に相談すべき事柄
です。
・ツリー全体表示

【79224】Re:既に開いているIEの画面から、エクセ...
発言  カリーニン  - 17/6/16(金) 20:39 -

引用なし
パスワード
   >IEで開くデータベースページが、F8を押下することで、次のページに行くことになっています。


手動でページを切替えたとき、URLが変わるようでしたら、VBAでURLを指定してやることでIEの
ページを切替えることができます。
javascriptで制御してるようでしたら私はわかりません。
・ツリー全体表示

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