Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4745 / 13644 ツリー ←次へ | 前へ→

【54718】2ファイルを合体するには にしもり 08/3/27(木) 16:05 質問[未読]
【54719】Re:2ファイルを合体するには ひげくま 08/3/27(木) 16:13 発言[未読]
【54720】Re:2ファイルを合体するには VBWASURETA 08/3/27(木) 16:15 回答[未読]
【54721】Re:2ファイルを合体するには VBWASURETA 08/3/27(木) 16:27 質問[未読]
【54725】Re:2ファイルを合体するには にしもり 08/3/27(木) 17:18 質問[未読]
【54738】Re:2ファイルを合体するには ひげくま 08/3/28(金) 9:15 発言[未読]
【54741】Re:2ファイルを合体するには VBWASURETA 08/3/28(金) 9:42 発言[未読]
【54742】Re:2ファイルを合体するには にしもり 08/3/28(金) 10:40 質問[未読]
【54743】Re:2ファイルを合体するには ひげくま 08/3/28(金) 11:24 回答[未読]
【54746】Re:2ファイルを合体するには にしもり 08/3/28(金) 11:56 質問[未読]
【54747】Re:2ファイルを合体するには ひげくま 08/3/28(金) 12:13 回答[未読]
【54749】Re:2ファイルを合体するには にしもり 08/3/28(金) 12:42 お礼[未読]

【54718】2ファイルを合体するには
質問  にしもり  - 08/3/27(木) 16:05 -

引用なし
パスワード
   こんにちは。

Post.csvとFax.csvがあります
いま、2つを合体したいです。
両方を開き、Fax.csvのデータ下端に、Post.csvのタイトル行を除いたデータを貼り付けようとしています。
ですが、実行すると 引き数を省略できない、と出てしまいます。
どこがわるいでしょうか。

また、それができたらFax.csvを送付.xlsという名のExcelで保存したいです。
その際どう書けばよいでしょうか。
どうもきれいなロジックができません。
どなたか御教示よろしくお願いします。

Sub Macro1()

Dim MyTxtFile1 As String
Dim MyTxtFile2 As String

  MyTxtFile1 = ActiveWorkbook.Path & "\Post.csv"
  Workbooks.Open Filename:=MyTxtFile1
  Range("A2:U2").Select'←これをいれたのはB列からT列の中にブランクのセルがありうるからです
  Range(Selection, Selection.End(xlDown)).Select
  Range(Selection, Selection.End(xlToRight)).Select
  Selection.Copy
  
  MyTxtFile2 = ActiveWorkbook.Path & "\Fax.csv"
  Workbooks.Open Filename:=MyTxtFile2
  Windows("Urgent.CSV").Activate
  Range("A2").Select
  Range(Selection, Selection.End(xlDown)).Select
  Range.Selection = ActiveCell.CurrentRegion.Address '←実行すると 引き数を省略できない、と出てしまいます

  ActiveSheet.Paste


'Fax.csvを送付.xlsにして保存したい
'Post.csはそのまま閉じてしまう


End Sub

【54719】Re:2ファイルを合体するには
発言  ひげくま  - 08/3/27(木) 16:13 -

引用なし
パスワード
   ▼にしもり さん:
こんにちは。

>  Range.Selection = ActiveCell.CurrentRegion.Address '←実行すると 引き数を省略できない、と出てしまいます

ここで何をしようとしているのか、ちゃんと整理して、コードではなく言葉で説明してもらえますか?

【54720】Re:2ファイルを合体するには
回答  VBWASURETA  - 08/3/27(木) 16:15 -

引用なし
パスワード
   ▼にしもり さん:
こんにちは。

一つ注意ですが、エラー警告で範囲選択された箇所を
正確に書いた方が良いですよ?

>Range.Selection = ActiveCell.CurrentRegion.Address '←実行すると 引き数を省略できない、と出てしまいます

↓この「」内のRangeが範囲指定されてますよね?
「Range」.Selection = ActiveCell.CurrentRegion.Address

Rangeって必ずセル位置を示さないとエラーになります。

この場合、Selectionプロパティだけで良いと思いますよ?

【54721】Re:2ファイルを合体するには
質問  VBWASURETA  - 08/3/27(木) 16:27 -

引用なし
パスワード
   追記です。

後、複数のシートを扱う場合は特にですが、Rengeだけではだめです。
ちゃんとシートの指定も必要です。

ついでにですが、
途中不明なExcelファイルが浮上してますがこれは何でしょう?

>Windows("Urgent.CSV").Activate

【54725】Re:2ファイルを合体するには
質問  にしもり  - 08/3/27(木) 17:18 -

引用なし
パスワード
   ▼ひげくまさん、VBWASURETA さん:
ありがとうございます。

Windows("Urgent.CSV").Activateでなく、Windows("Fax.CSV").Activateが正当です。すみません。

Range.Selection = ActiveCell.CurrentRegion.Address でなにをしたかったか言葉で御説明しますと、Fax.csvのデータ下端が10行目だったとして、Post.csvからコピーしたものをA11をポイントしてペーストするつもりでした。

VBWASURETAさんのおっしゃるとおおりSelection = ActiveCell.CurrentRegion.Address にしたら、ペーストされはしたが $A$1:$U$2 というのがA列に 6万5千個ペーストされてしまいました。
すみません、Post.csvでコピーした値だけをペーストするにはどうすればよろしいでしょうか。

【54738】Re:2ファイルを合体するには
発言  ひげくま  - 08/3/28(金) 9:15 -

引用なし
パスワード
   すんなりと正解を教えてあげたいのですが、できればご自分で気づいて欲しいので、あえて意地悪に(笑)

> Range.Selection = ActiveCell.CurrentRegion.Address でなにをしたかったか言葉で御説明しますと、Fax.csvのデータ下端が10行目だったとして、Post.csvからコピーしたものをA11をポイントしてペーストするつもりでした。

ということですが、
Selection = ActiveCell.CurrentRegion.Address
だとして、「Post.csvからコピーしたもの」はどれで、「A11をポイント」はどれですか?
Addressとは何ですか?

【54741】Re:2ファイルを合体するには
発言  VBWASURETA  - 08/3/28(金) 9:42 -

引用なし
パスワード
   おはようございます。
少しヒントです。

>Addressとは何ですか?

この質問のレスにあるRangeの引数についてのところを
考えると見えてくるかもですね^^

【54742】Re:2ファイルを合体するには
質問  にしもり  - 08/3/28(金) 10:40 -

引用なし
パスワード
   ▼ひげくまさん、VBWASURETAさん
これまでみようみまねでやってきたので、すみません。

>Selection = ActiveCell.CurrentRegion.Address
>だとして、「Post.csvからコピーしたもの」はどれで、「A11をポイント」はどれですか?
>Addressとは何ですか?
「Post.csvからコピーしたもの」は"A2:Uxx"です。
Range(Selection, Selection.End(xlDown)).Selectによって、A11にまで範囲指定され、
Addressと記述することでA11をポイントできると思っています。

しかし、Rangeは必ずセル位置を示さないとエラーになる、のですね。
だとすると Range("A11").Selection = ActiveCell.CurrentRegion.Addressとしなければいけないのでしょうか。

"A11"のところを変数にしないといけないことは判ります。
 

【54743】Re:2ファイルを合体するには
回答  ひげくま  - 08/3/28(金) 11:24 -

引用なし
パスワード
   > Addressと記述することでA11をポイントできると思っています。

なるほど!
そう思っていたのですか。

アドレスは、セルをポイントするためのものではありません。
そのセルのアドレス値を求めるためのものですよ。

データ下端派は10行目という仮定ですよね?
であれば、範囲指定されるのは、10行目までです。

にしもりさんのやり方を基準に説明すると、
Range("A2").End(xlDown) が、A列のデータ下端のセル(A10)になります。
A11を選択したければ、Offsetを使って、
Range("A2").End(xlDown).Offset(1) とします。

そして、それを選択するために、Selectを使います。
Range("A2").End(xlDown).Offset(1).Select

この状態でペーストをすれば良いです。

【54746】Re:2ファイルを合体するには
質問  にしもり  - 08/3/28(金) 11:56 -

引用なし
パスワード
   ▼ひげくま さん:
ありがとうございます。
アドレスはポイントするためんではないのですね。
こういうときはOffsetを使えばよいのですね。
そういうのがパッと浮かびません。

で、アドバイス通りにやりましたが、また黄色になります。
どこが悪いでしょうか。

Dim MyTxtFile1 As String
Dim MyTxtFile2 As String

  MyTxtFile1 = ActiveWorkbook.Path & "\Post.csv"
  Workbooks.Open Filename:=MyTxtFile1
  Range("A2:U2").Select
  Range(Selection, Selection.End(xlDown)).Select
  Range(Selection, Selection.End(xlToRight)).Select
  Selection.Copy

  MyTxtFile2 = ActiveWorkbook.Path & "\Fax.csv"
  Workbooks.Open Filename:=MyTxtFile2
  Windows("Fax.CSV").Activate
  Range("A2").Select
  Range("A2").End(xlDown).Offset(1).Select '←ここが黄色になります
  ActiveSheet.Paste

End Sub

【54747】Re:2ファイルを合体するには
回答  ひげくま  - 08/3/28(金) 12:13 -

引用なし
パスワード
   A2より下(A3以降)にデータはありますか?
もし、A3以降にデータが無い場合は、Range("A2").End(xlDown) がシートの最下行になります。
そして、Offset(1)で、さらにその下のセルを指定しようとしたことで、そこにはもうセルはないよ、ということで、エラーになります。

【54749】Re:2ファイルを合体するには
お礼  にしもり  - 08/3/28(金) 12:42 -

引用なし
パスワード
   ▼ひげくま さん:
A3にデータがありませんでした。失礼しました。

1行目はタイトル行、A2以下にデータなので
 Range("A1").End(xlDown).Offset(1).Select
とすることにしました。
A2以下にデータがあるときのみ実行しますので今後エラーはでないとおもいます。

あと、xls保存は市販の教本をみてできそうなので(向学のためにも)自力ですすめてみます。
本当にどうもありがとうございました。

Sub Macro1()

Dim MyTxtFile1 As String
Dim MyTxtFile2 As String
  
  MyTxtFile1 = ActiveWorkbook.Path & "\Post.csv"
  Workbooks.Open Filename:=MyTxtFile1
  Range("A2:U2").Select
  Range(Selection, Selection.End(xlDown)).Select
  Range(Selection, Selection.End(xlToRight)).Select
  Selection.Copy

  MyTxtFile2 = ActiveWorkbook.Path & "\Fax.csv"
  Workbooks.Open Filename:=MyTxtFile2
  Windows("Fax.CSV").Activate
  
  Range("A1").Select
  Range("A1").End(xlDown).Offset(1).Select
  ActiveSheet.Paste


End Sub

4745 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free