Excel VBA質問箱 IV

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

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


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

【65864】値に変換して転記 YAYA999 10/7/2(金) 13:54 質問[未読]
【65865】Re:値に変換して転記 超初心者 10/7/2(金) 14:33 発言[未読]
【65867】Re:値に変換して転記 YAYA999 10/7/2(金) 15:20 お礼[未読]
【65866】Re:値に変換して転記 Yuki 10/7/2(金) 14:37 発言[未読]
【65868】Re:値に変換して転記 YAYA999 10/7/2(金) 15:21 お礼[未読]

【65864】値に変換して転記
質問  YAYA999  - 10/7/2(金) 13:54 -

引用なし
パスワード
   ○○○フォルダの中のエクセルBook"A","B","C"の3つのBookに名前を定義した範囲("転記用テーブル")を定義し、Book"D"へデータを転記したいのですが、
転記元のデータ("転記用テーブル")がすべて計算式になっています。
その為、転記された結果も計算式が転記されます。
値に変換した結果を転記したい場合どのようにしたらよいか教えてください。
宜しくお願いします。

エクセルのバージョンは2003です。

現状下記にて設定しています。


Sub ()
  Dim myFld As String, myName As String
  Dim sakiRng As Range, motoRng As Range, myBook As Workbook
  myFld = ThisWorkbook.Path & "\○○○" ←フォルダ
  myName = Dir(myFld & "\*.xls")
  Do While myName <> ""
    Set sakiRng = Range("B65536").End(xlUp).Offset(1)
    Set myBook = Workbooks.Open(Filename:=myFld & "\" & myName)
    Set motoRng = myBook.Names("転記用テーブル").RefersToRange
    Set motoRng = motoRng.Rows("2:" & motoRng.Rows.Count)
    motoRng.Copy sakiRng
    myBook.Clos
    myName = Dir()
   Loop
End Sub

【65865】Re:値に変換して転記
発言  超初心者  - 10/7/2(金) 14:33 -

引用なし
パスワード
   ▼YAYA999 さん:

こんな感じでいかがでしょう。

> motoRng.Copy sakiRng
 motoRng.Copy
 sakiRng.PasteSpecial Paste:=xlPasteValues
 Application.CutCopyMode = False

【65866】Re:値に変換して転記
発言  Yuki  - 10/7/2(金) 14:37 -

引用なし
パスワード
   ▼YAYA999 さん:
別案で変数で処理
  Dim myFld As String, myName As String
  
  Dim v  As Variant
  
  Dim sakiRng As Range, motoRng As Range, myBook As Workbook
  myFld = ThisWorkbook.Path & "\○○○" '←フォルダ
  myName = Dir(myFld & "\*.xls")
  Do While myName <> ""
    Set sakiRng = Range("B65536").End(xlUp).Offset(1)
    Set myBook = Workbooks.Open(Filename:=myFld & "\" & myName)
    Set motoRng = myBook.Names("転記用テーブル").RefersToRange
'    Set motoRng = motoRng.Rows("2:" & motoRng.Rows.Count)
    v = motoRng.Rows("2:" & motoRng.Rows.Count).Value
    sakiRng.Resize(UBound(v), UBound(v, 2)).Value = v
    myBook.Clos
    myName = Dir()
   Loop

【65867】Re:値に変換して転記
お礼  YAYA999  - 10/7/2(金) 15:20 -

引用なし
パスワード
   解決しました。
ありがとうございました。


▼超初心者 さん:
>▼YAYA999 さん:
>
>こんな感じでいかがでしょう。
>
>> motoRng.Copy sakiRng
> motoRng.Copy
> sakiRng.PasteSpecial Paste:=xlPasteValues
> Application.CutCopyMode = False

【65868】Re:値に変換して転記
お礼  YAYA999  - 10/7/2(金) 15:21 -

引用なし
パスワード
   解決しました。
ありがとうございました。


▼Yuki さん:
>▼YAYA999 さん:
>別案で変数で処理
>  Dim myFld As String, myName As String
>  
>  Dim v  As Variant
>  
>  Dim sakiRng As Range, motoRng As Range, myBook As Workbook
>  myFld = ThisWorkbook.Path & "\○○○" '←フォルダ
>  myName = Dir(myFld & "\*.xls")
>  Do While myName <> ""
>    Set sakiRng = Range("B65536").End(xlUp).Offset(1)
>    Set myBook = Workbooks.Open(Filename:=myFld & "\" & myName)
>    Set motoRng = myBook.Names("転記用テーブル").RefersToRange
>'    Set motoRng = motoRng.Rows("2:" & motoRng.Rows.Count)
>    v = motoRng.Rows("2:" & motoRng.Rows.Count).Value
>    sakiRng.Resize(UBound(v), UBound(v, 2)).Value = v
>    myBook.Clos
>    myName = Dir()
>   Loop

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