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も見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
【お題】逆襲の桃太郎
【大喜利】桃太郎が1回鬼退治に失敗したところから始まる新作昔話「リベンジオブ桃太郎」にはこんなシーンがある
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
access2000:フォームで入力した内容を新規レコードにコピー
その他(データベース)
-
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
-
access2010 コマンドまたはアクション''は無効です。について
その他(ソフトウェア)
-
-
4
Accessでレコードの複製
Access(アクセス)
-
5
Access VBA acCmdSelectRecordについて
その他(データベース)
-
6
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
7
Access サブフォームでの選択行の取得
その他(データベース)
-
8
AccessでIDを入力したら他の項目も自動で表示
Access(アクセス)
-
9
Returnに対するGoSubがありません
Access(アクセス)
-
10
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
11
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
12
Accessでコードを入れると名前がでるようにしたい
Access(アクセス)
-
13
Microsoft Access 2016でエラーが出る
Access(アクセス)
-
14
メインフォームとサブフォームのレコードを複製
Access(アクセス)
-
15
Accessのサブフォームから値を参照する方法について
その他(データベース)
-
16
Accessで文字列の長さによって、フィールドの幅を自動で合わせる方法
Excel(エクセル)
-
17
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
18
ACCESS フォームをそのまま印刷について
その他(データベース)
-
19
アクセス 前レコード内容を、新レコードにコピー
Access(アクセス)
-
20
AccessのフォームのテキストボックスにLOOKUPで表示したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
docmd.gotorecordを起動するには
-
Accessフォームで詳細内の任意...
-
AccessのRefresh・Requery・Rep...
-
ACCESS 複数のフォームから同一...
-
MSAccess ロック状態かどうかを...
-
ACCESSフォーム入力後の確定
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
Accessでデータを更新したらそ...
-
Access2000、これはいったい・...
-
ACCSESS2013VBA フォームのレコ...
-
「パラメータが少なすぎます。3...
-
X-Ripperというフリーウェアに...
-
インデックスまたは主キーにはn...
-
Accessのコンボボックスでリス...
-
【AccessVBA】レコードセットOp...
-
Access2000 サブフォームのReco...
-
エクセル VBA メール本文に指定...
-
access別のテーブルを参照して...
-
Access 複数フォームを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 複数のフォームから同一...
-
Accessでレコードの複製
-
ACCESSフォーム入力後の確定
-
Accessフォームで詳細内の任意...
-
AccessのRefresh・Requery・Rep...
-
accessでオートナンバーを使わ...
-
Accessで経過日付に応じて色を...
-
アクセエスのレコードの更新をV...
-
access の 最終レコードの判定...
-
MS.Access でサブフォーム付の...
-
DoCmd.SearchForRecord が動か...
-
Accessの「Form_AfterUpd...
-
アクセスで複数レコードを1レ...
-
ファイルメーカーで重複してイ...
-
禁止文字をエクセルかアクセス...
-
ファイルメーカーProでレコード...
-
二つ以上あるものだけを抽出し...
-
AccessVBA フィルタとカレント...
-
アクセスのフォームビューの帳...
-
MSAccess ロック状態かどうかを...
おすすめ情報