dポイントプレゼントキャンペーン実施中!

異なるファイル間で値のみをコピーしたいです。下記の様な感じです。

hoge1.xlsのA1からA10のセルの値のみをhoge2.xlsのB1からB10へコピーする。

以下の様に書いてみたのですが、数式がコピーされてしまいます。
VBAをやったことがなく、今ネットで30分ほど見て書いてみたので
根本的に理解していません。簡単な書き方を教えていただきたいです。


Sub test()

Dim Fname As String
Fname = "hoge1.xls"
Workbooks.Open Filename:=Fname, ReadOnly:=True

Dim range1 As Range
Set range1 = Worksheets("Sheet1").Range("A1:A10")
range1.Copy Destination:=Workbooks("hoge2.xls").Worksheets("Sheet1").Range("B1:B10")

End Sub

また、ファイルを開いたり閉じたりは必要なのでしょうか?
Workbooks.Open Filename:=Fname, ReadOnly:=True
を書かずに、いきなり
Set range1 = Workbooks("hoge1.xls").Worksheets("Sheet1").Range("A1:A10")
はダメなのでしょうか??

よろしくお願いします。

A 回答 (1件)

Range("A1")=Range("B1")


だけ書くとVB側のみなしで
Range("A1").Value=Range("B1").Value
の扱いになります。セル(Range)には値(Value)のほかに、FormulaやNumberFormatのセル属性もあります。代表がValueなので上記扱いにして、コード記法上の簡略化を認めています。
コピーして貼り付けすると(形式を選択して貼り付けをしない場合。この画面にセルの属性の種類が出てきます。)するとセルの諸属性が1度に移ります。

他ブックの参照は
Workbooks("フルパス\data.xls").Worksheets(”Sheet1").Range("A1")
のような書き方になります。
そのブックは実行までに開いておく必要があります。
>数式がコピーされてしまいます
数式に質問者が注目しただけで書式も移るはずです。
>はダメなのでしょうか
hoge1などの命名を使うぐらいだから、他の言語の経験があるのかな。コンピュターの基礎の基礎はお分かりでしょう。
外部ファイルにあるものを、コンピュタの内部メモリに展開しないで
情報が取れると思いますか。読み込んで(開いても)画面に出さないでおく(Visible=False状態は)あり得るとしても。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2008/05/03 15:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!