• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL97のマクロがXPで使用)

EXCEL97のマクロがXPで使用できない場合の対処方法

このQ&Aのポイント
  • EXCEL97で作成したマクロがXP上でエラーが出る場合の対処方法を解説します。
  • エラーの出る箇所はCSVファイルを開いて新規ウィンドウを作成する部分で、解決策としてフルパスの指定方法を変更することがあります。
  • また、エラーの原因はOSの違いや端末の状態によるものであり、同じXPでもエラーが出ない端末も存在します。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

> リンク貼り付けには,こだわりません。 > ただし一つのセルから結合セルに情報が > 移せる事が条件です。 【 回 答 】 次のコードをお試し下さい。値のみ転記しています。 Dim varValue As Variant 'コードの冒頭で宣言。バリアント型が無難。 '***CSVファイルを開いて新規ウィンドウを作成*** Workbooks.Open Filename:=CSVファイルのフルパス '***新規ウィンドウのB4部分を変数に代入*** varValue = Range("B4").Value '***元のファイルの結合部分に転記*** Windows("元のファイル.xls").Activate 'CSVは1つしかシートが無いが、Excelブックは複数シートをもつので 'シート名を指定した方が良い Sheets("シート名").Range("B3:J3").Value = varValue > ところで、値の転記ってどうゆう記述の事ですか? 【 補 足 】 「値の転記」、、これは私が勝手に使った言葉であり、他の方が使っているわけではありません。単純に「リンクを張るのではなく、セルの値のみを別の場所に書き込む」、、という意味です。 >ActiveSheet.Paste Link:=True そもそもリンクは値の参照であり、セル書式まで引っ張って来ませんよね。ですから、オリジナルのコードを拝見し、無理にリンク貼り付けでなくとも、値の転記で良いのではないかと思ったのです。 リンクでなくとも OK であれば Paste メソッドを使わない、、つまり「リンクの Paste メソッドで失敗するなら、Paste メソッドを使わないで値のみをセルに転記すれば今回のトラブルを回避できるかもしれない」、、という意図で#2において >ところで、リンク貼り付けでなければダメなのですか?値の転記では? と質問してみました。 なぜなら、Paste メソッドは結合セルへの貼り付けに関し、今回のような不可解なトラブルの原因になることが多々ありますので、できれば使いたくないです(^^;)   余談ですが、そのトラブルを解決するために悩んだり、コードが   複雑になってしまった、、、なんて経験が過去にあります、、、 また、VBA に慣れてくると分かると思うのですが、値のみの複写なら Paste メソッドで貼り付けるよりもセルに値を指定(転記)してやる方が高速です。 (A) A1 の値を B1 の値に直接代入 Range("B1").Value = Range("A1").Value したがって、例えばフォント色や背景色・罫線といったセル書式も複写する必要があるとき以外、、、つまり値だけを複写したい場合は Paste メソッドは通常(私は)使いません。 一方、同様の結果を Paste メソッドで得るには次のようになります。 (B) Paste メソッド(または PasteSpecial メソッド) Range("A1").Copy Range("B1").PasteSpecial Paste:=xlPasteValues 後者(B)の場合、貼り付けの事前に A1 セルの書式や値をクリップボードに転送する Copy メソッドが必要ですが、この分処理速度でロス(最も極わずかな時間ですが)しています。 また、コピー元と貼り付け先の領域が異なるとエラーになるかもしれません。 前者(A)の場合、Copy メソッドは不要です。単純にセルの値を指定(転記)しているだけなので、処理対象となるセルがセル結合「している・してない」は問題になりません。 当初のご質問から少しはずれていますが、この方法で今回のトラブルは回避できると思います。

PYTHON357
質問者

お礼

ありがとうございました。 エラーは回避出来ました。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

>エラーの出ない端末もあります。 端末ということで、ネットワークの共有フォルダにExcelファイルをおいて使用しているのだと考えました。 >ログインユーザーが Admini権限じゃないとか? Workbooks.Open FileName:= CSVファイルのフルパス で CSV が開けているならアクセス権は問題なさそうです。 ありがちなトラブルとして、開発機で設定したリンクが「ネットワークドライブ」のドライブレター( E:\ とか F:\ とか)を含む場合、そのほかの端末でリンクエラーになる(ドライブレターが違うため)、、というのがあります。 Microsoft の サポート情報を調べてみましたが、それらしいものは見つかりませんでしたので、これ以上はわかりません。 ところで、リンク貼り付けでなければダメなのですか?値の転記では?

PYTHON357
質問者

補足

>端末ということで、ネットワークの共有フォルダにExcelファイルをおいて使用しているのだと考えました。 ではありません。 Cドライブに特定の名前のフォルダを作成し そこにCSVを作成し、開いて その値を複写、コピーしてます。 そのパソコンのユーザしか使用しません。 >ありがちなトラブルとして、ドライブレターが違うため ドライブレターは固定です。 >ところで、リンク貼り付けでなければダメなのですか?値の転記では? リンク貼り付けには,こだわりません。 ただし一つのセルから結合セルに情報が 移せる事が条件です。 ところで、値の転記 って どうゆう記述の事ですか?

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

>ActiveSheet.Paste Link:=True (ここでエラーが出る) どんなエラーですか? >同じ WinXP(PRO)+ EXCEL97でも >エラーの出ない端末もあります。 XPの共有フォルダアクセス権の問題っぽい?

PYTHON357
質問者

補足

>どんなエラーですか? 実行時エラー'1004' データを貼り付け出来ません。 >XPの共有フォルダアクセス権の問題っぽい? ログインユーザーが Admini権限じゃないとか?