あるエクセルマクロが、特定の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も見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
EXCEL/VBAで、自分のPCだけエラーが出ます
Visual Basic(VBA)
-
EXCELのマクロが他のパソコンで動かない
その他(コンピューター・テクノロジー)
-
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
-
4
excel vba 他のパソコンでマクロを使用すると動かない(新規ブックにコピペができない)
Visual Basic(VBA)
-
5
ExcelのVBAが特定のPC上でのみ失敗する件について
XML
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
同じマクロなのに結果が違う
Excel(エクセル)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
エクセルエラー13型が一致しませんの直し方教えて下さい。
その他(Microsoft Office)
-
10
昨日まで動いていたエクセルのマクロが急に動かなくなりました
Excel(エクセル)
-
11
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
12
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
13
別のパソコンでエクセルのマクロを使いたい
Excel(エクセル)
-
14
エクセルVBAが途中で止まります
Visual Basic(VBA)
-
15
VBAマクロ 実行時エラーが出たり出なかったり
Excel(エクセル)
-
16
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
17
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
18
Worksheets メソッドは失敗しました。のエラー処理のやり方
Visual Basic(VBA)
-
19
EXCELマクロで☓400とでます
Excel(エクセル)
-
20
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
Excel マクロ VBA プロシー...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
メッセージボックスのOKボタ...
-
エクセルに張り付けた写真のフ...
-
TERA TERMを隠す方法
-
特定文字のある行の前に空白行...
-
マクロで空白セルを詰めて別シ...
-
Excel マクロでShearePoint先の...
-
エクセルで別のセルにあるふり...
-
ExcelVBAでPDFを閉じるソース
-
Excel_マクロ_現在開いているシ...
-
Excelで大量のデータを規則的に...
-
マクロ実行時、ユーザーフォー...
-
ソース内の行末に\\
-
VC++ 2008 EXPRESS "_T"識別子...
-
エクセル VBA実行中のApplicati...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルに張り付けた写真のフ...
-
ExcelのVBA。public変数の値が...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
ExcelVBAでPDFを閉じるソース
-
特定文字のある行の前に空白行...
-
Excel VBAからAccessマクロを実...
-
wordを起動した際に特定のペー...
-
マクロ実行時、ユーザーフォー...
-
エクセルで別のセルにあるふり...
-
マクロで空白セルを詰めて別シ...
-
ソース内の行末に\\
-
Excel_マクロ_現在開いているシ...
-
ダブルクリックで貼り付けた画...
おすすめ情報
本来であれば、ソース自体を提示するのがズバリ正確な質問となるのですが、
細かい説明は割愛しますが、そのままソースを公開するにはリスクがあるため、
情報不足前提ですが、
聞かないよりは聞いた方が、何か手がかりがつかめたらと思って質問させていただいています。
開発者から配布された、スキルの低いユーザから相談を受けた身ですので、
私自身も解析する程のスキルがあるわけでもなく、私と開発者の接点はありません。
最終的には、「開発者に問い合わせるしかない」と突き返すことになりますが、
その前に何かできうることを探っている状態です。
ご理解いただければ幸いです。