ExcelのVBA について質問があります。
1つのブックの4つのシートに対して4回違うブックのシートからコピぺを繰り返そうと思っております。
Dim Wb1 As Workbook, Wb2 As Workbook, Wb3 As Workbook, Wb4 As Workbook
Dim FullPath1 As String, FullPath2 As String, FullPath3 As String, FullPath4 As String
Dim SourceRng1 As Range, SourceRng2 As Range, SourceRng3 As Range, SourceRng4 As Range
Dim TargetRng1 As Range, TargetRng2 As Range, TargetRng3 As Range, TargetRng4 As Range
Worksheets("kyu").Cells.Clear
Worksheets("nyu").Cells.Clear
Worksheets("gai").Cells.Clear
Worksheets("sesho").Cells.Clear
と、dimでの設定が4種類が4回、元のシートのクリアが4回なので、悩んだ挙句
Dim i As Integer
For i = 1 To 4
SourceRng(i).Copy
TargetRng(i).PasteSpecial Paste:=xlPasteColumnWidths
TargetRng(i).PasteSpecial Paste:=xlPasteValues
TargetRng(i).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
i = i + 1
Next
としました。
.PasteSpecial Paste:=pasteall ではないのは、行うと図にされて貼り付け先に貼り付けされてしまうからです。
結局のところ、Dimで指定した数字は(i)としてfor文で可能なのか
Worksheetsは.Cells.Clearでまとめて表現できるのか
.PasteSpecial Paste も短く表現できないか
浅学なので、全く解決策が見いだせません。現在は1から4まで直線的にコピペをVBAで行っております。
簡略化できると嬉しいです。
まずは可能かどうか、そして解決方法を教えていただけると嬉しいです
よろしくお願いいたします。
No.10ベストアンサー
- 回答日時:
>なぜかわかりませんが、動くようになりました
とりあえずOKとしますが、どうも、Dim Excel As New Application
のexcelを使用するのがまずいように思われます。
上記を使用しないバージョンを作成しましたので、こちらもお試しください。(当方の環境では正常に動作することを確認済みです)
画面に表示したくないブックがある為に、Dim Excel As New Application
を使用したかと思いますが、これを使用せずに、非表示にするようにしました。もし、ちらつきが気になるなら、現在のを採用してください。
下記にアップしました。
https://ideone.com/ikKSnB
尚、copyの後pasteするのではなく、直接コピーする
Private Sub copy_sheet2
を作成しました。
全てコピーでOKならこちらでも良いかと思います。
こちらを使うときは、
Call copy_sheet(Fullpath(i), Frsheet(i), mb, Tosheet(i))
を
Call copy_sheet2(Fullpath(i), Frsheet(i), mb, Tosheet(i))
にしてください。
追伸:
本マクロを格納してあるブックは、下記のブックとは別のブックであると理解していますが、あってますか。
配信スケジュール.xlsm
未納本文.xlsm
ワークシート.xlsm
No.7
- 回答日時:
>Private Sub copy_sheetの中にある、TargetRng.PasteSpecial Paste:=が
2つともエラーを起こし、コメントアウトすると完了まで行くのですが
成立させる対処方法はわかりますか?
こちらでは、正常に動作したので、問題ないと思っていましたが、
エラーメッセージは、どのような内容でしょうか。
No.6
- 回答日時:
>まずみたところフルパス FullPath1 = "D: はどのような設定ですか?
申し訳ありません。下記の行は、こちらで動作確認のために追加した行で
削除するのを忘れていました。下記の行は削除してください。
FullPath1 = "D:\goo\excel\goo446\配信スケジュール.xlsm"
FullPath2 = "D:\goo\excel\goo446\未納本文.xlsm"
FullPath3 = "D:\goo\excel\goo446\未納本文.xlsm"
FullPath4 = "D:\goo\excel\goo446\未納本文.xlsm"
No.4
- 回答日時:
>
https://ideone.com/AoYyhB>でよろしいですか?
上記URL参照しました。ありがとうございました。
これから確認してみます。
最後の行(152行目)のEは、End Subであると解釈します。
No.3
- 回答日時:
>文字数が多く、画像にしました。
>審査があるんですね。ありがとうございます
公序良俗に違反する画像の投稿が多いので、画像を審査するようになったと思われます。
提示されたソースをこちらでコピペして、実際の動作を確認したいと思いましたので、全ソースの提示をお願いしました。
申し訳ありませんが、画像ではなく、テキストで提示していただけませんでしょうか。
また、テキストのデータ量が多くて、このサイトにアップするのが大変であれば、ideへ投稿する方法もあります。
https://ideone.com/
を表示し、言語で、Textを選択します。
そこへ、表示したいテキストを貼り付け、Runをクリックすると投稿が完了します。
完了した結果のURLをこのサイトに提示していただければOKです。
No.2
- 回答日時:
>補足は手元に届いてますでしょうか。
確認するすべが見当たらなくて申し訳ございません。補足は画像が含まれるものでしょうか。それであれば、画像の審査をgooの管理者がおこなうので、補足が反映されるまで時間がかかります。
現在、補足は表示されていません。
もし、画像を含まないのであれば、即時に表示されるはずですが、表示されていません。
No.1
- 回答日時:
>現在は1から4まで直線的にコピペをVBAで行っております。
そのマクロで実現したい処理の説明を提示していただけませんでしょうか。
そして、そのマクロ全体を提示していただけませんでしょうか。
そうすれば、良い回答が得られやすくなるかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
近似した文字列を置換するエクセル関数またはVBAについて
Visual Basic(VBA)
-
VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。
Visual Basic(VBA)
-
引数に数値、文字列の混在
Visual Basic(VBA)
-
-
4
VBA ファイル名取得
Visual Basic(VBA)
-
5
エクセルvbaについて
Visual Basic(VBA)
-
6
excelの不要な行の削除ができない!
Excel(エクセル)
-
7
Excel 大なり小なりを表すとき、 例えば「10以上」なら、>=10 と表せますが、 この10の部
Excel(エクセル)
-
8
エクセルVBAの配列について
Visual Basic(VBA)
-
9
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
10
VBAコードについて
Visual Basic(VBA)
-
11
VBのWPFとはなんでしょうか?
Visual Basic(VBA)
-
12
VBEを開くのにコマンド名が「Visual Basic」な理由はなぜ?
Visual Basic(VBA)
-
13
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
14
ご教授お願いします。#NUM!が解消されません。
Visual Basic(VBA)
-
15
VBA コード
Visual Basic(VBA)
-
16
ファイル名の日付について教えて頂けますかExcel
Visual Basic(VBA)
-
17
コードを直していただきたいです。 以下のコードはネットで拾ったものをほんの少しいじった物なのですが、
Visual Basic(VBA)
-
18
Cellsのコードが打てません
Visual Basic(VBA)
-
19
ExcelVBAのFindFirstエラーについて
Visual Basic(VBA)
-
20
エクセルファイルのデータ転記について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
excelのマクロで該当処理できな...
-
Excel VBA 複数行を数の分だけ...
-
XL:BeforeDoubleClickが動かない
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excel VBA リンク先をシート...
-
実行時エラー'1004': WorkSheet...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
【VBA】色のついたシート名を取得
-
シートが保護されている状態で...
-
別のシートを参照して計算する方法
-
VBAで指定シート以外の選択
-
Excelマクロのエラーを解決した...
-
Worksheet_Changeの内容を標準...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAで大量のファイルをシート名...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】Worksheets().Act...
-
ブック名、シート名を他のモジ...
-
エクセルのシート名変更で重複...
-
ExcelのVBAのマクロで他のシー...
-
Excel VBA 複数行を数の分だけ...
-
エクセルのマクロについて教え...
-
VBA 最終行まで数式をコピーする
おすすめ情報
目的:一つのBookに4つsheetが存在し、それぞれ朝に日々新しいことを追加されているのを探して追加という単純作業を、マクロで自動的に完成したい、というものです
補足は手元に届いてますでしょうか。確認するすべが見当たらなくて申し訳ございません。
目的:一つのBookに4つsheetが存在し、それぞれ朝に日々新しいことを追加されているのを探して追加という単純作業を、マクロで自動的に完成したい、というものです
届いているかわからないので同じものを投稿させていただきました
文字数が多く、画像にしました。
審査があるんですね。ありがとうございます
https://ideone.com/AoYyhB
でよろしいですか?
名前は消しているつもりです。
End Subで大丈夫です
あと4回の補足しかありませんが、どうぞよろしくお願いいたします。
とても貴重なお時間をいただき、こんなに短い分にまとめ上げてくださり、感謝です。
まずみたところフルパス FullPath1 = "D: はどのような設定ですか?
そうでしたか。早速削除させていただきました。
Private Sub copy_sheetの中にある、TargetRng.PasteSpecial Paste:=が
2つともエラーを起こし、コメントアウトすると完了まで行くのですが
成立させる対処方法はわかりますか?
実行時 1004 rangeクラスのpastespecialメソッドが失敗しましたとでました。
調査中失礼します。
なぜかわかりませんが、動くようになりました
夜遅くまでありがとうございました
原因はわからずじまいです