Excel VBA質問箱 IV

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

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


5126 / 13646 ツリー ←次へ | 前へ→

【52442】別のファイルからのコピー COPY 07/11/14(水) 15:54 質問[未読]
【52447】Re:別のファイルからのコピー Jaka 07/11/14(水) 16:48 発言[未読]
【52452】Re:別のファイルからのコピー COPY 07/11/14(水) 17:27 質問[未読]
【52454】Re:別のファイルからのコピー Jaka 07/11/14(水) 17:43 発言[未読]
【52465】Re:別のファイルからのコピー COPY 07/11/15(木) 9:28 質問[未読]
【52474】Re:別のファイルからのコピー Jaka 07/11/15(木) 12:51 発言[未読]
【52482】Re:別のファイルからのコピー COPY 07/11/15(木) 14:47 発言[未読]
【52490】Re:別のファイルからのコピー Jaka 07/11/15(木) 16:40 発言[未読]
【52495】Re:別のファイルからのコピー COPY 07/11/15(木) 19:15 発言[未読]
【52513】Re:別のファイルからのコピー Jaka 07/11/16(金) 11:35 発言[未読]
【52520】Re:別のファイルからのコピー COPY 07/11/16(金) 17:00 お礼[未読]

【52442】別のファイルからのコピー
質問  COPY E-MAIL  - 07/11/14(水) 15:54 -

引用なし
パスワード
    初心者のためどなたかご指導をお願いいたします。
 既存のファイルにある表を計算式,罫線も含めて、ファイル名が未確定のシートに貼り付けたいのですがうまくいきません。貼り付け先のファイルは、他のソフトからの出力データ(EXCELファイル)でその都度連番数字がファイル名として割り当てられますので、VBA上でファイル名を特定することが出来ません。
 出来れば貼り付けもとのファイルを開かずに処理したいと思います。

Worksheets("Sheet1").Activate ’貼り付け先のファイルシート

Workbooks("ABC").Worksheets("DEF").Range("GHQ").Copy_ Destination:=Activesheets

以上、よろしくお願いいたします。

【52447】Re:別のファイルからのコピー
発言  Jaka  - 07/11/14(水) 16:48 -

引用なし
パスワード
   >出来れば貼り付けもとのファイルを開かずに処理したいと思います。
こういうのは、あまり考えない方が良いです。
やたらと多いけど....。

貼り付け元のブックに

Thisworkbook.Worksheets("DEF").Range("GHQ").Copy_ Destination:=Activesheets

とか書いておけば、コピー元からアクティブシートに張り付くんですけどね。
ボタン等は、ツールバーやメニューバーに作るとして。

【52452】Re:別のファイルからのコピー
質問  COPY E-MAIL  - 07/11/14(水) 17:27 -

引用なし
パスワード
   ご指導ありがとうございます。
ご指示通りに書いて見たのですが、
「インデックスが有効範囲に有りません」
と言うエラーが出ます(以前から同じエラーが出ます)。
何が考えられるでしょうか。

【52454】Re:別のファイルからのコピー
発言  Jaka  - 07/11/14(水) 17:43 -

引用なし
パスワード
   すみません。あまり良く見てなかった。
簡単ですみませんが、こんな感じ。

ThisWorkbook.Worksheets(1).Range("A1:F10").Copy Destination:=ActiveSheet.Range("A1")

【52465】Re:別のファイルからのコピー
質問  COPY E-MAIL  - 07/11/15(木) 9:28 -

引用なし
パスワード
   最後にシートのセル位置を指定しましたが、やはり同じエラーが出ます。
ここで言う「インデックス」とは貼り付け元、貼り付け先 どちらのインデックス
を示しているのでしょうか。

【52474】Re:別のファイルからのコピー
発言  Jaka  - 07/11/15(木) 12:51 -

引用なし
パスワード
   >ここで言う「インデックス」とは貼り付け元、貼り付け先 どちらのインデックス
>を示しているのでしょうか。
いや、単に例だからインデックスにはあまり意味がないです、状況にあったものに変えてください。
の意味です。

先に
「貼り付け元のブックに
  略
 とか書いておけば、コピー元からアクティブシートに張り付くんですけどね。」
と書いているのでこの場合のThisWirBookは、コピー元です。

とりあえず、
新規に
Book1とBook2を作って、
Book1をコピー元として、Sheet1のA1からF10ぐらいまでのセルに適当な文字を書き、

Book1のモジュールに下記コードを

Sub こぴー()
ThisWorkbook.Worksheets("Sheet1").Range("A1:F10").Copy Destination:=ActiveSheet.Range("A1")
End Sub

Book2をアクティブにして、
ツール → マクロ から、「こぴー」を実行してみてください。

【52482】Re:別のファイルからのコピー
発言  COPY E-MAIL  - 07/11/15(木) 14:47 -

引用なし
パスワード
    すいません。私の説明が足りなかったのと、回答していただいた意味をよく理解していなかったようです。このVBAは「個人用マクロブック」に記録しており、専用ソフトの出力データから必要なデータだけを取り出し集計する目的で作成しています。貼り付け元の表は集計用のフォーマットとして使用するためのものです。
従って、このVBAは貼り付け先のファイル(出力データファイル)を主体として作成しております。貼り付け先から貼り付け元のデータをひっぱて来ることは出来ないものでしょうか。私自身がまだ駆け出しのため基本的なところが理解出来ていないのかもしれませんがよろしくお願いいたします。

【52490】Re:別のファイルからのコピー
発言  Jaka  - 07/11/15(木) 16:40 -

引用なし
パスワード
   >貼り付け先のファイルは、他のソフトからの出力データ(EXCELファイル)でその都度連番数字がファイル名として割り当てられますので、VBA上でファイル名を特定することが出来ません。
ということでしたので、このブックをアクティブにした状態でという事にしました。

マクロを書くのがどのブックなのか解らないから、取りあえずコピー元のブックにしました。
取りあえず下記マクロで、某フォルダの.xlsファイルだけを検索しながらファイル名を比較して(文字列比較)1番新しそうなものを選んでます。
なんか勝手に昇順ソートされているから、ファイル名での比較は要らないのかもしれないけど....。

検索して抽出したブックを開いて、このブックに貼り付ければ...。

Sub AAAA()
  Dim FlNm As Variant, SavF1 As String, SavF2 As String
  Dim FFL As String

  'フォルダのプルパス
  BPth = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
  
  For Each FlNm In CreateObject("Scripting.FileSystemObject").GetFolder(BPth).Files
    FFL = Dir(FlNm)
    If Right(FFL, 4) = ".xls" Then
     i = i + 1
     Cells(i, 1).Value = FFL
     If FFL > SavF1 Then
       SavF1 = FFL
       SavF2 = FlNm
     End If
    End If
  Next
 
  MsgBox "1番新しきものは、" & vbLf & SavF1 & vbLf & _
     "フルパス" & vbLf & SavF2
End Sub

【52495】Re:別のファイルからのコピー
発言  COPY E-MAIL  - 07/11/15(木) 19:15 -

引用なし
パスワード
   >>貼り付け先のファイルは、他のソフトからの出力データ(EXCELファイル)でその都度連番数字がファイル名として割り当てられますので、VBA上でファイル名を特定することが出来ません。
>ということでしたので、このブックをアクティブにした状態でという事にしました。
>
>マクロを書くのがどのブックなのか解らないから、取りあえずコピー元のブックにしました。
 マクロを書いているのは「個人用マクロブック」であり、どのブックという特定は有りません。あえて言うなら貼り付け先のブックに書いていると理解していただければ結構です。一つの方法として「4.0マクロ」の使用を考えました。

Worksheets("Sheet1").Activate ’貼り付け先のブックシート
Dim i As Long, j As Long
  For i = 1 To 36
  For j = 1 To 5
  Cells(i, j) = ExecuteExcel4Macro("'C:\[ABC.xls]DEF'!R" & i & "C" & j)
  Next j
  Next i

しかし、これでは表の形がくずれてしまい、数式や書式、罫線はコピーされません。表を丸ごとコピーしたいのですが良い方法はないでしょうか。
 ちなみに、貼り付け元のブックは実行時に開くようにします。
 常時アクティブになっているのは貼り付け先のブックのみです。

 いろいろ考えていただいて申し訳ありませんが、ご協力をお願いいたします。

【52513】Re:別のファイルからのコピー
発言  Jaka  - 07/11/16(金) 11:35 -

引用なし
パスワード
   貼り付け元ブック、貼り付け先ブックの2枚しか開いてないというのが条件。

Dim Wb As Workbook
For Each Wb In Workbooks
  If Windows(Wb.Name).Visible = True Then
   'マクロが書いてない貼り付け元ブックを探す。
   If Wb.Name <> ThisWorkbook.Name Then
     'Wb.Sheets("DEF").UsedRange.Copy
     'ThisWorkbook.Sheets("Sheet1").Range("A1").PasteSpecial
     Wb.Sheets("DEF").Range("A1:E36").Copy _
      ThisWorkbook.Sheets("Sheet1").Range("A1")
   End If
  End If
Next

【52520】Re:別のファイルからのコピー
お礼  COPY E-MAIL  - 07/11/16(金) 17:00 -

引用なし
パスワード
   解決いたしました。Jakaさんからいろいろご指導いただいたことも試してみたのですが、結局元々のコードに間違いがあることがわかり、下記のようにそれを修正することで解決いたしました。

 Workbooks("ABC.xls").Worksheets("DEF").Range("GHI").Copy _
  Destination:=ActiveSheet.Range("A1")

 ただ頭のブックのファイル形式を指定するための 「.xls」 が漏れていただけでした。

 いろいろお世話になりありがとうございました。

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