マクロで値の貼り付けができなくなった理由は?

このQ&Aのポイント
  • 値の貼り付けマクロが突然動作しなくなりました。昨日までは問題なく使用できていたのに、なぜか今日からうまく動かない状態です。他のマクロやコピーアンドペーストは正常に動作していますが、このマクロだけがうまくいきません。何度か再作成してみましたが、改善されませんでした。セキュリティ設定も下げた状態で試しています。なぜマクロが動作しないのでしょうか?
  • マクロを使って値の貼り付けを行おうとしたところ、なぜかうまくいきません。昨日までは正常に動作していたのに、突然動かなくなりました。他のマクロやコピーアンドペーストは問題なく使えているので、このマクロに何か問題があるのか疑っています。セキュリティ設定は下げた状態で試していますが、改善されません。マクロが動作しない原因は何でしょうか?
  • 値の貼り付けを行うマクロが正常に動作しなくなりました。昨日までは問題なく使用できていたのに、なぜか今日からうまくいきません。他のマクロやコピーアンドペーストは問題なく行えているので、このマクロに何か問題があるのか疑っています。セキュリティ設定は下げた状態で試していますが、改善されません。マクロの動作が停止する原因は何でしょうか?
回答を見る
  • ベストアンサー

値の貼り付けマクロが出来なくなりました。

http://kokodane.com/macro17.htm 頻繁に、形式を選択して貼り付けで「値の貼り付け」を行うため、 上記のサイトを参考にしてマクロを作成しました。 コードは Sub 値の貼り付け() ' Keyboard Shortcut: Ctrl+t '   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _     SkipBlanks :=False, Transpose:=False End Sub です。 それが昨日のことなのですが、そのときはうまくマクロが動作して、 データを貼り付けることが出来ていたのですが、 今日やってみるとなぜかうまくいきません。 特に何か設定は変えていません。 セキュリティは下げた状態にしてあり、他のマクロは通常通り使えています。 コピーペーストは普通に行えています。 なぜなんでしょうか? 何度かマクロを作成しなおしてみたりもしたのですが、 どうやってもうまくいきません。 どなたか理由を教えて下さい。

  • YURUE
  • お礼率18% (72/379)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#2の回答者です。 >一体全体、何が原因なのでしょうか? >私はVBA自体はこれまでにかなり経験があり、PERSONAL.xls上にも どのぐらいの技術を持っているか分かりませんが、方法としては、ブレイク・ポイントを設けたり、以下のようにしてみたら良いと思います。 Sub tPasteMacro()   If Application.CutCopyMode = False Then    MsgBox "CutCopyModeがTrueになっていません。",48    Exit Sub   End If   If TypeName(Selection) = "Range" Then    Selection.Cells(1).PasteSpecial Paste:=xlPasteValues, _    Operation:=xlNone, _    SkipBlanks:=False, _    Transpose:=False   Else    MsgBox "貼りつけはセルに限ります。"   End If End Sub コピーモードが外れているのでは? これで分かるはずです。うまく行かない理由は、イベントの SelectionChangeやCalculateが走っているようです。 当面、今までの登録しているマクロを、一つずつ、すべて調べなくてはなりません。この種のマクロは、本当は直したほうが良いのですし、直せば、当然、今回のような問題は発生しないのですが、この機に、とりあえず、今回の問題の大元の部分は、クリアしないとコードを直しても、おそらく他の問題に派生します。たぶん、個別のブックに登録してよいものと、そうでないPersonal.xlsに入れるものとが一緒になっているような気がします。

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

Excel2003まではヘルプメニューからバージョン情報,Excel2007以降ではOfficeボタンからExcelのオプションのアドインの管理の項目,で「使用できないアイテム」を確認し,もしPERSONAL.xlsが捕らわれていたら使用できるようにしてからエクセルを再起動して試してみてください。

YURUE
質問者

お礼

皆さん回答ありがとうございます。 書くのを忘れていましたが、バージョンは2003です。 No1さんへのお礼にも書いていますが、 最初はPERSONAL.xlsにマクロを登録したのですが、その状態ではなぜか Selection.PasteSpecial Paste:=xlPasteValues の記述が動作しないことが分かりました。 そこで個々のブックに登録してみたところ普通に使えることが判明しました。 No.2さんが書かれているコードも個々のブックに登録すれば使用することが出来るのですが PERSONAL.xlsに登録した場合だとPERSONAL.xlsのシート上であっても使うことが出来ません。 また、No.4さんが仰っている「使用できないアイテム」も確認してみましたが、 特に何も登録されていませんでした。 PERSONAL.xlsで、例えば、 Sub Macro2() ActiveCell.FormulaR1C1 = "r" End Sub のような簡単なコードが書いて実行してみましたが、こういうものなら普通に実行出来るようです。 理由は分かりませんが、PERSONAL.xls上では Selection.PasteSpecial Paste:=xlPasteValues のコードだけが無効化されているように思います。 もちろん、マクロを使わずに編集⇒形式を選択して貼り付け は普通に実行出来るため、マクロ側だけの問題のようです。 また、ちなみに私はVBA自体はこれまでにかなり経験があり、PERSONAL.xls上にも 既に他にいくつかプログラムを登録してあります。 しかし、基本的に数値計算にしか使わないので、 今回のようなExcelの動作を記述するのは初めてでした。 一体全体、何が原因なのでしょうか?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

操作のところで何もしないで、記録を終了し、空のマクロの記録を採る。Ctrl+tが関連付けられた空のマクロである。 その際に、マクロの保存先を「マクロの記録」ダイアロウグで「個人用マクロブック」にする。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2011/1/19 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+t ' End Sub となる。 ーー ここに1行追加して Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2011/1/19 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+t ' 値の貼り付け End Sub とする。 すなわちコード作成済みの、質問のマクロを呼び出す「値の貼り付け」の一行を挟む。 そして「値の貼り付け」のコードを「個人用マクロブック」に入れる。 それには、VBAProjectの「Personal.xls」の標準モジュールModule1に「値の貼り付け」のコードを貼り付ける。 マクロの記録で「個人用マクロブック」を指定したから、VBAProjectで「Personal.xls」が現れると思うからそこの Module1に「値の貼り付け」のコードも入れる。 ーー これで新しい白紙のブックを開いても、既存のブックを開いてでも、値だけをコピーしたいセル範囲をコピーし、何処かのセルを選択して、CTRL+tで値だけ張り付くと思う。 ーー 保存時に個人用マクロブックについて、注意コメントが出るかもしれないが、「はい」ですすむ。 ーー 参考 http://allabout.co.jp/gm/gc/297809/ http://allabout.co.jp/gm/gc/297809/2/ http://kokodane.com/mini_macro4.htm

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

それだけの情報では、はっきりとしたことは言えませんが、もともと、そのお書きになっているマクロは、練習用のものだと思います。リンク先のWebサイトのマクロコードは、記録マクロによるもので、本格的なマクロとは言えません。 #1さんのご指摘のように、個々のブックに貼りつけた可能性があります。 その登録したブックを開かないと動かない可能性が強いです。 他にも、原因はありますが、まだ、マクロの練習中で、そのような問題は発生する可能性は少ないです。 例えば、常時使う場合は、個人用マクロブックの「標準モジュール」に以下のようなものを登録する必要があります。以下は。サンプル・マクロです。最初に、Copy(Ctrl + C)をしないと、貼りつけしないようになっています。Auto_Openは、起動時に設定されるマクロです。 '標準モジュール Sub Auto_Open()  'Shortcut: Ctrl+t  Application.OnKey "^t", "tPasteMacro" End Sub Sub tPasteMacro()   If Application.CutCopyMode = False Then Exit Sub   If TypeName(Selection) = "Range" Then    Selection.Cells(1).PasteSpecial Paste:=xlPasteValues, _    Operation:=xlNone, _    SkipBlanks:=False, _    Transpose:=False   Else    MsgBox "貼りつけはセルに限ります。"   End If End Sub なお、キーの設定を外す場合は、 Application.OnKey "^t" このようにすると外れます。

回答No.1

回答ではありません。m(_ _)m ユーザー設定のコマンドボタンでテキストを表示させると[Alt]+[P]で値の貼り付けができます。 添付図参照 >今日やってみるとなぜかうまくいきません。 うまくいかないとは、 ・エラーが出る ・何も起こらない。 ・意図する結果にならない ・その他 また、そのマクロは、どこに保存したのでしょうか? (たぶん、「個人用マクロ ブック」だったら良さそうなんだけど) 実行方法もいくつかありますが、どのようにして実行したのでしょうか? 具体的にお願いします。

YURUE
質問者

お礼

ありがとうございます。 何も起こらない。 が返答です。 保存した場所はPERSONAL.XLSのマクロブックです。 これは、「個人用マクロ ブック」と同じことですよね? PERSONAL.XLSではなく、現在開いているファイルのマクロブックに保存すると なぜかうまく実行できます。 PERSONAL.XLSのマクロを動作させるためにはどこかの設定を変える必要があるということなのでしょうか?

関連するQ&A

  • Excelで複数のマクロを一本化する方法

    Macro5とMacro6を組み合わせて下記のような処理をさせたいのですが方法がわかりません。 お知恵をお貸しください。 1 日付を確認する 2 Macro6でコピー 3 日付にあわせてMacro5で貼り付け   今日が1日ならC14から貼り付け   2日ならC25から貼り付け   3日ならC36から貼り付け    ・      ・    ・   31日ならc344から貼り付け 作成したマクロ ' Macro5 Macro ' マクロ記録日 : 2007/4/25 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+r ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub Sub Macro6() ' Macro6 Macro ' マクロ記録日 : 2007/4/25 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+q ' Range("C2:AD12").Select Selection.Copy End Sub

  • Excel 2007 マクロ 表の貼り付け

    Excel 2007 マクロ 表の貼り付け Excel 2007 マクロ 表の貼り付けについて教えてください。 <Sheet1>の表にあるA2からD4を <Sheet2>に値貼り付けをします。 表は画像を添付します。 マクロの記録では下記内容になります。 Sub Macro1() ' ' Macro1 Macro ' ' Range("A2:D4").Select Selection.Copy Sheets("Sheet2").Select Range("A2:D4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub <Sheet1>のA列の行の増減にかかわらず、<Sheet2>に貼り付けることができるように するにはどのようにマクロを修正すればよろしいでしょうか。

  • マクロ

    値のみを貼り付けることが多いので、形式を選択して値のみを、貼り付けるを自動マクロで記述しましたが、エラーが出てしまいます。 下記が記述しましたマクロです。 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False どこが間違っているのか判りません。 ご指導のほどよろしくお願いいたします。

  • エクセルVBAで値の貼り付けができない

    色々調べたのですが、出来ない理由が見つけられません。よろしくお願い致します。 計算式の入っているセルをマクロで貼り付けしようと思っているのですが、 貼り付ける際、値の貼り付けにしたいのです。 下記の通りすると計算式のまま貼り付けされてしまいます。 どなたか教えて下さい。お願い致します。 Selection.Copy wsKei.Select wsKei.Range("A" & intLinekeistr & ":A" & intLinekei - 1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False エクセルは、2007 PCはvistaです。

  • エクセルのマクロ 選択したセルを指定した範囲へ値貼

    お世話になります。 自動記録したものをどのように修正したら、実行時に選択しているセルの値を、3行下、1つ左のセルから8行目までに貼り付けることができるよう書き変えられますでしょうか。 初心者で何に手を付けて良いのか分からず。どなたかご教示いただけませんでしょうか。どうぞよろしくお願い致します。 Sub 選択したセルを指定した範囲へ値貼り付け() ' ' Macro1 Macro ' ' Range("I9").Select Selection.Copy Range("H12:H19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub

  • エクセルでVBAショートカットを作成したいです

    エクセルVBAを使用して、ショートカットキーを作成したいです。 ネットで調べてみた情報を元に、以下のようにマクロを作成しましたが、動作しません。 (やろうとしているのは、Ctrl+Shift+V で値で張り付け です) どのように直したら動作するか教えて頂きたいです。 以下、作成したマクロです。。。 ---------------------------------------------------------------------- Sub auto_open() Application.OnKey "+^V", "値で張り付け" End Sub Sub 値で張り付け() Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub ----------------------------------------------------------------------

  • Excelのマクロ(VBA)について教えてください。

    このようなマクロをつくりたいのですがうまく作れません。 セルをコピーした後、貼り付け先のセルを選択して、 <ここからがマクロ> 形式を選択して貼り付け→罫線を除くすべて <マクロ終了> 他の貼り付け方法はうまくできるのですが、「罫線を除くすべて」だけができません。 参考までにこれが作られたVBAです。 Sub Macro1() Selection.PasteSpecial Paste:=xlAllExceptBorders, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub 以上です。 どなたかアドバイスよろしくお願いします。

  • 「罫線を除く全ての貼り付け」をマクロ化したい

    「罫線を除く全ての貼り付け」をマクロ化したいと思いマクロの記録をすると、 Selection.PasteSpecial Paste:=xlAllExceptBorders, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False のようなマクロができあがるのですが、これを実行すると RangeクラスのPasteSpecialメソッドが失敗しましたと出て実行できません。 どうも形式を選択して貼り付けが全てそのようになるようです。 原因と解決方法がわかる方いらっしゃったらお願いします。

  • 値の貼り付けをするVBA

    セルA1をコピーして、セルA2に値の貼り付けをするVBAを作っています。 下記のように記述しているのですが、 セルA2に値の貼り付けをするときに小数点第3ケタ目以下はデータを捨てることは出来ますでしょうか? セルの設定で小数点2桁目まで表示するのではなくて、セルに入力するデータを小数点2桁の数字にしたいです。 range("A1").Copy Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

  • Excelでマクロを繰り返したい。

    Excelでマクロを記録したら以下のようになりました このマクロを以下の条件で繰り返したいのですが。 Sub Macro1() '------------- '----------------------- ' Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=5*", Operator:=xlAnd, _ Criteria2:="<>5@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=6*", Operator:=xlAnd, _ Criteria2:="<>6@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=7*", Operator:=xlAnd, _ Criteria2:="<>7@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=8*", Operator:=xlAnd, _ Criteria2:="<>8@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 条件= Field:は4~35位まで変動します 一連の動作をコピーして手作業で数字を変えてみたのですが プロージャが大きすぎてエラーになってしまいます。 何か良い方法は無いでしょうか?。

専門家に質問してみよう