Excel VBA質問箱 IV

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

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


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

【78995】Re:最前面
発言  TW  - 17/4/4(火) 7:44 -

引用なし
パスワード
   γ さん、説明不足で申し訳ありません

batでエクセルを起動してます、会社でマクロ無効が標準設定なので
マクロ無効でも、マクロが動くようにしたつもりです。

BAT等作業用のファイルがフォルダに入れてあり、
フォルダを開いて、BATをクリックすると
フォルダの後ろになってしまいます。

他のアプリは開いていても、フォルダを開くので
その時フォルダが最前面なので、フォルダの後ろ
その他のアプリの前に開きます。


BATは

Spa = WScript.ScriptFullName
 Fpath = Left(Spa, InStrRev(Spa, "\") - 1)
  OPFL = Fpath & "\sagyou.xlsm"
  On Error Resume Next
  Set ExlApp = GetObject(, "Excel.Application")
   If ExlApp Is Nothing Then
   Set ExlApp = CreateObject("Excel.Application")
   Else
  End If
 ExlApp.Visible = True
 AppActivate ExlApp.Caption
  ExlApp.DisplayAlerts = False
  ExlApp.EnableEvents = False
  ExlApp.Workbooks.Open OPFL
  ExlApp.Run ("'" & OPFL & "'!Auto_Open")
  ExlApp.EnableEvents = True

sagyouと言うエクセルを開きます。
このsagyouにマクロが複数有り仕事しますが
どうしても、最前面になりません。
アドバイスをよろしくお願いします


▼γ さん:
>>batでエクセルを起動してますが、色々調べても、
>>どうしても最前面に表示されません
>
>・どのようなbatなのか、
>・Excelよりも前面に出るアプリケーションは何か、
>などを説明されたらいかがですか?
>今のままだと説明不足で、回答のしようがないように思います。
・ツリー全体表示

【78994】Re:別ウィンドウのワークシート間コピー
お礼  エリエール  - 17/4/4(火) 7:40 -

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

 コードをγさんの当初ご指摘とおり訂正したらうまくいきました。
βさん、見るに見かねての助け舟ありがとうございます。

 本当にありがとうございました。

 
■該当箇所の訂正後

 With SheetB

.Activate

.Range(.Cells(1, 1), .Cells(4, 4)) = OutData

End With

以上です。
・ツリー全体表示

【78993】Re:最前面
発言  γ  - 17/4/4(火) 7:33 -

引用なし
パスワード
   >batでエクセルを起動してますが、色々調べても、
>どうしても最前面に表示されません

・どのようなbatなのか、
・Excelよりも前面に出るアプリケーションは何か、
などを説明されたらいかがですか?
今のままだと説明不足で、回答のしようがないように思います。
・ツリー全体表示

【78992】Re:別ウィンドウのワークシート間コピー
発言  γ  - 17/4/4(火) 7:31 -

引用なし
パスワード
   βさん いつもながら適切な解説ありがとうございました。

質問者さんへ
私が提示したコードをそのまま使わなかった理由は?
(理解せずに Withステートメントとその対である .ドットを
 使うよりも、間違い無いだろうと思ったのですが。)

GetObjectを使う理由がいまいち理解できておらず、
当初の動作不良となる原因が別にあるのかもしれないなあと
思ってもいます。
・ツリー全体表示

【78991】Re:別ウィンドウのワークシート間コピー
発言  β  - 17/4/4(火) 0:33 -

引用なし
パスワード
   ▼エリエール さん:

横から失礼します。
γさんのしてきは SheetB.Range(セル1,セル2) の かっこの中のセルが SheetBのセルだと認識されないということでしたね。

それを SheetB.Range(.セル1,.セル2) とピリオドをつけられたわけですが
この ピリオドは、このコードに先行して With なんたら というものがあって初めて

『その セル1』といった意味になります。つまり ピリオドは 『その』という意味です。

さて、この場合、『その』は、何なのか、どこかに宣言がありますか?

記述するなら

With SheetB
 .Range(.セル1,.セル2)
End With

といった記述になるでしょうね。

あるいは

SheetB.Range(SheetB.Cells(1, 1), SheetB.Cells(4, 4))

でもいいですし、

Range(SheetB.Cells(1, 1), SheetB.Cells(4, 4))

でもいいです。
・ツリー全体表示

【78990】Re:別ウィンドウのワークシート間コピー
発言  エリエール  - 17/4/3(月) 22:33 -

引用なし
パスワード
    お忙しいところお手数かけます。詳細を記載することを失念していました。
申し訳ありませんでした。

 下記◆◆◆がエラー表示されたところです。SheetBのパスは、プロパティの
セキュリティに記載されているものをコピーしています。


Sub WriteData() 'イベントはSheetAのボタンを押します

◆◆◆ ⇒Sub WriteData()'イベントはSheetAのボタンを押します 
と左に矢印が付いた状態で行全体が黄色帯で選択されています。

Dim OutData As Variant 'データ格納用の変数です

Dim App As Object
Dim SheetA As Worksheet
Dim SheetB As Worksheet
Set SheetA = ActiveSheet

OutData = SheetA.Range(Cells(1, 1), Cells(4, 4))

Set App = GetObject("C:\Users\SheetB.xlsm")
Set SheetB = App.Worksheets("Data")

SheetB.Activate

SheetB.Range(.Cells(1, 1), .Cells(4, 4)) = OutData
◆◆◆    ↑の最初の.Cellsの箇所が青帯で選択されて
  「コンパイルエラー 参照が不正または不完全です。」とのメッセージが
   表示されます。

SheetA.Activate

End Sub


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

【78989】Re:別ウィンドウのワークシート間コピー
発言  γ  - 17/4/3(月) 21:22 -

引用なし
パスワード
   >該当箇所を変更しましたが、実行出来ませんでした。
実行できないというのは、どのような状態なんですか?
ステップ実行して見て下さい。

エラーになるなら、
・どの行でエラーになって、
・どのようなエラーメッセージが出るのか
書いてください。

エラーにはならないが、想定と異なるなら、
どのような結果になるのか示してください。

もちろん、こちらでは正常に動作することを確認してから
投稿しています。
・ツリー全体表示

【78988】Re:[無題]
お礼  [名前なし]  - 17/4/3(月) 20:50 -

引用なし
パスワード
   ▼β さん:
無事動きました!

>管理者に聞いてください
の箇所でハッとして、VBAをどうこうしようとしたのではなく、元の貼りつけたデータの行の名前を修正したところ、正常に処理が終了しました。

「得意先」が「得意先名」になっていて、
VBAの方でそれを修正していたつもりがきちんと保存して修正が完了しないままだったようで、一日中同じことを繰り返しては悩んでいたようです。

β様の意図したところではないかもしれませんが、とても助かりました。
きちんと用語がわかっていないので、この書き込みのお礼すら何を言っているのかわかってもらえない可能性もありますが・・・

本当にありがとうございました。
・ツリー全体表示

【78987】Re:[無題]
発言  β  - 17/4/3(月) 20:36 -

引用なし
パスワード
   ▼[名前なし] さん:

With ActiveSheet.PivotTables("得意先別売上金額").PivotFields("得意先")
ここでエラーで、かつメッセージが

PivotTableクラスのPivotFieldsプロパティを取得できません

ですから少なくとも 得意先別売上金額という名前のPivotTable は存在するわけですね。

であれば、あとは、得意先 というフィールドがないということになります。

ピボットテーブル内のセルをクリックして 分析->表示グループのフィールドリスト
でも確認できますし、

Sub Test()
  Dim pf As PivotField
  
  For Each pf In ActiveSheet.PivotTables("得意先別売上金額").PivotFields
    MsgBox pf.Name
  Next
  
End Sub

こんなコードを実行して、実際のフィールドとして、どんなものがあるか確かめてもいいでしょう。

その中に、得意先 という名前のフィールドは無いはずです。

なぜ、なくなったのかはわかりません。

>管理者がちょこちょこいじっているようで

管理者に聞いてください。
・ツリー全体表示

【78986】Re:[無題]
お礼  [名前なし]  - 17/4/3(月) 19:34 -

引用なし
パスワード
   ▼β さん:
>▼[名前なし] さん:
>
>このメッセージ、
>
>PivotTableクラスのPivotFieldsプロパティを取得できません
>
>これを、そのまま検索語にしてググってみてください。
>どっさりと説明ページがでてみます。


ありがとうございます。

検索してみたのですが、どうにもわからなくて。
もう一度いろいろ探してみます。
・ツリー全体表示

【78985】Re:[無題]
質問  [名前なし]  - 17/4/3(月) 19:33 -

引用なし
パスワード
   ▼ななみ さん:
>どういうデータがあって、どういうコードのどこでエラーメッセージが出てくるのかが分からないと・・・。
>この状態で回答できるのは透視が出来る超能力者だけ。


申し訳ありません。
本当に訳が分かっていなくて、どういった書き込みをしていいものかも判然としなくて。

売上データを得意先別にまとめている最中で止まっているようです。
黄色く色がついている場所がエラーの箇所なんですよね?

Sheets("月報用データ(得意先別)").Select
    
  Cells(1, 1).Select
  With ActiveSheet.PivotTables("得意先別売上金額").PivotFields("得意先")
    .Orientation = xlRowField
    .Position = 1
  End With
  ActiveSheet.PivotTables("得意先別売上金額").AddDataField _
  ActiveSheet.PivotTables("得意先別売上金額").PivotFields("外税金額"), "データの個数 / 外税金額", xlCount
  With ActiveSheet.PivotTables("得意先別売上金額").PivotFields("データの個数 / 外税金額")
    .Caption = "合計 / 外税金額"
    .Function = xlSum
  End With
  With ActiveSheet.PivotTables("得意先別売上金額").PivotFields("得意先")
    .PivotItems("(blank)").Visible = False
  End With
  
  ActiveWorkbook.Save

3行目のWith〜から始まる行に黄色い色がついています。

ここだけ貼り付けても意味がないでしょうか・・・
先週までは問題なく動いていたのですが、売上データを抽出するシステムを、管理者がちょこちょこいじっているようで、何かが変わってしまったようなのですが、どうにもわからないのです。

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

【78984】Re:[無題]
発言  β  - 17/4/3(月) 19:32 -

引用なし
パスワード
   ▼[名前なし] さん:

このメッセージ、

PivotTableクラスのPivotFieldsプロパティを取得できません

これを、そのまま検索語にしてググってみてください。
どっさりと説明ページがでてみます。
・ツリー全体表示

【78983】Re:[無題]
発言  ななみ  - 17/4/3(月) 19:21 -

引用なし
パスワード
   どういうデータがあって、どういうコードのどこでエラーメッセージが出てくるのかが分からないと・・・。
この状態で回答できるのは透視が出来る超能力者だけ。
・ツリー全体表示

【78982】[無題]
質問  [名前なし]  - 17/4/3(月) 19:13 -

引用なし
パスワード
   教えて下さい。

エラー'1004'
PivotTableクラスのPivotFieldsプロパティを取得できません

とメッセージが出ます。

どういった意味で、どういう修正をすればよいのでしょうか?
・ツリー全体表示

【78981】Re:windows update情報の抽出
発言  γ  - 17/4/3(月) 15:26 -

引用なし
パスワード
   ネット検索すれば、更新履歴を
テキストに落とすコマンドが
紹介されています。
あとは、Excelなりスクリプトなりで
加工してください。
だめですよ、専門家が手を抜こうと、
こんなところに質問しては。
・ツリー全体表示

【78980】Re:windows update情報の抽出
発言  TW  - 17/4/3(月) 15:07 -

引用なし
パスワード
   ▼γ さん:
>今、手作業でどのようにされているか説明ください。

γ さん ありがとうございます

業務監査の一環でパソコンのセキュリティー監査をしております。
実際には、
1.コンパネ→Windows Update→更新履歴で確認
2.ウイルスバスターコンソールを開き、確認してます。
3.インストールされているフリーソフトウェアについては
  色々ホームページの情報で抽出するマクロで確認してます
  これはできました。

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

【78979】Re:別ウィンドウのワークシート間コピー
発言  エリエール  - 17/4/3(月) 15:02 -

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

該当箇所を変更しましたが、実行出来ませんでした。
考えてみます。
・ツリー全体表示

【78978】Re:windows update情報の抽出
発言  γ  - 17/4/3(月) 14:41 -

引用なし
パスワード
   今、手作業でどのようにされているか説明ください。
・ツリー全体表示

【78977】windows update情報の抽出
質問  TW  - 17/4/3(月) 12:48 -

引用なし
パスワード
   マクロで、最新のwindows updateの月日、
ウイルスバスターのパッチパターン、最終スキャン月日
を取り出したいのですが、分かりません
できればエクセルに出力できればと思います、

どのようにしたら、取り出せるのか教えていただけますか
よろしくお願いいたします。
・ツリー全体表示

【78976】最前面
質問  にゃんた  - 17/4/3(月) 12:43 -

引用なし
パスワード
   batでエクセルを起動してますが、色々調べても、
どうしても最前面に表示されません
office2016 win7です

大変お手数をかけますが、ご教授いただければと思います。
・ツリー全体表示

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