Excel VBA質問箱 IV

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

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


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

【37952】セルの値を違うブックのシートに上から順に貼り付ける だいすけ 06/5/24(水) 9:38 質問[未読]
【37953】Re:セルの値を違うブックのシートに上か... ハチ 06/5/24(水) 10:01 発言[未読]
【37961】Re:セルの値を違うブックのシートに上か... だいすけ 06/5/24(水) 11:55 発言[未読]
【37972】Re:セルの値を違うブックのシートに上か... ハチ 06/5/24(水) 13:26 回答[未読]
【37987】Re:セルの値を違うブックのシートに上か... だいすけ 06/5/24(水) 17:05 お礼[未読]

【37952】セルの値を違うブックのシートに上から順...
質問  だいすけ  - 06/5/24(水) 9:38 -

引用なし
パスワード
   まずこれを見てください

Sub 目録貼り付け()
'コピーしたものを貼り付けるファイルを開く
Dim Fname As String
 Fname = Application.GetOpenFilename(filefilter:="Excelファイル,*.xls,すべてのファイル,*.*")
  If Fname = "false" Then
 Exit Sub
End If
Workbooks.Open Filename:=Fname
'コピー元があるファイルを開く
 Fname2 = Application.GetOpenFilename(filefilter:="Excelファイル,*.xls,すべてのファイル,*.*")
  If Fname2 = "false" Then
   Exit Sub
  End If
Workbooks.Open Filename:=Fname2

'コピー元のファイルのシート名に「目録」が含まれるシートを選択
Dim ws As Worksheet
 For Each ws In Worksheets
  If InStr(ws.Name, "目録") <> 0 Then
   ws.Activate
  ActiveSheet.Range("A1").Activate
 
'コピー元の選択したシートのAセルの値を上から順に読み取る(条件つけて)
Dim R As Range
Dim MyR As Range
Set MyR = Range("A1", Range("A65536").End(xlUp))
For Each R In MyR
'If1 結合あり
If Selection.MergeCells Then
   '○ひとつしたのセルへ
    Selection.Offset(1, 0).Select
    Selection.Offset(0, 2).Select
'ElseIf1 結合なし
ElseIf Not Selection.MergeCells Then
  'If2 空セル
   If Selection.Value = "" Then
   '○ひとつしたのセルへ
   Selection.Offset(1, 0).Select
  'ElseIf2 空セルでない
   ElseIf Selection.Value <> "" Then
     'If22 セルの文字数が4文字以下
     If 4 >= Len(Selection.Value) Then
     '○ひとつしたのセルへ
     Selection.Offset(1, 0).Select
     'If22 セルの文字数が4文字よりうえ
     ElseIf 4 < Len(Selection.Value) Then

 '条件にあったセルの値を最初に開いていたファイルのシート1のAセルに上から順に貼り付ける
     Dim j As Long
     j = 1: On Error GoTo ELine
     Selection.Copy Workbooks("test.xls").Worksheets("Sheet1") _
     .Cells(j, 1)
     j = j + 1
 
ELine:
      If Err.Number <> 0 Then MsgBox Err.Description


   'End22 If
    End If
   'End2 If
   End If
  'End1 If
   End If

  Next R
 End If
Next ws
ActiveWorkbook.Close
End Sub

現在このような感じで作成しているのですが、
コピーしたものを、別に開いてあるブックに
上から順に貼り付けることが出来ません。

違うところは多々あるとは思いますが、
出来れば、ヒントなりをお教えねがいませんでしょうか?

【37953】Re:セルの値を違うブックのシートに上か...
発言  ハチ  - 06/5/24(水) 10:01 -

引用なし
パスワード
   ▼だいすけ さん:

いくつかわからないところが。

1、FnameにFname2(Fname2は宣言されてないけど)の内容を貼り付けたい ってことですか?

2、なにをコピーしたいのでしょうか? 空白以外 and 4文字以上?

3、結合セルはどうしたいのでしょう? 無視?結合セルの内容をコピー?

4、これはどういう意図でしょうか?
>'If1 結合あり
> If Selection.MergeCells Then
>   '○ひとつしたのセルへ
>    Selection.Offset(1, 0).Select
>    Selection.Offset(0, 2).Select

5、このtest.xlsはどこから出てきたのでしょう?
>     Selection.Copy Workbooks("test.xls").Worksheets("Sheet1") _
>     .Cells(j, 1)
>     j = j + 1

【37961】Re:セルの値を違うブックのシートに上か...
発言  だいすけ  - 06/5/24(水) 11:55 -

引用なし
パスワード
   ▼ハチ さん:
>▼だいすけ さん:
>
>いくつかわからないところが。
>
>1、FnameにFname2(Fname2は宣言されてないけど)の内容を貼り付けたい ってことですか?
そういう事です。最初に開いたエクセルファイルに
後から開いたファイルの内容を貼り付けようとしております。
>
>2、なにをコピーしたいのでしょうか? 空白以外 and 4文字以上?
コピーしたい内容は、Aセルにある値のうち空白以外で、4文字以上の物
のみです。
>
>3、結合セルはどうしたいのでしょう? 無視?結合セルの内容をコピー?
結合しているセルに関しては、無視になります。
>
>4、これはどういう意図でしょうか?
>>'If1 結合あり
>> If Selection.MergeCells Then
>>   '○ひとつしたのセルへ
>>    Selection.Offset(1, 0).Select
>>    Selection.Offset(0, 2).Select
上記のマクロは、コピー元のセルが結合している時の条件分岐のつもりでかいたのですが、誤記でした。申し訳ございません
正確には
'○ひとつしたのセルへ
   Selection.Offset(1, 0).Select
になります。
>
>5、このtest.xlsはどこから出てきたのでしょう?
>>     Selection.Copy Workbooks("test.xls").Worksheets("Sheet1") _
>>     .Cells(j, 1)
>>     j = j + 1
申し訳ございません、こちらに関しましては"test.xls"という名前の
ファイルをコピー先として限定して実験してましたので、
正確には最初に開いたファイル名になります。

ハチさん、色々ご迷惑をおかけいたしますが、ご指導宜しくお願い
いたします。

【37972】Re:セルの値を違うブックのシートに上か...
回答  ハチ  - 06/5/24(水) 13:26 -

引用なし
パスワード
   ▼だいすけ さん:

>>2、なにをコピーしたいのでしょうか? 空白以外 and 4文字以上?
>コピーしたい内容は、Aセルにある値のうち空白以外で、4文字以上の物
>のみです。

よく考えたら空白のセルは4文字以下ですね^^


Sub 目録貼り付け()

Dim Fname As String
Dim wb, Addwb As Workbook
Dim ws As Worksheet
Dim R As Range
Dim wb_r As Long

'コピーしたものを貼り付けるファイルを開く
Fname = Application.GetOpenFilename(filefilter:="Excelファイル,*.xls,すべてのファイル,*.*")
  If Fname = "False" Then Exit Sub
Set wb = Workbooks.Open(Fname)

'コピー元があるファイルを開く
Fname = Application.GetOpenFilename(filefilter:="Excelファイル,*.xls,すべてのファイル,*.*")
  If Fname = "False" Then Set wb = Nothing: Exit Sub
Set Addwb = Workbooks.Open(Fname)

wb_r = wb.Worksheets(1).Range("A1").Range("A65536").End(xlUp).Row
If wb_r <> 1 Then wb_r = wb_r + 1

'コピー元のファイルのシート名に「目録」が含まれるシートを選択
For Each ws In Addwb.Worksheets
  If InStr(1, ws.Name, "目録") <> 0 Then
    For Each R In Range(ws.Range("A1"), ws.Range("A1").Range("A65536").End(xlUp))
      If R.MergeCells = False And Len(R.Value) >= 4 Then
        wb.Worksheets(1).Cells(wb_r, 1).Value = R.Value
        wb_r = wb_r + 1
      End If
    Next R
  End If
Next ws

'コピー元のファイルを閉じる?
Addwb.Close
Set wb = Nothing
Set Addwb = Nothing

End Sub

【37987】Re:セルの値を違うブックのシートに上か...
お礼  だいすけ  - 06/5/24(水) 17:05 -

引用なし
パスワード
   ▼ハチ さん:
大変助かりました!お礼申し上げます。
ありがとうございました。

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