

Accessで、ボタンをクリックすると
表示させているレコードをコピーして複製したいです。
以下のようにコードを書いてみたのですが、
「コマンドまたはアクション”追加貼り付け”は無効です」
となってしまいます。
DoCmd.RunCommand acCmdSelectRecord 'レコードの選択
DoCmd.RunCommand acCmdCopy 'コピー
DoCmd.RunCommand acCmdRecordsGoToNew '新規レコードへ
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdPasteAppend '追加貼り付けを実行
ちなみに
DoCmd.RunCommand acCmdPasteAppend
を
DoCmd.RunCommand acCmdPaste
に修正しても
「コマンドまたはアクション”貼り付け”は無効です」
となって、エラーになってしまいます。
そこで、以下のようにコードを省略して
DoCmd.RunCommand acCmdSelectRecord 'レコードの選択
DoCmd.RunCommand acCmdCopy 'コピー
DoCmd.RunCommand acCmdRecordsGoToNew '新規レコードへ
DoCmd.RunCommand acCmdSelectRecord
ここで、手動で、ctrl+Vをすると、レコードのコピーができます。
コードの書き方が間違っているのでしょうか?
ご教授よろしくお願いいたします!
No.8ベストアンサー
- 回答日時:
#4です
> いただいたページを見てみると、
> サブフォームのコピーでエラーになるとのこと。
> 私の場合はその前の段階の、メインフォームのレコードのコピーでつまづいております・・・。
参照先の処理(AccessClub の方)は
・メインをコピーした後で
・サブフォームの元テーブルに対して該当レコードをコピー
という流れになっています。
メインをコピーする
> メインフォームのレコードを新規レコードにコピーする
> DoCmd.RunCommand acCmdSelectRecord 'カレントレコードの選択
> DoCmd.RunCommand acCmdCopy '選択レコードのコピー
> DoCmd.GoToRecord , , acNewRec '新規レコードに移動
> ' DoEvents ' (必要に応じて)
> DoCmd.RunCommand acCmdPasteAppend 'コピーレコードの追加貼り付け
>
> DoCmd.RunCommand acCmdSaveRecord '保存
部分について、みてもらいたかったのですが・・・
で、上記の DoEvnts 部分を有効にしてみてどうなりますか?
(あれを確認していた際、2007 で、その時の最新状態になっていたと思います)
たびたびありがとうございます!
昨日
> ' DoEvents ' (必要に応じて)
を書き加えてやってみたのですが、
できなかったと思ったら・・・
有効にする( ' をはずす)のを忘れていたようです!
意味ない!
よく確認せずできないと答えてしまって申し訳ありませんでした。
おかげさまでやっとのことでめでたく
メインフォームのコピーができるようになりましたので
サブフォームのコピーのほうへうつりたいと思います。
教えていただいたサイト参考にします!
大変失礼しました&ありがとうございました!!
No.9
- 回答日時:
すみません、もうちょっと補足しておきます。
■Access97の書き方。
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70
Access2007で動作しても、これは邪道ですが・・・。
■DAOの一例。
現実問題は、主キーをカウントアップしたり複製にも色々と操作が必要。
ですから、DAO(ADO)による複製もありかと・・・。
Private Sub コマンド11_Click()
On Error GoTo Err_コマンド11_Click
Dim I As Integer
Dim J As Integer
Dim Datas As String
Dim rst As DAO.Recordset
' -----------------------------------
' Recordset の作成
' -----------------------------------
Set rst = Me.Recordset.Clone
' -----------------------------------
' Datas へのフィールドデータの代入
' -----------------------------------
J = rst.Fields.Count - 1
For I = 0 To J
Datas = Datas & rst.Fields(I).Value & "|"
Next I
' -----------------------------------
' データの複製
' -----------------------------------
rst.AddNew
For I = 0 To J
rst.Fields(I).Value = CutStr(Datas, "|", I + 1)
Next I
rst.Update
' -----------------------------------
' フォームの更新
' -----------------------------------
Me.Requery
' -----------------------------------
' Recordset の破棄
' -----------------------------------
rst.Close
Set rst = Nothing
Exit_コマンド11_Click:
Exit Sub
Err_コマンド11_Click:
MsgBox Err.Description
Resume Exit_コマンド11_Click
End Sub
Public Function CutStr(ByVal Text As String,
ByVal Separator As String,
ByVal N As Integer) As String
Dim strDatas() As String
strDatas = Split("" & Separator & Text, Separator, , 0)
CutStr = strDatas(N * Abs(N <= UBound(strDatas)))
End Function
何度もありがとうございます!
>DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
>DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
>DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70
上記の方法はうまくいきませんでした・・・。
同じエラーが出てしまいました。
DAOは使ったことがなくて、未知の世界ですが
色々検索してるとよく出てくるので、いつかは勉強すべきだと思っています。
今後の参考にさせていただきます。
何度もご回答いただきありがとうございました!
No.7
- 回答日時:
ネット上で散見される対策は、
1、パッチ。(Access2007)
2、runCommandを使う(AccessXXXX)
3、手法を変える。
この3つのようです。
3の最も原始的な方法は、
1、変数にデータを代入。
2、新規レコードへ移動。
3、フォームの各フィールドへ変数を代入。
3の最も根本的な解決方法は、
複製関数の自作。
祈、1での解決。
No.6
- 回答日時:
2007 を 導入したころ、この手のエラーに悩まされた記憶がありますが、
最近、なくなりました。
サービスパックを当ててみたらいかがですか?
現在はエラーの再現はできないのですが、
レコードを選択するとトラブルが起きた、と記憶しています。
単純に、
DoCmd.RunCommand acCmdSelectRecord 'レコードの選択
DoCmd.RunCommand acCmdCopy 'コピー
DoCmd.RunCommand acCmdPasteAppend '追加貼り付けを実行
ではどうなりますか?
ありがとうございます!
いただいたコードでやってみましたが同じエラーが出ました。
>サービスパックを当ててみたらいかがですか?
すみません、詳しくなくてこの作業がよく分からないのですが・・・
どうやったらいいんでしょうか?
参考サイト等あれば教えていただけるとうれしいです。
また、私がAccessで作成したシステムを、社内に配布しています。
その場合、全員がこの
>サービスパックを当てる
作業をしなければならないんでしょうか??
Access自体の問題となれば、諦めるしかないんでしょうか。。。
No.5
- 回答日時:
Option Compare Database
Private Sub コマンド10_Click()
On Error GoTo Err_コマンド10_Click
RunCommand acCmdSelectRecord 'レコードの選択
RunCommand acCmdCopy 'コピー
RunCommand acCmdRecordsGoToNew '新規レコードへ
RunCommand acCmdSelectRecord
RunCommand acCmdPasteAppend '追加貼り付けを実行
Exit_コマンド10_Click:
Exit Sub
Err_コマンド10_Click:
MsgBox Err.Description
Resume Exit_コマンド10_Click
End Sub
を試してみてください。
何度もありがとうございます!
コマンド名を「コマンド10」とし、
そのままコピペしてみましたが、だめでした・・・。
また何かお気づきの点ありましたらお願いいたします!
No.4
- 回答日時:
以下、参考にならないかもですが
Access2003にて、メインフォーム上に設置した「コピー」ボタンを
http://oshiete.goo.ne.jp/qa/6134714.html
の内容と、
そこに書かれているマルチ(リンクが切れたみたい)元である
No77233.サブフォームのレコードのコピーができない
http://www.accessclub.jp/bbs/0240/beginers77233. …
に書かれている内容で解決できますか?
(新規レコードへ行く時の記述は違いますけど)
後者での確認時(記事No : 77362 )メイン貼り付け時に 2046 のエラーになった・・・・
これが、質問者さんが言われている
> 「コマンドまたはアクション”追加貼り付け”は無効です」
であれば、
貼り付け前に、DoEvents を入れてみるとか・・・・
ただ、その際に他のイベントを取る事があったら、いろいろ考えなくては・・・
上記参照先を読まれると、
もしかしたら質問者さんの前の質問も解決できるかも
ありがとうございます!
このエラーについてさんざんネットで検索してきましたが
見たことのないページでした!
いただいたページを見てみると、
サブフォームのコピーでエラーになるとのこと。
私の場合はその前の段階の、メインフォームのレコードのコピーでつまづいております・・・。
また何かお気づきの点ありましたら教えてください!
ありがとうございました!
No.2
- 回答日時:
Option Compare Database
Private Sub コマンド10_Click()
On Error GoTo Err_コマンド10_Click
'DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
'DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
'DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'c
DoCmd.RunCommand acCmdSelectRecord 'レコードの選択
DoCmd.RunCommand acCmdCopy 'コピー
DoCmd.RunCommand acCmdRecordsGoToNew '新規レコードへ
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdPaste '追加貼り付けを実行
Exit_コマンド10_Click:
Exit Sub
Err_コマンド10_Click:
MsgBox Err.Description
Resume Exit_コマンド10_Click
End Sub
これでOK!
添付写真を参照されてみてください。
PS、Accessのバージョンを明記されたらどうでしょうか?

ご回答ありがとうございます!
大変失礼しました。
Access2007を使用しています。
いただいたコードをコピペさせていただいたんですが・・・
やはり同じエラーが出てしまいまさいた。
また何かお気づきのことありましたらお願いいたします!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- ドメイン・サーバー・クラウドサービス 独自ドメインでのNSレコード設定 1 2023/07/12 18:36
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Excel(エクセル) エクセルVBA 作業後に選択範囲を解除する方法 5 2023/02/17 07:13
このQ&Aを見た人はこんなQ&Aも見ています
-
access2000:フォームで入力した内容を新規レコードにコピー
その他(データベース)
-
access2010 コマンドまたはアクション''は無効です。について
その他(ソフトウェア)
-
Accessでレコードの複製
Access(アクセス)
-
-
4
アクセス 前レコード内容を、新レコードにコピー
Access(アクセス)
-
5
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
-
6
Access サブフォームでの選択行の取得
その他(データベース)
-
7
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
-
8
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
9
ACCESS フォームをそのまま印刷について
その他(データベース)
-
10
角丸四角形を描きたい
Excel(エクセル)
-
11
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
-
12
ACCESS VBA 追加貼り付けが無効
Access(アクセス)
-
13
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
14
ACCESSのサブフォームコピーについて
その他(Microsoft Office)
-
15
メインフォームとサブフォームのレコードを複製
Access(アクセス)
-
16
Microsoft Access 2016でエラーが出る
Access(アクセス)
-
17
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
18
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
19
Accessでテーブルからテーブルにデータをコピーしたい
その他(データベース)
-
20
Access VBA acCmdSelectRecordについて
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのレポートに関して
-
access の 最終レコードの判定...
-
Accessでレコードの複製
-
ACCESS 複数のフォームから同一...
-
アクセスのコンボボックスの内...
-
access 自前でカレンダーを作...
-
OutlookExpressの特定フォルダ...
-
accessでパラメータをフォーム...
-
フィルタオプションの設定での...
-
Accessのマクロについて質問です。
-
Access 検索フォームの作り方...
-
アクセスのカレンダーコントロ...
-
エクセルで、抽出したデータだ...
-
ACCESS2000 テキストボックス...
-
助けてaccess!
-
CDexについて
-
アクセスの抽出について
-
リストボックスの複数選択について
-
関数 範囲内の個数を抽出する...
-
EXCEL VBA フォームクローズと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 複数のフォームから同一...
-
Accessフォームで詳細内の任意...
-
Accessでレコードの複製
-
accessでオートナンバーを使わ...
-
ACCESSフォーム入力後の確定
-
AccessのRefresh・Requery・Rep...
-
Accessで経過日付に応じて色を...
-
access の 最終レコードの判定...
-
MSAccess ロック状態かどうかを...
-
アクセエスのレコードの更新をV...
-
MS.Access でサブフォーム付の...
-
Accessの「Form_AfterUpd...
-
DoCmd.SearchForRecord が動か...
-
ファイルメーカーProでレコード...
-
Access 指定したレコードへ移動
-
ACCESS 単票形式フォームの新...
-
ファイルメーカーで重複してイ...
-
ファイルメーカーのレコード複...
-
AccessVBA フィルタとカレント...
-
アクセスで複数レコードを1レ...
おすすめ情報