プロが教える店舗&オフィスのセキュリティ対策術

あるエクセルマクロが、特定のPCでのみエラーになります。
ソースを見ると以下の処理で引っかかっているようです。
「Debug.Print Err.Description」

正常動作してくれないのは「SurfacePro Corei7モデル、エクセル2016」です。
動作しないエクセルファイルをUSBメモリでフォルダまるごとコピーし、
別PCにコピーして実行すると動作しました。マクロは問題ないようです。

正常動作すると指定のフォルダにエクセル形式のデータを書き出す仕様になっています。
User名が日本語なのがいけないのかと思い、ユーザ名「test」で試しましたが駄目でした。
エクセルの2010で作成したマクロだから、2016でエラーが出るのかと思いましたが、
他のPCではエクセル2016で動作しているとの事(未確認)
エラーと言ってもVBA内の処理にてエラーメッセージが表示されているので開発者の想定しているエラーです。

情報不足で申し訳ありませんが、何か手がかりを頂けると助かります。

質問者からの補足コメント

  • へこむわー

    本来であれば、ソース自体を提示するのがズバリ正確な質問となるのですが、
    細かい説明は割愛しますが、そのままソースを公開するにはリスクがあるため、
    情報不足前提ですが、
    聞かないよりは聞いた方が、何か手がかりがつかめたらと思って質問させていただいています。

    開発者から配布された、スキルの低いユーザから相談を受けた身ですので、
    私自身も解析する程のスキルがあるわけでもなく、私と開発者の接点はありません。
    最終的には、「開発者に問い合わせるしかない」と突き返すことになりますが、
    その前に何かできうることを探っている状態です。
    ご理解いただければ幸いです。

      補足日時:2018/05/21 11:42

A 回答 (12件中1~10件)

本来表示されるはずのイミディエイトウィンドウにも何も出てこないんですか?

    • good
    • 0

VBEの参照設定で「参照不可」になっているもののチェックを外しましょう。

    • good
    • 0
この回答へのお礼

ありがとうございます。
よろしければその理由も教えていただけませんか?

月曜になったら試すことができるのですが、
それまでに出来るだけ可能性を集めておきたいです。

お礼日時:2018/05/18 21:40

>開発者の想定しているエラーです



質問者さんの作った物ではないのですか?
もしそうなら例えば何かをインストしているのが条件とか?
と言うよりかは開発者に確認した方がって開発した人が悩んでいる?
    • good
    • 0
この回答へのお礼

>例えば何かをインストしているのが条件とか?

新品のSurfaceProを使用しての事なので、あまり考えにくいと思っています。
もちろんプリインストールされりるソフトの可能性もありますが、低いと思っています。

>開発者の想定しているエラーです
うまく表現できておらずすみません。
自分でVBAで開発途中に期待通りに動作せずVBAが出すエラーではなくて、
プログラム内で想定外の状況に応じてユーザに知らせるエラーメッセージです。
つまり、例えば
MsgBox "それはダメよ~ん!"
の様な止まり方をし、正常処理完了に行きつかないだけなのでこのメッセージをここに記載したところで、
全く意味がないからです。
エラーといってもプログラム的には正常処理を完了していますが、
使っている人からすると、データ書き出しまで完了できないため困っています。

本来であれば、ソース自体を提示するのがズバリ正確な質問となるのですが、
細かい説明は割愛しますが、そのままソースを公開するにはリスクがあるため、
情報不足前提ですが、
聞かないよりは聞いた方が、何か手がかりがつかめたらと思って質問させていただいています。

開発者から配布された、スキルの低いユーザから相談を受けた身ですので、
私自身が解析する事も出来ず、私と開発者の接点はありません。
最終的には、「開発者に問い合わせるしかない」と突き返すことになりますが、
その前に何かできうることを探っている状態です。
ご理解いただければ幸いです。

お礼日時:2018/05/21 11:40

>Debug.Print Err.Description



で、その結果、何と書かれてるの??
ソースコード見ている画面から、表示 -- イミディエイトウィンドウ で、出るはず
    • good
    • 0

No.2です。


>以下の処理で引っかかっているようです。
引っかかっているの意味が分からん。
    • good
    • 0

>エラーメッセージが表示されているので


それを見せずに何を期待して質問してるのですか?
    • good
    • 0
この回答へのお礼

「情報不足で申し訳ありません」と最初から断っていますよね。
その中で、アドバイスしようがないのは仕方がありませんが、突っかかってこないでくださいね。

お礼日時:2018/05/21 11:23

>エラーと言ってもVBA内の処理にてエラーメッセージが表示されているので開発者の想定しているエラーです。


それでもエラーでしょ?Debug.Print Err.Descriptionは「エラー内容を表示せよ」なので、それがないと何だか分かりません。

いつも思うのですが、原因が分からない質問者が勝手に原因を決めつけることが多いです。
    • good
    • 0

No.3のお礼に対して



>>例えば何かをインストしているのが条件とか?

>新品のSurfaceProを使用しての事なので、あまり考えにくいと思っています。
>もちろんプリインストールされりるソフトの可能性もありますが、低いと思っています。

う~ん?
『そのマクロを実行するに当たって○○がインストールされている事』を条件と回答してます。
なので新品であるからこそインストールされてない
(Windowsのアップデートを止めているとか、OSが新しく次のバージョンが入っているのでOS的には不要と思われているような物とか)

>他のPCではエクセル2016で動作しているとの事(未確認)

この確認において問題ないのなら『プログラムの追加と削除』を動くPCと双方表示させてみて見比べる・・・・

例えばデータベースに接続するような物なら接続の仕方によっては接続用ドライバ類は必要かもでしょうし。

>最終的には、「開発者に問い合わせるしかない」と突き返すことになります

『自分には手に負えない』と戻す必要もある・・・と言うより開発者との接点を持つ物がスキル不足では、仮に委託であれば下手すると相手の良いように
されちゃうんじゃない?
その者の上司はどのような感じなのでしょうか?と考えてしまいます。

あとは該当PCのアカウントに管理者権限が必要とか、

>エクセルファイルをUSBメモリでフォルダまるごとコピーし

ExcelBookではなくフォルダ丸ごとって『.dll などExcelBookファイル以外に何かある』ならそれを動かすソフトがかけてるのかも。
    • good
    • 0
この回答へのお礼

ご親切に返答いただきありがとうございます。

本日、相談者がSurfaceProを私の元に持参してきてくれました。
その方は初心者だし、新品だけあって、何も端末をいじってないようです。
SurfaceProでマクロを実行したところ、本来は指定フォルダに計算結果のエクセルファイルを書き出す仕様になっているようですが、
「失敗しました。」というメッセージで出ました。

私のPCのデスクトップにコピーして、同じ操作をしてみたところ、「成功しました。」で、エクセルファイルが生成されていました。
私のPCは私自身、DBに接続するような設定は行っておらず、基本的に素の状態なのに正常動作しました。

また明日以降、SurfaceProに触らせてもらえる時間が持てますが、
本日は時間が無く、状態の確認のみで、あらためて情報不足ですみません。

お礼日時:2018/05/21 19:05

No.8です。



>本来は指定フォルダに計算結果のエクセルファイルを書き出す仕様になっているようですが、
>「失敗しました。」というメッセージで出ました。

計算結果の基データがマクロを実行したファイルにあるとすれば、失敗は指定フォルダへのアクセス権が使用しているアカウントにない可能性も考えられます。
ネットワーク上への保存なら尚更アクセス権があやしそう。新品購入した後にそのPCからのアクセス許可設定を怠ったというミスは、こちらでは以前ありましたよ。

>私のPCのデスクトップにコピーして、同じ操作をしてみたところ、「成功しました。」で、エクセルファイルが生成されていました。

これは質問に書かれている『フォルダごと』のコピー(複数のBook或いはその他のファイルを含んでいる)なのか『マクロを実行したBookのみ』なのかでも
違ってくるでしょうね。

>私のPCは私自身、DBに接続するような設定は行っておらず、基本的に素の状態なのに正常動作しました。

DBへの接続についてはたまに私は回答してますが、参照設定を行なわずにマクロで呼び出す方法もあります。
重要なのはマクロ実行Bookが他のBookやファイル・DBシステムにつながってデータを受け取り新規Bookを作成するようになっているのか、
或いはマクロ実行Book単体での稼働なのかの切り分けでしょうかね。
    • good
    • 0
この回答へのお礼

相手との時間が調整つかず、とりあえずフォルダ関係の確認だけできました。

「エクセル作成マクロ」というフォルダの中に
・「Excel」というフォルダ
・「マクロ.xlsm」というファイル
だけ入っています。
マクロを実行した際の書き出し先は相対パス指定で、マクロの置いてあるフォルダ内にあるExcelフォルダに書き出す仕様になっています。
なので、もとのフォルダまるごと、別のPCのローカルディスクのどこにコピーして実行しても、
そのフォルダ内のExcelフォルダに書き出すようになっています。
取り急ぎご報告まで。

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

お礼日時:2018/05/22 14:40

こんにちは。



もう、Weekday に入りましたので、少し口を挟ませていただきます。
ちょっと驚いているのは、「開発者に問い合わせるしかない」ということは、ご自身の開発したものではないというのですか?

すでに、重複する部分がありましたら、ご容赦ください。

厳しい事を言うようですが、ひと目みて、ある程度の経験があれば、自分と開発者の力量の差というものは分かります。その上で、即刻、判断すべきというか、力量の上の人のものには手を付けないという、自分自身のルールも必要かもしれません。

私の場合は、別なトラブルがありますが、基本的には他人のコードは、公になっているもの以外は、手をつけることはありません。

「SurfacePro Corei7モデル、エクセル2016」
私が同じ立場だったら、まず、直感的に、SurfacePro で、Office VBAマクロを動かすことに躊躇を感じてしまいます。Ms 商品のオレサマ度は、数ある製品の中でも、最高かもしれません。

まして、新品だという話では、なおさらで、何の調整もされていないのではないでしょうか。Excelで、VBAマクロでも、アドインでも、それを使うためには、ある程度のお膳立てが必要なのです。

まず、コードはオープンになっているわけですね。
ふつう、マクロがダメだという時に、参照設定の基本事項が×になっていることがあります。
・Visual Basic For Applications
・Microsoft Excel xx.0 Object Library (xx は数字)
・OLE Automation
・Microsoft Office xx.0 Object Library (xxは数字)

>データ書き出しまで完了できないため困っています。
もし、これだけの問題なら、書き出して良い場所かどうか、論理的仮想空間か、実体のあるHDDとかSSDとか、たぶん、デフォルト状態のままでは難しいということだけになります。

ふつう、私は、2種類のデバッグ方法を取ります。
まず、コードのどこで、どのような種類のエラーを吐き出しているか、チェック型のマクロに編集します。これは、私は、MZ-Toolsを利用しています。もちろん、On Error トラップを外して、Compile するのもよいのですが、Run Time エラーで、マイナス値のものはお手上げに近いです。

もうひとつは、スモールコードのシュミレーションです。その悪い部分の周辺を取り出して、それを単独のブックで独自に実行します。

こんなところでしょうか。
    • good
    • 0
この回答へのお礼

すみません、そういう大袈裟な話ではないです^^;

「開発者に聞くしかないです。」そう言って何もせずに突き放すのは可哀想なので
出来れば解決を、無理なら切り分けをしてあげたいと思ってます。

あと、PC毎に設定をしなければいけないような面倒な設計にはなってないそうです。
(つまりPCにエクセルをインストールさえすれば動くはず。)
それが特定のマシンにだけ動作しないので困っているわけで、どこを見てどう判断すれば良いか相談している次第です。

書き出し先については、No.9の回答の方で説明します。

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

お礼日時:2018/05/22 14:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A