質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
コピー

元のオブジェクトを破壊することなく、オブジェクトの複製を生成することをコピーと呼びます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

2回答

2760閲覧

テキストファイルからEXCELマクロを使ってコピーし指定した範囲に貼り付けしたい

Tokamura

総合スコア9

コピー

元のオブジェクトを破壊することなく、オブジェクトの複製を生成することをコピーと呼びます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2017/07/10 08:44

###前提・実現したいこと
.txtテキストファイルに保存してある文字列を、Excel2010でマクロを使って、Excelに貼り付けたいです。ただ、貼り付け先のExcelは個別にフォーマットを作成していて、指定範囲内に貼り付けさせたいと考えています。他のサイトを参考にして下記のようなソースコードを試しましたが、うまくいきません。

###発生している問題・エラーメッセージ

実行時エラー'1004’ コピー領域と貼り付け領域の形が違うため、情報を貼り付けることができません。情報を貼り付けるには、次のいづれかの操作を行なってみてください。 1つのセルをクリックし、貼り付けてみてください。 貼り付け元の形を確かめ、適切な範囲を選択したあと、貼り付けてみてください。

###該当のソースコード

Sub PasteFromCSV()
Const CSV_FILE = "c:\temp\command.txt"
Dim ReadWBk As Workbook
Dim WriteWBk As Workbook
Dim WriteSht As Worksheet
Dim Rng As Range

Set WriteWBk = ActiveWorkbook
Set WriteSht = WriteWBk.ActiveSheet

Set ReadWBk = Workbooks.Open(CSV_FILE)
Set Rng = ReadWBk.Worksheets.Item(1).UsedRange
Range("A1:A170").Copy

WriteSht.Range("A1:A93,A111:A200").PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, False

ReadWBk.Close
Set ReadWBk = Nothing
End Sub

###試したこと
貼り付け先のRange("A1:A93,A111:A200")を範囲指定しなければ、貼り付けはできるようです。貼り付けたくない範囲(A94~A110)を除外したいのですが、エラーとなってしまいます。

###補足情報(言語/FW/ツール等のバージョンなど)
Excel2010で試しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/07/10 09:06

170個のセル(Range("A1:A170"))をコピーして、183個のセル(Range("A1:A93")の93セルと、Range("A111:A200")の90セルを併せたもの)に貼り付けようするのは、何か前提としているものが破綻しているのではないですか? 冷静になって、やろうとしている事を整理しては如何でしょう?
Tokamura

2017/07/10 09:12

コメントありがとうございます。コピー時のセルの数と貼り付け先のセルの数を合わせても同様な結果でした。質問ではセルの数を合わせておいた方が明確だったかもしれません。失礼しました。
guest

回答2

0

一度にコピーしようとせずに分けてコピーすればいいのでは。

また、CSVデータなら書式はないので、コピーではなく代入でいいのでは。

WriteSht.Range("A1:A93").Value = ReadWBk.Range("A1:A93") WriteSht.Range("A111:A200").Value = ReadWBk.Range("A94:A170")

読み込み側と貼り付け側の行数があってませんが、その辺はどうしたいのか不明なので、そちらでうまく合わせてください。

追記

コードを見直したら、エラーの原因が分かりました。
ReadWBk は Workbook ですね。WorkSheet にする必要がありますね。

Sub PasteFromCSV() Const CSV_FILE = "c:\temp\command.txt" Dim ReadWBk As Workbook Dim ReadSht As Worksheet Dim WriteWBk As Workbook Dim WriteSht As Worksheet Set WriteWBk = ActiveWorkbook Set WriteSht = WriteWBk.ActiveSheet Set ReadWBk = Workbooks.Open(CSV_FILE) Set ReadSht = ReadWBk.Worksheets(1) WriteSht.Range("A1:A93").Value = ReadSht.Range("A1:A93").Value WriteSht.Range("A111:A188").Value = ReadSht.Range("A94:A170").Value ReadWBk.Close Set ReadWBk = Nothing End Sub

投稿2017/07/10 09:20

編集2017/07/11 12:09
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tokamura

2017/07/11 01:09

アドバイスありがとうございます。試しに実行してみましたが、「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とエラーになってしまいます。セルの範囲を変更したり試してみましたが、同様のエラーとなってしまい完了できませんでした。
hatena19

2017/07/11 02:30

私の提示したコードは考え方のみを示したコード例ですので、あなたが実際に書いたコード全体を、質問のほうの編集で追記してください。 コードはMarkDown記法のコードタグで囲んでください。
Tokamura

2017/07/12 01:41

さらなるアドバイスありがとうございました。やりたいことが実現できました。感謝です。
guest

0

自己解決

範囲指定ではうまくいかなかったので、不恰好ですが、以下のように1行づつ貼り付けて解決しました。ありがとうございました。
WriteSht.Range("A1").Value = Mid(Range("A1"), 1, 100)
WriteSht.Range("A2").Value = Mid(Range("A2"), 1, 100)
WriteSht.Range("A3").Value = Mid(Range("A3"), 1, 100)
WriteSht.Range("A4").Value = Mid(Range("A4"), 1, 100)
WriteSht.Range("A5").Value = Mid(Range("A5"), 1, 100)
WriteSht.Range("A6").Value = Mid(Range("A6"), 1, 100)
WriteSht.Range("A7").Value = Mid(Range("A7"), 1, 100)
WriteSht.Range("A8").Value = Mid(Range("A8"), 1, 100)
WriteSht.Range("A9").Value = Mid(Range("A9"), 1, 100)
WriteSht.Range("A10").Value = Mid(Range("A10"), 1, 100)
WriteSht.Range("A11").Value = Mid(Range("A11"), 1, 100)
WriteSht.Range("A12").Value = Mid(Range("A12"), 1, 100)
WriteSht.Range("A13").Value = Mid(Range("A13"), 1, 100)
WriteSht.Range("A14").Value = Mid(Range("A14"), 1, 100)
WriteSht.Range("A15").Value = Mid(Range("A15"), 1, 100)
WriteSht.Range("A16").Value = Mid(Range("A16"), 1, 100)
WriteSht.Range("A17").Value = Mid(Range("A17"), 1, 100)
WriteSht.Range("A18").Value = Mid(Range("A18"), 1, 100)
WriteSht.Range("A19").Value = Mid(Range("A19"), 1, 100)
WriteSht.Range("A20").Value = Mid(Range("A20"), 1, 100)
WriteSht.Range("A21").Value = Mid(Range("A21"), 1, 100)
WriteSht.Range("A22").Value = Mid(Range("A22"), 1, 100)
WriteSht.Range("A23").Value = Mid(Range("A23"), 1, 100)
WriteSht.Range("A24").Value = Mid(Range("A24"), 1, 100)
WriteSht.Range("A25").Value = Mid(Range("A25"), 1, 100)
WriteSht.Range("A26").Value = Mid(Range("A26"), 1, 100)
WriteSht.Range("A27").Value = Mid(Range("A27"), 1, 100)
WriteSht.Range("A28").Value = Mid(Range("A28"), 1, 100)
WriteSht.Range("A29").Value = Mid(Range("A29"), 1, 100)
WriteSht.Range("A30").Value = Mid(Range("A30"), 1, 100)
WriteSht.Range("A31").Value = Mid(Range("A31"), 1, 100)
WriteSht.Range("A32").Value = Mid(Range("A32"), 1, 100)
WriteSht.Range("A33").Value = Mid(Range("A33"), 1, 100)
WriteSht.Range("A34").Value = Mid(Range("A34"), 1, 100)
WriteSht.Range("A35").Value = Mid(Range("A35"), 1, 100)
WriteSht.Range("A36").Value = Mid(Range("A36"), 1, 100)
WriteSht.Range("A37").Value = Mid(Range("A37"), 1, 100)
WriteSht.Range("A38").Value = Mid(Range("A38"), 1, 100)
WriteSht.Range("A39").Value = Mid(Range("A39"), 1, 100)
WriteSht.Range("A40").Value = Mid(Range("A40"), 1, 100)
WriteSht.Range("A41").Value = Mid(Range("A41"), 1, 100)
WriteSht.Range("A42").Value = Mid(Range("A42"), 1, 100)
WriteSht.Range("A43").Value = Mid(Range("A43"), 1, 100)
WriteSht.Range("A44").Value = Mid(Range("A44"), 1, 100)
WriteSht.Range("A45").Value = Mid(Range("A45"), 1, 100)
WriteSht.Range("A46").Value = Mid(Range("A46"), 1, 100)
WriteSht.Range("A47").Value = Mid(Range("A47"), 1, 100)
WriteSht.Range("A48").Value = Mid(Range("A48"), 1, 100)
WriteSht.Range("A49").Value = Mid(Range("A49"), 1, 100)
WriteSht.Range("A50").Value = Mid(Range("A50"), 1, 100)
WriteSht.Range("A51").Value = Mid(Range("A51"), 1, 100)
WriteSht.Range("A52").Value = Mid(Range("A52"), 1, 100)
WriteSht.Range("A53").Value = Mid(Range("A53"), 1, 100)
WriteSht.Range("A54").Value = Mid(Range("A54"), 1, 100)
WriteSht.Range("A55").Value = Mid(Range("A55"), 1, 100)
WriteSht.Range("A56").Value = Mid(Range("A56"), 1, 100)
WriteSht.Range("A57").Value = Mid(Range("A57"), 1, 100)
WriteSht.Range("A58").Value = Mid(Range("A58"), 1, 100)
WriteSht.Range("A59").Value = Mid(Range("A59"), 1, 100)
WriteSht.Range("A60").Value = Mid(Range("A60"), 1, 100)
WriteSht.Range("A61").Value = Mid(Range("A61"), 1, 100)
WriteSht.Range("A62").Value = Mid(Range("A62"), 1, 100)
WriteSht.Range("A63").Value = Mid(Range("A63"), 1, 100)
WriteSht.Range("A64").Value = Mid(Range("A64"), 1, 100)
WriteSht.Range("A65").Value = Mid(Range("A65"), 1, 100)
WriteSht.Range("A66").Value = Mid(Range("A66"), 1, 100)
WriteSht.Range("A67").Value = Mid(Range("A67"), 1, 100)
WriteSht.Range("A68").Value = Mid(Range("A68"), 1, 100)
WriteSht.Range("A69").Value = Mid(Range("A69"), 1, 100)
WriteSht.Range("A70").Value = Mid(Range("A70"), 1, 100)
WriteSht.Range("A71").Value = Mid(Range("A71"), 1, 100)
WriteSht.Range("A72").Value = Mid(Range("A72"), 1, 100)
WriteSht.Range("A73").Value = Mid(Range("A73"), 1, 100)
WriteSht.Range("A74").Value = Mid(Range("A74"), 1, 100)
WriteSht.Range("A75").Value = Mid(Range("A75"), 1, 100)
WriteSht.Range("A76").Value = Mid(Range("A76"), 1, 100)
WriteSht.Range("A77").Value = Mid(Range("A77"), 1, 100)
WriteSht.Range("A78").Value = Mid(Range("A78"), 1, 100)
WriteSht.Range("A79").Value = Mid(Range("A79"), 1, 100)
WriteSht.Range("A80").Value = Mid(Range("A80"), 1, 100)
WriteSht.Range("A81").Value = Mid(Range("A81"), 1, 100)
WriteSht.Range("A82").Value = Mid(Range("A82"), 1, 100)
WriteSht.Range("A83").Value = Mid(Range("A83"), 1, 100)
WriteSht.Range("A84").Value = Mid(Range("A84"), 1, 100)
WriteSht.Range("A85").Value = Mid(Range("A85"), 1, 100)
WriteSht.Range("A86").Value = Mid(Range("A86"), 1, 100)
WriteSht.Range("A87").Value = Mid(Range("A87"), 1, 100)
WriteSht.Range("A88").Value = Mid(Range("A88"), 1, 100)
WriteSht.Range("A89").Value = Mid(Range("A89"), 1, 100)
WriteSht.Range("A90").Value = Mid(Range("A90"), 1, 100)
WriteSht.Range("A91").Value = Mid(Range("A91"), 1, 100)
WriteSht.Range("A92").Value = Mid(Range("A92"), 1, 100)
WriteSht.Range("A93").Value = Mid(Range("A93"), 1, 100)

WriteSht.Range("A111").Value = Mid(Range("A94"), 1, 100)
WriteSht.Range("A112").Value = Mid(Range("A95"), 1, 100)
以下、同様・・

投稿2017/07/11 08:16

Tokamura

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問