• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA コピー貼付時にPC違いでエラーが出る場合)

VBA コピー貼付時にPC違いでエラーが出る場合

このQ&Aのポイント
  • VBAコピー貼付時に特定のPCでエラーが発生する場合があります。
  • マクロ実行時にエラーメッセージ「この操作には同じサイズの結合セルが必要です。」が表示されるPCがあります。
  • 貼付対象のセルは書式設定がされておらず、手動での貼り付けは可能ですが、マクロではエラーが発生します。

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

  • ベストアンサー
回答No.4

#2の回答者です。 >片方でExcelのバージョンを確認すると、「Office 2003 SP3」と記載があり、 >片方のPCでは、「Office 2003」と記載があります。 Excelそのもののバージョンよりも、一種のバグのようなものだと思いますが、それをBugFix しているかは分かりません。つまり、「結合セル」に関わるBugFixは、ほとんど手が付けずに、サポートでは、仕様として返事していたような気がします。 私自身が再現できる所をみると、SP3とかは関係ないような気もします。 私のマクロのコードのどこでエラーが発生したかは分かりませんが、値貼り付けで、"PasteSpecial" は、実際の場では、あまり使われない方法であることは間違いありません。 シート自体を換えてしまった方がよいかもしれません。Excel 2003などのバイナリファイルは、シートの内部に様々な記録を残していますが、それは、更新されずに、ずっと残ったままです。だから、同じ問題は続いているのかもしれません。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.3

No.1です。 OSのバージョンは関係なし。 Excel2000,Excel2002,Excel2003,Excel2007,Excel2010では、 範囲のコピーを貼付する場合、微妙に異なる仕様となっているということです。 例えば、Excel2003では貼付する範囲の最左上セルをクリックしても貼付出来ますが、 Excel2002では最上行をクリックして貼付する仕様になっています。 また、Excel2000では同範囲をクリックして貼付します。 貼付方法の仕様(全て、値のみ、数式のみ、書式のみetc)によっても 貼付の際の範囲選択が異なります。

kanpei34
質問者

お礼

ご連絡、有難うございました。 Excelのバージョンは、Office2003です。 いずれも同じメディアからインストールしました。 片方でExcelのバージョンを確認すると、「Office 2003 SP3」と記載があり、 片方のPCでは、「Office 2003」と記載があります。 インストールした後のアップデートで、2台のPCにて差が出たのでは? と思います。 アップデート等を行ってみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

>マクロ実行時に、PCによりエラーが出る場合があります。 それは、可能性は少ないです。 >セルの状態を見ると、貼付対象のセルは書式設定は無く、貼付可能です。 こちらでも、その現象は再現できました。不思議な現象です。貼り付け先のシート結合セルを取り去っても、結合セルの痕跡が残るようです。 昔の記憶で不確かですが、こんなスタイルで解決できたはずです。他のオプションが必要でしたら、付け加えてください。  Range("J36:S57").Copy  With Worksheets(My_name).Range("L19")   .PasteSpecial Paste:=xlPasteAll   .PasteSpecial Paste:=xlPasteValues  End With

kanpei34
質問者

補足

WindFallerさん、コメント有難うございます。 ご指摘の通り、ソースを変更してみました。 結果はプロパティの条件が悪いのか、エラーが出ました。 再度、調べてみます。 有難うございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

コピー貼付時にエラーが出る原因は、 Excelのバージョンよって貼付方法が異なる仕様になっているためです。 このトラブルは解消不能です。 よって、 [コピー&貼付時]を[データ取得&データ書込]とする発想の転換をお勧めします。

kanpei34
質問者

補足

YON56さん、コメント有難うございます。 Excelバージョンの確認をしたところ、違っていました。 正常に動作するPCでは、SP3と記載が有り。エラー発生端末では、表示されていません。 OSは、WinXP SP3となっています。 何かアップデートが必要なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗

    マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。 マクロの内容は、任意の範囲をコピー、新規book追加し、 新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。 いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。 下記にマクロ内容全部記載します。 よろしくお願いします。 ********************************************************* ********************************************************* Sub 日報別ファイルに保存したい1() Worksheets("日報").Range("A3:AF36").Copy With Workbooks.Add Cells.Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Cells.Select Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Range("A1").Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False ApplicationDisplayAlerts = True '同名FILEが存在する場合' ActiveWorkbook.SaveAs Filename:= _ "c:\日報\" & ActiveSheet.Range("J2") & "年" & ActiveSheet.Range("l2") & "月" & ActiveSheet.Range("n2") & "日_日報.xls" _ , FileFormat:=xlNormal .Close file End With End Sub

  • コピーと貼付

    既存のデータはA~Y列まで入力されています。 新規のデータはA~W列までとなっています。 既存のX行には日付をいれてあり、新規データのX列に次月の1日(ついたち)を入力したい。 とりあえずは、1行下に日付を入力したマクロを組んだのですが、その後50行前後もコピーし貼付したいのですが、範囲の選択がうまく出来ません。 途中のセルから最終行のセルの範囲選択のマクロを教えてもらえないでしょうか。 ※Y列はダブルクリックコピーで問題ないので大丈夫です。 例   A列・・・・・・    X列      Y列(検索の関数が入っています) 1  ABC・・・・・・   2011/6/1    1    ※既存のデータ 2  DDD・・・・・・   2011/7/1         ※新規データの1列目 3  FFF・・・・・・   (      )                4  GGG・・・・・・   (      ) 5   ・ 6   ・ 7   ・ 8   ・ 50 ZZZ・・・・・・   (       ) 新規の2列目以降に、新規で作成した日付をコピーし貼付したい。 上記までのマクロを参考に送ります。 教えて下さい。 Sub test() Dim MaxRange '最終行番号 MaxRange = Range("X3").End(xlDown).Row '最終行の設定 Range("X3").Select Selection.End(xlDown).Offset(1, 0).Select 'X列の最終行+1行目を選択 ActiveCell.FormulaR1C1 = "=EDATE(R[-1]C,1)" '同セルに関数入力 Range("X" & MaxRange - 1).Copy '書式の変更(変更前の最終行よりコピー・貼付) Range("X3").Select Selection.End(xlDown).Offset(0, 0).Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Range("X3").Select '追加したセルの関数を値に変更 Selection.End(xlDown).Offset(0, 0).Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub

  • 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位まで変動します 一連の動作をコピーして手作業で数字を変えてみたのですが プロージャが大きすぎてエラーになってしまいます。 何か良い方法は無いでしょうか?。

  • 【Excel VBA】シートコピー時、マクロコードはコピーしたくない

    ws.copy Before:=Workbooks(File).Sheets(1) Windows(File).Activate Cells.Select Selection.copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 上記コードで、シートのコピー・貼付を行っていますが、 コピー元シートのコードも引き継がれてしまいます。 引き継がれないようにコピーしたいのですが、可能でしょうか? 可不可について、 可能ならばそのやり方(コード)を教えていただけないでしょうか? よろしくお願いします。

  • 色々なものを見ながら作っている初心者です。

    色々なものを見ながら作っている初心者です。 よろしくお願いします。 VBAでのエラー対処について 下記のマクロを実行すると、実行時 「Selection.Resize(, Selection.Columns.Count - 2).Select」のところで セルがブランクだった時にエラーが出てします。 対処の方法を教えていただけませんでしょうか? よろしくお願いします。 Sheets("sheetB1").Select Range("A7:C161").Select Application.CutCopyMode = False Selection.ClearContents Sheets("sheetA").Select Range("D12").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToLeft)).Select Selection.Resize(, Selection.Columns.Count - 2).Select Selection.Offset(0, 1).Select Selection.Copy Sheets("sheetB1").Select Range("A7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("sheetA").Select Range("E12").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("B1").Select Range("C7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("sheetB2").Select Range("A7:C161").Select Application.CutCopyMode = False Selection.ClearContents Sheets("sheetA").Select Range("J12").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToLeft)).Select Selection.Resize(, Selection.Columns.Count - 2).Select Selection.Offset(0, 1).Select Selection.Copy Sheets("sheetB2").Select Range("A7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("sheetA").Select Range("K12").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("steetB2").Select Range("C7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=Fals

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • EXCEL VBAで複数行のコピー(バックグランド)

    EXCELのVBAで質問します。 複数行をコピーしてPasteを行う方法がわかりません。 フォアグランドでは正しく実行できるのですが、バックグランドで実行した場合は、1行しかPasteできません。 お分かりの方いらっしゃれば教えてください。 コードは以下のとおりです。 Sheets(\"DATA\").Select Range(\"A3:W26\").Select Selection.Copy Range(\"A4\").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True 宜しくお願いします。

  • 指定セルをコピー

    A2~A5,D2~D5,G2~G5をコピーしJ~P列2~5行に値を貼付け続いて9~13行、16~20行もJ~P列に貼り付けたいのですが7~8,14~15行にはセル結合されているところもあります。VBAで下記コードを入力しましたがあまりにデータが多く何か良い方法VBAコードはありますか。(For~Nextなど使用すれば良いのでしょうか) 環境はoffice2013です。 Range("A2:A6").Select Selection.Copy Range("J2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("D2:D6").Select Selection.Copy Range("M2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False  Application.CutCopyMode = False

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • セルにデータ有無でマクロ自動に起動する方法

    エクセル セル A1 に品目コードを貼付けた瞬間に特定のマクロが起動する方法を教えてください。 セルA1 に C-GS5U0001 を貼付 セルB1 に A1を参照するVlookupがある。 せるC1 に B1をテキスト文字に変換する。 C1用のマクロは Range("B1").Select Selection.Copy Range("C1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub セルA1にデータをいれたらC1に関数引当て無しのテキストにしたいのです。

専門家に質問してみよう