Excel VBA質問箱 IV

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

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


8229 / 76732 ←次へ | 前へ→

【74080】Re:excel結合時レコードがdeleteされないようにするには
発言  kanabun  - 13/4/17(水) 9:38 -

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

>このようにしたら出来たみたいです。
>ありがとうございました。

思い通りに位置指定できてコピペできていれば、それでよいのですが、
自分だったら、こう書くというサンプルです

Sub Ck_Test()
 Dim Files, i As Long
 Dim cBook As Workbook, pBook As Workbook
 Dim rCopyTo As Range
 Dim m As Long

  Files = Application.GetOpenFilename _
     (FileFilter:="CsvFile, *.csv", MultiSelect:=True)
  If IsArray(Files) Then
    Set pBook = Workbooks.Add(xlWBATWorksheet)
    
    For i = 1 To UBound(Files)
      Set cBook = Workbooks.Open(Files(i))
      With pBook.Worksheets(1) 'コピー先シート最終セル
        Set rCopyTo = .Cells(.Rows.Count, 1).End(xlUp)
      End With
      m = IIf(i = 1, 0, 1) 'iが1のとき Offsetは無し
      cBook.ActiveSheet.UsedRange.Offset(m).Copy _
       rCopyTo.Offset(m)
      cBook.Close False
    Next i
  End If
 
  pBook.SaveAs Filename:="D:\Test.xlsx", FileFormat:= _
     xlOpenXMLWorkbook, CreateBackup:=False
  pBook.Close True
  
  MsgBox "終了しました。"

End Sub

《修正点》
◆シートの最終行はマジックナンバー65536 を用いないほうがよい _
  Set rCopyTo = .Cells(.Rows.Count, 1).End(xlUp)

◆     Workbooks.Open Files(i)
      Set cBook = ActiveWorkbook
これは
    Set cBook = Workbooks.Open(Files(i))
と一行で 変数にセットできます。(そのまえのpBookも同じ)

◆1つ目とそれ以降で Offset(1)するかしないか 変数mにi=1のとき _
   0, それ以上 1 としておけば、コピー処理は1行で記述できる

◆CopyしてPasteSpecial貼り付け xlPasteAll → Copy と同じ
>      m = IIf(i = 1, 0, 1) 'iが1のとき Offsetは無し
>      cBook.ActiveSheet.UsedRange.Offset(m).Copy _
>         rCopyTo.Offset(m)

◆ActiveWorkbook.Close よりせっかく変数に格納しているのだから _
 pBook.Close としたほうがよい
◆また、pBook.Close の第1引数は SaveChanges ではないか?

0 hits

【74075】excel結合時レコードがdeleteされないようにするには にしもり 13/4/16(火) 12:26 質問
【74076】Re:excel結合時レコードがdeleteされないよ... kanabun 13/4/16(火) 13:01 発言
【74077】Re:excel結合時レコードがdeleteされないよ... kanabun 13/4/16(火) 13:06 発言
【74079】Re:excel結合時レコードがdeleteされないよ... にしもり 13/4/16(火) 17:51 お礼
【74080】Re:excel結合時レコードがdeleteされないよ... kanabun 13/4/17(水) 9:38 発言
【74081】Re:excel結合時レコードがdeleteされないよ... kanabun 13/4/17(水) 9:52 発言
【74082】Re:excel結合時レコードがdeleteされないよ... にしもり 13/4/17(水) 10:42 お礼

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