プロが教えるわが家の防犯対策術!

はじめまして。VBAまだまだ初心者です。タイトルのとおり別のエクセル(LAN接続された別PC上にある「取引先.xls」の「未確定」シート)から、3列分のデータをコピーし、別ブック(「取引先2.xls」)に「確定」シートを作成し、作成したシートの1列目から貼り付けたいのです。
で、これを「取引先.xls」は開かずに実行させたいのですが、どのように書けばよいのかわかりません。
いまのところ
1.「取引先.xls」を開く方法として、ダイアログBOXで「取引先.xls」を選んでもらって、開く。
2.「未確定」シートを選択し、Range("A6:C40")のデータをコピー。
3.「取引先2.xls」に「確定シート」を作成し、そこに貼付け。
4.「取引先.xls」を閉じる。
という風な流れでやっております。

何か良い方法がありましたら教えて下さい。エクセル2000を使用しています。

A 回答 (2件)

> これを「取引先.xls」は開かずに実行させたいのですが、どのように書けばよいのかわかりません。



それ以外の部分はできているのですね。
では、開かずにデータを取得する方法を知らないので、開いたところを見せずに実行する方法

'1.ダイアログBOXで「取引先.xls」を選ぶコード

Application.ScreenUpdating = False '画面の更新を止める

'選んだファイルを開くコード

'2.「未確定」シートを選択し、Range("A6:C40")のデータをコピー。のコード
'3.「取引先2.xls」に「確定シート」を作成し、そこに貼付け。のコード

Workbooks("取引先.xls").Close (False)

Application.ScreenUpdating = True '画面の更新を再開

この回答への補足

merlionXXさんへ。
(補足じゃないですが、書く所が分からなかったのでココに書かせてもらいました ^^;)
パスから「Right関数」でファイル名のみ取得したところ、
Workbooks("取引先.xls").Close (False)
も使えました。
ので、当面この方法を使わせて頂きます。ありがとうございました。

補足日時:2008/07/11 15:02
    • good
    • 0
この回答へのお礼

merlionXXさん。早速ありがとうございます。
説明不足があったので補足させてください。
ダイアログBOXで選択したbookを"GetOpenFilename"を使ってパスの形(C:\新しいフォルダ\取引先.xls)で持ってきてますので、
> 「Workbooks("取引先.xls").Close」
が使えないのです。
画面の更新を止める方法については、勉強になりました。
よろしくお願いします。

お礼日時:2008/07/11 14:49

#1です。


うまく行ってよかったですね。蛇足ですが

> パスから「Right関数」でファイル名のみ取得したところ、

ご承知のとおりGetOpenFilenameメソッドの返り値は「C:\My Documents\Book1.xls」のようにパス名を含んだファイル名です。
これは、そのままファイルを開くときなどに便利なのですが、パスを除いた純粋なファイル名を取り出すにはDir関数を使えばいいんです。
Dir関数は引数に指定したファイルが存在すると、そのファイル名だけを返します。Right関数などでめんどうなことをしなくともいいんですよ。

Sub Sample()
Dim OpenFileName As Variant
OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")
If OpenFileName <> False Then
MsgBox "選択したファイルは " & Dir(OpenFileName) & " です", vbInformation, " ( ̄ー ̄)v"
End If
End Sub
    • good
    • 0
この回答へのお礼

おぉ~!Dir関数!なるほどです。(・・・ひょっとして基本ですか?)
これは他にも使いまわしが出来ますね(^^
おかげでコードがすっきりしました。ありがとうございます。

お礼日時:2008/07/11 17:39

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