Excel VBA質問箱 IV

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

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


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

【79506】Re:excel2013にて発生するworkbooks.Ope...
発言  ペーターパン  - 17/11/21(火) 12:46 -

引用なし
パスワード
   ▼まっつわん さん:
>>path = path & "\" & fileA
>
>↑ファイルのフルパスですよね?
>拡張子までちゃんと書いて見てはいかがでしょう?
>違うかも知れないけど気になります。

fileaの中身は拡張子付きのフルパスで、拡張子付きで変数を格納しています。

あれからいろいろと検証してみました。
守秘義務があるので簡単ですが、以下のようにメッセージボックスに
取得したパスが出るようにしてみました。

path = ActiveWorkbook.Path
path = path & "\" & fileA
Workbooks.Open Filename:=path ←ここで止まる
msgbox path


【結果】
・パスが取得できていることをメッセージボックスで確認してからokボタン押すとうまく動きます。
・次はメッセージボックスが出る前からエンターキー押しっぱなし。
 止まります。
・命令で3秒待つようにするとうまく動きます(前回も実施済み)。

よって、以下の通り推測します。
あくまで素人の推測ですので、分かりにくい点があるかと思いますがご容赦下さい。

・パスの「アドレス」つまり文字列自体の取得は問題なく実行されている。
・パスの「アドレス」を利用して対象のファイルを開く場合、そのアドレスをPCおよびエクセルが認識して「処理」するまでにはタイムラグが生じている。
つまり、「アドレス」という文字列とそれを認識して「処理」する行為(エクセルを開くなど)にはタムラグがあるため、変数にパスが取得できているからといって即実行できるとは限らない。
・おそらくEXCEL2013からSDI形式に変更されたことが影響していると思っています。

いろいろとご助力頂きありがとうございました。
・ツリー全体表示

【79505】コンフィグからパラメータシート作成につ...
質問    - 17/11/20(月) 20:49 -

引用なし
パスワード
   config.txt

edit 1234
set uuid 1a1a23d4-e567-8f90-1a11-ab1acd23e456f
set srcintf "VLAN8001"
set srcintf "VLAN9001"
set srcaddr "192.168.0.2" "192.168.0.3" "192.168.1.2"
set dstaddr "172.16.0.1" "172.16.0.2"
set action accept
set status disable
set schedule "always"
set service "DNS" "HTTP"
set utm-status enable
set logtraffic all
set ips-sensor "AAA"
set profile-protocol-options "BBB"
set ssl-ssh-profile "CCC"
next
edit 5678
set uuid 2b2b45e5-f123-4aa12-2b22-bc2bde45f123a
set srcintf "any"
set srcintf "VLAN6001"
set srcaddr "192.168.1.4" "192.168.1.5"
set dstaddr "172.31.1.7" "172.31.1.8"
set action accept
set schedule "always"
set service "MAIL"
set utm-status enable
set logtraffic all
next


sheet2
  A  B                   C     D     E                     F               O
1 ID  uuid                 srcintf  srcintf  srcaddr                  dstaddr          ・・・ ssl-ssh-profile
2 1234 1a1a23d4-e567-8f90-1a11-ab1acd23e456f "VLAN8001" "VLAN9001" "192.168.0.2" "192.168.0.3" "192.168.1.2" "172.16.0.1" "172.16.0.2" ・・・ "CCC"
3 5678 2b2b45e5-f123-4a12-2b22-bc2bde45f123a "any"   "VLAN6001" "192.168.1.4" "192.168.1.5"        "172.31.1.7" "172.31.1.8" ・・・   

VBAがわからないため、得意な方にご教授頂ければありがたいです。

config.txtのedit〜nextまでを1固まりとして、大体500行くらいのconfigがあり、これをテキストでsheet1に
手動で貼り付けます。
このconfig.txtの中身を、sheet2にパラメータシートとして作成したいと思っています。

そのため、editを項目名でIDとしてA1に、uuidをB1に、srcintfをC1に、という形で、sheet2のようにedit1234の順に並べていき、
O1にssl-ssh-profileまで項目名として1行目に設定したあと、
中の値を2列目以降に書き出し、nextまで転記したら、次の行に移り転記を繰り返し、最後のnextまで行ったら終了する
というVBAマクロを用意したいと考えています。
edit5678のように1列目で定義したフィールドが無い場合にはスキップで構いません。

※sheet1はconfig、sheet2はparameterという名前にリネームしたいです。

お手数おかけしますが、宜しくお願い致します。
・ツリー全体表示

【79504】Re:excel2013にて発生するworkbooks.Ope...
回答  まっつわん  - 17/11/20(月) 16:56 -

引用なし
パスワード
   >path = path & "\" & fileA

↑ファイルのフルパスですよね?
拡張子までちゃんと書いて見てはいかがでしょう?
違うかも知れないけど気になります。
・ツリー全体表示

【79503】Re:excel2013にて発生するworkbooks.Ope...
発言  w1709  - 17/11/14(火) 18:33 -

引用なし
パスワード
   >変数名が「path」だと、予約語なのでエラーになる可能性はありましたが、

それ予約語でしょうか?

自分が思う予約語とは
例)
  Dim if as String

入力しただけで警告が出る(または色がつく)
実行すればコンパイルエラー(実行時エラーじゃなくて)
・ツリー全体表示

【79502】Re:【VBA】配列に収納されたRange型の中...
お礼  はみかん  - 17/11/9(木) 21:22 -

引用なし
パスワード
   さらに添え字を付ければよかったのですね
ありがとうございました!!
・ツリー全体表示

【79501】Re:【VBA】配列に収納されたRange型の中...
回答  γ  - 17/11/8(水) 21:10 -

引用なし
パスワード
   例えば、こんな書き方があります。

Sub test()
  Dim ary1, ary2
  Dim r1 As Range
  Dim r2 As Range
  Dim j As Long
  Dim k As Long
  
  ary1 = Array(Range("A1:B2"), Range("D1:F3"))
  ary2 = Array(Range("A11:B12"), Range("D11:F13"))
  
  For j = LBound(ary1) To UBound(ary1)
    Set r1 = ary1(j)
    Set r2 = ary2(j)
    For k = 1 To r1.Count
      If r1(k).Value = r2(k).Value Then
        r1(k).Interior.Color = vbRed
        r2(k).Interior.Color = vbRed
      End If
    Next
  Next
End Sub

追加要望にはお応えいたしません。
貴兄がトライしてください。
・ツリー全体表示

【79500】【VBA】配列に収納されたRange型の中身の...
質問  はみかん  - 17/11/8(水) 20:20 -

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

配列A{
複数のセル範囲(range型),
複数のセル範囲(range型),
複数のセル範囲(range型)}

配列B{
複数のセル範囲(range型),
複数のセル範囲(range型),
複数のセル範囲(range型)}

上のような配列があり、
「配列Aのp個目のセル範囲のn個目のセル」と「配列Bのp個目のセル範囲のn個目のセル」
同士を比較し、一致していればそのセルを赤く塗り潰したいです

ですが検索してもセル範囲から一部セルを抽出するような記述が見つからず、悩んでいます

記述法をご存知の方がいらっしゃいましたら、ご教示いただけますでしょうか

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

【79499】Re:excel2013にて発生するworkbooks.Ope...
質問  ペーターパン  - 17/11/8(水) 18:11 -

引用なし
パスワード
   ▼カリーニン さん:
>もしかしたら、外付けHD等ですか?

いえ、動作自体はCドライブで行っています。
ディレクトリもCドライブ直下など、なるべく深い場所は避けてテストしています。
私も最初は外付けのためパス取得が遅くなっているのだと思いました。
最初に列挙した通り、そういったたぐいの問題ではないです。

何度も相談に乗ってくださり大変恐縮です。
ありがとうございます。
・ツリー全体表示

【79498】Re:excel2013にて発生するworkbooks.Ope...
発言  カリーニン  - 17/11/8(水) 17:44 -

引用なし
パスワード
   もしかしたら、外付けHD等ですか?
・ツリー全体表示

【79497】Re:excel2013にて発生するworkbooks.Ope...
質問  ペーターパン  - 17/11/8(水) 13:03 -

引用なし
パスワード
   ▼カリーニン さん:
>>path = ActiveWorkbook.Path
>
>この部分を私がリンクした先の方法を参考にしたコードに変えても同じですか?

返信が遅くなり申し訳ありません。

パスをFullNameから取得してInstrRevで切り出しましたがダメでした。
やはり同じようにOpenのか所で止まります。

やはりOpenメソッドを実行しようとした際にパスを参照できていないような気がします。
しかし、デバッグを実行した際には変数にパスが取得されているためF8キーで実行がステップインができてしまいます。
・ツリー全体表示

【79496】Re:excel2013にて発生するworkbooks.Ope...
発言  カリーニン  - 17/11/7(火) 12:47 -

引用なし
パスワード
   >path = ActiveWorkbook.Path

この部分を私がリンクした先の方法を参考にしたコードに変えても同じですか?
・ツリー全体表示

【79495】Re:excel2013にて発生するworkbooks.Ope...
質問  ペーターパン  - 17/11/7(火) 9:03 -

引用なし
パスワード
   ▼カリーニン さん:
>もしかしたら、↓が参考になるかもしれません。
>
>ht tp://www.excel.studio-kazu.jp/kw/20130513223611.html

参考URL拝見しました。
こういった現象も発生するのですね。
・あれから変数名を変更してみましたが、解決には至りませんでした。
・ウォッチウィンドウを利用してみました。
 デバッグを押した段階では変数の取得ができているという結果になります。
 本当に変数が取得できているのかは定かではないですが・・・。
・念のためOpneの命令の前にセルにパスを書き込む命令をして、そこで止めてみました。
 正常に書き込まれていました。
・そのセルに書かれた内容を参照してファイルを開こうとしました。
 これでも止まりました。

なかなか原因特定には至っていませんが、どうもOpen処理の前に3秒待つと動くことからpath取得自体になんらかのバグがあることも想定して処理をどう直すか考えてみます。
・ツリー全体表示

【79494】Re:excel2013にて発生するworkbooks.Ope...
発言  カリーニン  - 17/11/6(月) 22:15 -

引用なし
パスワード
   もしかしたら、↓が参考になるかもしれません。

ht tp://www.excel.studio-kazu.jp/kw/20130513223611.html
・ツリー全体表示

【79493】Re:excel2013にて発生するworkbooks.Ope...
質問  ペーターパン  - 17/11/6(月) 17:05 -

引用なし
パスワード
   ▼カリーニン さん:
>>変数名はpathではないです。
>
>そうでしたら変数名は関係ないかもしれません。
>
>変数名が「path」だと、予約語なのでエラーになる可能性はありましたが、
>違う、ということでしたので。

変数名「data」でした。
dat「e」であれば予約語ですが、これは予約語には当たらないかと思います。
それでも、一応変数名の変更はかけてみます。

他にも思い当たることがあれば何かご連絡お願い致します。
・ツリー全体表示

【79492】Re:excel2013にて発生するworkbooks.Ope...
発言  カリーニン  - 17/11/4(土) 9:48 -

引用なし
パスワード
   >変数名はpathではないです。

そうでしたら変数名は関係ないかもしれません。

変数名が「path」だと、予約語なのでエラーになる可能性はありましたが、
違う、ということでしたので。
・ツリー全体表示

【79491】Re:excel2013にて発生するworkbooks.Ope...
質問  ペーターパン  - 17/11/3(金) 21:01 -

引用なし
パスワード
   ▼カリーニン さん:
>変数名は本当に「path」ですか?
>変数名を他のに(例:mypath)変えても同じですか?

変数名はpathではないです。
今すぐには分かりませんが変数名を変更することは検討してみます。
・ツリー全体表示

【79490】Re:excel2013にて発生するworkbooks.Ope...
発言  カリーニン  - 17/11/3(金) 20:23 -

引用なし
パスワード
   変数名は本当に「path」ですか?
変数名を他のに(例:mypath)変えても同じですか?
・ツリー全体表示

【79489】excel2013にて発生するworkbooks.Openの...
質問  ペーターパン  - 17/11/3(金) 12:50 -

引用なし
パスワード
   EXCEL2010では起動するworkbooks.Openの命令がexcel2013だと停止してしまいます。
なぜ止まるのか分かる方いらっしゃいますか?
守秘義務があるため、下記のようにしか公開できない点をご容赦下さい。

path = ActiveWorkbook.Path
path = path & "\" & fileA

Workbooks.Open Filename:=path ←ここで止まる


・エラーメッセージは下記の通です。
 実行時エラー1004
 'Open'メソッドは失敗しました。:'Workbooks'オブジェクト

・ローカルウィンドウで全ての変数に正式な値が入っていることは確認済みです。

・ステップインでの起動であれば問題なく動きます。
 止まった後もステップインによる継続で動作可能です。
 よって、取得している変数がおかしいわけではないようです。

・●と▲の一にDoEventsを挿入しましたが効果ありませんでした。

・●の一に3秒停止する命令を描いたところ問題なく動きました。(3秒未満は止まる)
 パスの取得に対する処理の前に停止が効果あるようです。

・念のため、Cドライブ上の余り階層の深くないディレクトリで動作させましたが、解決しませんでした。

・ネット上で同様の問題が起こっている方がいることはすぐに分かりませいた。
 ただし、解決には至っていない方も多くなぜこうなるのかがよく分かりません。

・ウィンドウ表示機能がExcel2010はMDI形式、Excel2013はSDI形式になっています。
 これが関節的に影響しているのでしょうか?

・他のvbaプログラムは問題なく動くものもあります。
 頻繁にファイルを開くような動作をするほど止まるようです。

・pcを変えても停止は再現されます。

何か分かる方がいましたらご連絡頂けますと幸いです。
・ツリー全体表示

【79488】Re:重複チェックをしたい
回答  りった  - 17/10/30(月) 12:45 -

引用なし
パスワード
   >条件付き書式で実現しようと思いましたが、
>条件の適用先を可変するような方法が思い浮かばず
>VBAで実現可能かご教示頂けないでしょうか。
今一つ、やりたいことを理解出来てませんが、
VBAで条件の適用先を変えるのでは問題あるのでしょうか?

一言でいうと、別のシートにもある品番に色を付けたいってことでしょうか?
質問内容とは異なりますが、作業ファイルが変わらず作業シートが毎日変わるのであれば、一気に全部やってしまった方が楽だと思います。(ボタンを設置しなくて済む)
作業ファイルが毎日変わるのであれば、個人用マクロブック(PERSONAL.XLSB)を使った方が楽じゃないかなと思いました。
・ツリー全体表示

【79487】Re:ユーザー定義関数の中でセルの値を参...
お礼  りった  - 17/10/27(金) 13:14 -

引用なし
パスワード
   回答ありがとうございます。
自分が今使っているファイルだと、無関係のセルが変更されても再計算されるのはまずそうです。
・ツリー全体表示

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