[[20120116133438]] 『ブック元からブック先へ転記』(モリ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ブック元からブック先へ転記』(モリ)
 似た様な質問のサイトが記載されていたので、活用したのですがうまくいきません。
 @ブック元
   ファイルの保管場所:\\Bs132\必要データ\●部屋●
   ブック名:データベース
   シート名:最新版
   セル元:E2列 ・ F2列 ・ AB2列 ・Q2列  2行目から208行目(毎月行挿入で増やしてます)

 Aブック先
   ブック名:最新版抽出
   シート名:抽出
   セル先(転記):E4列 ・ F4列 ・ G4列 ・ H4列
  【E2(元) = E4(先) ・ F2 = F4 ・ AB2 = G4 ・ Q2 = H4】

 @ブック元に最新データが入っているのですが、コマンドボックスを押すとAブック先へ転記する方法を教えてください。
   また2行目から208行目の間に転記してほしくないデータもありますので、Q列に入力されていない行は削除してから転記できるようにお願いします。

こんばんは(*^_^*)

ちょっと、質問の意味がわかりかねています。

セルE2列・・・・Eとは行数で2列とはB列かな?  セル指定かな?

列にしろ行にしろ転記って事はコピペしたいって事でいいのかな?

条件分岐で、『ほしくないデータもありますので、Q列に・・・・』は解決できるのでは?

コマンドボックス・・・?

ボタンの間違いかな?  イベントドリブンかな?

アドバイス・・・・・・

質問するときには、誰でも解る共通の環境を意識し、自分の設定が万国共通と思わない事です。

因みに上記の質問には自分はこんな意味に取りましたけどまちがっていますか?

ブック元・・・何処において置こうとフルパスで指定出来るので・・・・

ブック先・・・ブック名もシート名も指定出来るので・・・・・・・・・

セル元・・・・ここが?でした!

セル先・・・・ここも?だった!

条件・・・・・IF *****=<>**** then

イベント発生   \\Bs132\必要データ\●部屋●"データベース.sheet"最新版". Range("E2").Select

                   Selection.Copy

                  if 指定セルが空白でないなら 下記指定セルに
          
          
         指定先のアドレス、指定ブック、指定シート、指定セル、セレクト

         ペースト

        てな感じでコードを基準します。

イベントの発生はコマンドボタンでも、どこかをクリックでも良いし、それは自分次第です。

他力本願でコードが欲しいのか、自分で作ってみたいけど・・・・解らないのでアドバイスして欲しいのか

どっちでしょう?

(ひで)


 質問するときには、誰でも解る共通の環境を意識し、自分の設定が万国共通と思わない事です。 
 以後気をつけます。すいませんでした。
 最初から下記のようにお願いしていればよかったと反省をしています。

 下記のコードを使用したのですが
 ------------------------------------------------------------------------
 Private Sub CommandButton1_Click()
 Dim wsDest As Worksheet, myFolder As String, fn As String
 Dim mySheet As String, myAddress
 Set wsDest = ThisWorkbook.Sheets("抽出") '<- ブック先のシート
 myFolder = "\\Bs132\必要データ\●部屋●"     '<- ブック元のフォルダ パス
 fn = "データベース.xls"   '<- ブック元
 mySheet = "最新版"    '<- ブック元のシート
 myAddress = [{"E2:E208","F2:F208","AB2:AB208","Q2:Q208"}] 
 For Each e In myAddress
     With wsDest.Range(e)
         .Formula = "='" & myFolder & "\[" & fn & "]" & mySheet & _
               "'!" & Split(e, ":")(0)
         .Value = .Value
     End With
 Next
 End Sub
 ------------------------------------------------------------------------
 For Each e In myAddress
   ・
   ・ 
   ・
 Next
 だとブック先のシートの同じ場所に張り付いて、空白は「0」になります。
 IF条件に変更するのでしょうか?
 お手数をお掛け致しますが、IF条件のコードも教えて頂ければ幸いです。

 (モリ)

 >ブック先のシートの同じ場所に張り付いて

 ブック先の貼付け開始行は4行目で固定だよね。なので、「同じ場所」というのは、ブック元のQ列が空白のものは除外したいのに
張り付いてしまうということをいってるんだね?

 >空白は「0」になります。

 リンク式で値を抽出すると空白のところは 0 になってしまう。
わざわざ、リンク式で抽出して、抽出結果を値に変更するなんて、わずらわしいことをせず
普通の値の転記を行えば、空白は空白として転記されるよ。

 追加)ボタンを押すと動くマクロは、どこに記述してある?
  ブック元?ブック先?それとも、それらとは別のマクロブック?
   ↑
  無視して。コードの中に ThisWorkbook がブック先とコメントで説明されていた。

 (ぶらっと)

 一例

 Sub Sample()
    Dim v(1 To 207, 1 To 4) As Variant
    Dim i As Long
    Dim k As Long

    Application.ScreenUpdating = False

    Workbooks.Open "\\Bs132\必要データ\●部屋●\データベース.xls"

    With Sheets("最新版")
        For i = 2 To 208
            If Len(.Cells(i, "Q").Value) > 0 Then
                k = k + 1
                v(k, 1) = .Cells(i, "E").Value
                v(k, 2) = .Cells(i, "F").Value
                v(k, 3) = .Cells(i, "AB").Value
                v(k, 4) = .Cells(i, "Q").Value
            End If
        Next
    End With

    ActiveWorkbook.Close False
    Application.ScreenUpdating = True
    ThisWorkbook.Sheets("抽出").Range("E4").Resize(UBound(v, 1), UBound(v, 2)).Value = v

 End Sub

 (ぶらっと)

ひで様、ぶらっと様ありがとうございます。
 (モリ)

 (モリ)です。
 いつ最新のデータなのかわかるようにしたいのですが、
 ボタンを押すと【データベース.xls】の最終更新日を【抽出】シートA1に表示する事はできないでしょうか?

 以下のマクロをボタンに登録

 Sub Sample2()
    With CreateObject("Scripting.FileSystemObject").getfile("\\Bs132\必要データ\●部屋●\データベース.xls")
        ThisWorkbook.Sheets("抽出").Range("A1").Value = .datelastmodified
    End With
 End Sub

 (ぶらっと)

ぶらっと様ありがとうございます。
 (モリ)

[[20090109131301]]
 からのコードかな?

 ちょっと長くなるけど

 Dim myAdd As String  '<- 追加

         myAdd = "'" & myFolder & "\[" & fn & "]" & mySheet & _
         "'!" & Split(e, ":")(0)  '<- 追加 + ↓変更
         .Formula = "=If(" & myAdd & "<>""""," & myAdd & ","""")"
 (seiya)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.