あるエクセルマクロが、特定のPCでのみエラーになります。
ソースを見ると以下の処理で引っかかっているようです。
「Debug.Print Err.Description」
正常動作してくれないのは「SurfacePro Corei7モデル、エクセル2016」です。
動作しないエクセルファイルをUSBメモリでフォルダまるごとコピーし、
別PCにコピーして実行すると動作しました。マクロは問題ないようです。
正常動作すると指定のフォルダにエクセル形式のデータを書き出す仕様になっています。
User名が日本語なのがいけないのかと思い、ユーザ名「test」で試しましたが駄目でした。
エクセルの2010で作成したマクロだから、2016でエラーが出るのかと思いましたが、
他のPCではエクセル2016で動作しているとの事(未確認)
エラーと言ってもVBA内の処理にてエラーメッセージが表示されているので開発者の想定しているエラーです。
情報不足で申し訳ありませんが、何か手がかりを頂けると助かります。
A 回答 (12件中1~10件)
- 最新から表示
- 回答順に表示
No.12
- 回答日時:
#10の回答者です。
「大袈裟な話ではないです^^;」
ちょっとザックバランに書かせていただきます。
私は、収入をOffice VBA開発では得てないので、アマには違いないけれども、ある程度の心得は存じているつもりです。
1)「マクロを実行した際の書き出し先は相対パス指定で、マクロの置いてあるフォルダ内にあるExcelフォルダに書き出す」
2)「もとのフォルダまるごと、別のPCのローカルディスクのどこにコピーして実行しても、
そのフォルダ内のExcelフォルダに書き出す」
どんなコードか分かりませんが、
「フォルダ内のExcelフォルダに書き出す」というのは、それが成立するのは、そのフォルダーの下位フォルダぐらいですが、時々、勘違いされる方がいるように思うのです。デフォルト・ファイルパス(default File path) は、ユーザーの任意のフォルダには優先しません。ここは大事です。よく間違える方がいます。では、なぜ下位フォルダは問題が少ないかというと、コードとして書かざるを得ないからです。
だから、お話のようには、今は、出口についてそう安易には決められないないのです。しかし、みなさん、デフォルトのままに入れるようにしているはずです。私は、あえてそれを嫌っています。タブレットもどきでは、なかなかそういうわけにもいきませんが。
最近になって、やっと、VBAのEnviron 関数の他に、Path の環境定数について学び始めました。VBAでは、あまり使えないことも多いのですが、それを無視もできなくなっています。
話を最初から戻します。
ご自身のコードではないということを前提ですが、
開発者の都合というものもあるけれども、常識の範囲で、「Debug.Print Err.Description」こんなことは書きません。
If Err<>0 Then
MsgBox "Error " & Err.Number &": " & Err.Description
(システムの場合は、そこにプロシージャ名などを後に入れます)
End If
です。
そもそも、他人に手渡すコードに、Debug.Print がなぜあるのか、ということですね。
早い話、ユーザーに下駄を預けたコードは、秘匿性なんて守る必要なんてないと言いたくなるのですが。開発者どうしで、チェックしてもらうためには付けても、正真正銘のユーザーさんには出しません。
ユーザーさんに渡すコードの場合、特にシステムでは、エラー出力の仕方というのは、ちょっと工夫を凝らす必要があります(企業秘密というか、公開ははばかりますが。)
ユーザーさんにはVBAのモジュールを触らせないということも、「同一性(私が作ったものという意味)」が保たれないからです。「同一性」のないものは、責任の取りようがないのです。
もしかしたら、マクロの問題ではなく、機種固有の問題があるかもしれません。こうなるとバンザイになってしまいます。せめてエラーコードがあると話が早いのですが……。
・参照設定の基本事項
ところで、これは、ご存知ですか?初級や中級に入ったばかりの人は、まったく認識なかったりします。
●ツールのオプションの全般(開発者向け)
・エラートラップは、エラー処理対象外のエラーで中断 (クラスモジュールで中断:可)
・開発するので、私は以下を入れていますが、
製品的には、「順次コンパイルを[OFF]」
しかし、これは、前回で述べたように、私は、コードチェックのために、Compile をかけてる習慣があるから、[ON]にしているわけです。ただし、出来上がった段階では、ユーザーには関係がありません。
●オプション-保存
・規定のファイルの場所:(ここが、デフォルトファイルパス)
●セキュリティセンター・ファイル-オプション内(マクロ・ユーザー[開発者とは違います])
・信頼できる場所
ここの処理をどうするか、インストラクターで安易に設定を勧める人がいますが、私は、公にはノーコメント。デフォルトならデフォルトのままとも言いたいのですが、最近は、UserのOneDrive になっています。プライベートでは、SSD ドライブ辺りがふさわしいかと思います。
・マクロの設定
警告を表示してすべてのマクロを無効にする
VBAプロジェクト オブジェクト モデルへのアクセスを信頼する(通常は[OFF])
・プライバシーオプション
Office のインターネット接続を許可する [ON]
と、大雑把なところは、このようにすればいよかと思いますが、設定は意図的に変えても、Windows側のセキュリティ設定に優先されるので、大きな違いはありません。
こんなところかな。
ありがとうございます。
真剣に考えていただき感謝いたします。
まだ端末に触れる機会がないため進展はありません。
アドバイスいただいた内容を活用させていただきます。
No.11
- 回答日時:
No.9です。
No.10さんの意見に同意したい部分はあります。
ブックの書き出しが出来ないと言う点で仮に『FileSystemObject』を使用していて且つ参照設定を使用している【Microsoft Scripting Runtime】が、
何かの拍子に外れているとも思えます。
ただこのまま質疑を繰り返して憶測で悩むよりかは、開発者に聞いてみた方が早く済んでしまうのではないかと思えてしまいますし、
担当者含め複数人で理由と対処法をキチンと聞く事は大切かなと。
ありがとうございます。
(話が逸れるので割愛しますが)開発者に聞く方が大変なので情報収集しています。
こちらは「質疑応答を繰り返して悩んでいる」という認識ではありません。
次回、直接端末に触れられるのがいつになるか分からないので、
その機会を無駄にしないよう、試せる確認事項を可能な限り集めている状態です。
今のところ集まった情報は下記の通りで、
・イミディエイトウィンドウの確認
・VBEの参照設定で「参照不可」になっているものがないか
・参照設定の基本事項
・『FileSystemObject』を使用していて且つ参照設定を使用している【Microsoft Scripting Runtime】が、何かの拍子に外れているかどうか
これらを試して何も見出せなかったら、「残念だけど開発者に聞くしかないわ、ごめんね」と突き放す事になります。
できるだけ解決してあげたいので情報収集している状態です。
No.10
- 回答日時:
こんにちは。
もう、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 エラーで、マイナス値のものはお手上げに近いです。
もうひとつは、スモールコードのシュミレーションです。その悪い部分の周辺を取り出して、それを単独のブックで独自に実行します。
こんなところでしょうか。
すみません、そういう大袈裟な話ではないです^^;
「開発者に聞くしかないです。」そう言って何もせずに突き放すのは可哀想なので
出来れば解決を、無理なら切り分けをしてあげたいと思ってます。
あと、PC毎に設定をしなければいけないような面倒な設計にはなってないそうです。
(つまりPCにエクセルをインストールさえすれば動くはず。)
それが特定のマシンにだけ動作しないので困っているわけで、どこを見てどう判断すれば良いか相談している次第です。
書き出し先については、No.9の回答の方で説明します。
ありがとうございました。
No.9
- 回答日時:
No.8です。
>本来は指定フォルダに計算結果のエクセルファイルを書き出す仕様になっているようですが、
>「失敗しました。」というメッセージで出ました。
計算結果の基データがマクロを実行したファイルにあるとすれば、失敗は指定フォルダへのアクセス権が使用しているアカウントにない可能性も考えられます。
ネットワーク上への保存なら尚更アクセス権があやしそう。新品購入した後にそのPCからのアクセス許可設定を怠ったというミスは、こちらでは以前ありましたよ。
>私のPCのデスクトップにコピーして、同じ操作をしてみたところ、「成功しました。」で、エクセルファイルが生成されていました。
これは質問に書かれている『フォルダごと』のコピー(複数のBook或いはその他のファイルを含んでいる)なのか『マクロを実行したBookのみ』なのかでも
違ってくるでしょうね。
>私のPCは私自身、DBに接続するような設定は行っておらず、基本的に素の状態なのに正常動作しました。
DBへの接続についてはたまに私は回答してますが、参照設定を行なわずにマクロで呼び出す方法もあります。
重要なのはマクロ実行Bookが他のBookやファイル・DBシステムにつながってデータを受け取り新規Bookを作成するようになっているのか、
或いはマクロ実行Book単体での稼働なのかの切り分けでしょうかね。
相手との時間が調整つかず、とりあえずフォルダ関係の確認だけできました。
「エクセル作成マクロ」というフォルダの中に
・「Excel」というフォルダ
・「マクロ.xlsm」というファイル
だけ入っています。
マクロを実行した際の書き出し先は相対パス指定で、マクロの置いてあるフォルダ内にあるExcelフォルダに書き出す仕様になっています。
なので、もとのフォルダまるごと、別のPCのローカルディスクのどこにコピーして実行しても、
そのフォルダ内のExcelフォルダに書き出すようになっています。
取り急ぎご報告まで。
ありがとうございました。
No.8
- 回答日時:
No.3のお礼に対して
>>例えば何かをインストしているのが条件とか?
>新品のSurfaceProを使用しての事なので、あまり考えにくいと思っています。
>もちろんプリインストールされりるソフトの可能性もありますが、低いと思っています。
う~ん?
『そのマクロを実行するに当たって○○がインストールされている事』を条件と回答してます。
なので新品であるからこそインストールされてない
(Windowsのアップデートを止めているとか、OSが新しく次のバージョンが入っているのでOS的には不要と思われているような物とか)
>他のPCではエクセル2016で動作しているとの事(未確認)
この確認において問題ないのなら『プログラムの追加と削除』を動くPCと双方表示させてみて見比べる・・・・
例えばデータベースに接続するような物なら接続の仕方によっては接続用ドライバ類は必要かもでしょうし。
>最終的には、「開発者に問い合わせるしかない」と突き返すことになります
『自分には手に負えない』と戻す必要もある・・・と言うより開発者との接点を持つ物がスキル不足では、仮に委託であれば下手すると相手の良いように
されちゃうんじゃない?
その者の上司はどのような感じなのでしょうか?と考えてしまいます。
あとは該当PCのアカウントに管理者権限が必要とか、
>エクセルファイルをUSBメモリでフォルダまるごとコピーし
ExcelBookではなくフォルダ丸ごとって『.dll などExcelBookファイル以外に何かある』ならそれを動かすソフトがかけてるのかも。
ご親切に返答いただきありがとうございます。
本日、相談者がSurfaceProを私の元に持参してきてくれました。
その方は初心者だし、新品だけあって、何も端末をいじってないようです。
SurfaceProでマクロを実行したところ、本来は指定フォルダに計算結果のエクセルファイルを書き出す仕様になっているようですが、
「失敗しました。」というメッセージで出ました。
私のPCのデスクトップにコピーして、同じ操作をしてみたところ、「成功しました。」で、エクセルファイルが生成されていました。
私のPCは私自身、DBに接続するような設定は行っておらず、基本的に素の状態なのに正常動作しました。
また明日以降、SurfaceProに触らせてもらえる時間が持てますが、
本日は時間が無く、状態の確認のみで、あらためて情報不足ですみません。
No.7
- 回答日時:
>エラーと言ってもVBA内の処理にてエラーメッセージが表示されているので開発者の想定しているエラーです。
それでもエラーでしょ?Debug.Print Err.Descriptionは「エラー内容を表示せよ」なので、それがないと何だか分かりません。
いつも思うのですが、原因が分からない質問者が勝手に原因を決めつけることが多いです。
No.4
- 回答日時:
>Debug.Print Err.Description
で、その結果、何と書かれてるの??
ソースコード見ている画面から、表示 -- イミディエイトウィンドウ で、出るはず
No.3
- 回答日時:
>開発者の想定しているエラーです
質問者さんの作った物ではないのですか?
もしそうなら例えば何かをインストしているのが条件とか?
と言うよりかは開発者に確認した方がって開発した人が悩んでいる?
>例えば何かをインストしているのが条件とか?
新品のSurfaceProを使用しての事なので、あまり考えにくいと思っています。
もちろんプリインストールされりるソフトの可能性もありますが、低いと思っています。
>開発者の想定しているエラーです
うまく表現できておらずすみません。
自分でVBAで開発途中に期待通りに動作せずVBAが出すエラーではなくて、
プログラム内で想定外の状況に応じてユーザに知らせるエラーメッセージです。
つまり、例えば
MsgBox "それはダメよ~ん!"
の様な止まり方をし、正常処理完了に行きつかないだけなのでこのメッセージをここに記載したところで、
全く意味がないからです。
エラーといってもプログラム的には正常処理を完了していますが、
使っている人からすると、データ書き出しまで完了できないため困っています。
本来であれば、ソース自体を提示するのがズバリ正確な質問となるのですが、
細かい説明は割愛しますが、そのままソースを公開するにはリスクがあるため、
情報不足前提ですが、
聞かないよりは聞いた方が、何か手がかりがつかめたらと思って質問させていただいています。
開発者から配布された、スキルの低いユーザから相談を受けた身ですので、
私自身が解析する事も出来ず、私と開発者の接点はありません。
最終的には、「開発者に問い合わせるしかない」と突き返すことになりますが、
その前に何かできうることを探っている状態です。
ご理解いただければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Excel(エクセル) マクロで謎の現象が起きていて困ってます。 エクセルで作ったボタンを押すとマクロが動いて処理をしてくれ 3 2023/06/22 17:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/26 17:13
- Excel(エクセル) 1つのファイルを3つのフォルダにファイル名を【明日の日付】にして、コピーをしたい 2 2022/12/21 17:43
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
土曜の昼、学校帰りの昼メシの思い出
週休2日が当たり前の今では懐かしい思い出ですが、昔は土曜日も午前中まで学校や会社がある「半ドン」で、いつもよりちょっと早く家に帰って食べる昼ご飯が、なんだかちょっと特別に感じたものです。
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
【お題】 ・このサンタクロースは偽物だと気付いた理由とは?
-
EXCEL/VBAで、自分のPCだけエラーが出ます
Visual Basic(VBA)
-
EXCELのマクロが他のパソコンで動かない
その他(コンピューター・テクノロジー)
-
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
-
4
ExcelのVBAが特定のPC上でのみ失敗する件について
XML
-
5
excel vba 他のパソコンでマクロを使用すると動かない(新規ブックにコピペができない)
Visual Basic(VBA)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
同じマクロなのに結果が違う
Excel(エクセル)
-
8
昨日まで動いていたエクセルのマクロが急に動かなくなりました
Excel(エクセル)
-
9
エクセルエラー13型が一致しませんの直し方教えて下さい。
その他(Microsoft Office)
-
10
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
11
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
12
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
13
別のパソコンでエクセルのマクロを使いたい
Excel(エクセル)
-
14
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
15
EXCELマクロで☓400とでます
Excel(エクセル)
-
16
Worksheets メソッドは失敗しました。のエラー処理のやり方
Visual Basic(VBA)
-
17
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
18
VBAマクロ 実行時エラーが出たり出なかったり
Excel(エクセル)
-
19
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
20
エクセルVBAが途中で止まります
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
Excel マクロ VBA プロシー...
-
エクセルで特定の列が0表示の場...
-
TERA TERMを隠す方法
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel マクロでShearePoint先の...
-
エクセルに張り付けた写真のフ...
-
Excel VBAからAccessマクロを実...
-
ExcelのVBA。public変数の値が...
-
既存のマクロをコンボボックス...
-
ソース内の行末に\\
-
非表示の列をすべて削除するマクロ
-
ExcelVBAでPDFを閉じるソース
-
Excel_マクロ_現在開いているシ...
-
マクロ実行時、ユーザーフォー...
-
エクセルで縦に並んだデータを...
-
Teraterm 1行空白を入れたい。
-
エクセルのマクロをセルの値に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルに張り付けた写真のフ...
-
ExcelのVBA。public変数の値が...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
ExcelVBAでPDFを閉じるソース
-
Excel VBAからAccessマクロを実...
-
Excel_マクロ_現在開いているシ...
-
マクロ実行時、ユーザーフォー...
-
エクセルで別のセルにあるふり...
-
ソース内の行末に\\
-
特定文字のある行の前に空白行...
-
マクロで空白セルを詰めて別シ...
-
wordを起動した際に特定のペー...
-
【EXCEL VBA】オートシェイプを...
おすすめ情報
本来であれば、ソース自体を提示するのがズバリ正確な質問となるのですが、
細かい説明は割愛しますが、そのままソースを公開するにはリスクがあるため、
情報不足前提ですが、
聞かないよりは聞いた方が、何か手がかりがつかめたらと思って質問させていただいています。
開発者から配布された、スキルの低いユーザから相談を受けた身ですので、
私自身も解析する程のスキルがあるわけでもなく、私と開発者の接点はありません。
最終的には、「開発者に問い合わせるしかない」と突き返すことになりますが、
その前に何かできうることを探っている状態です。
ご理解いただければ幸いです。