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

エクセルVBAで困っています。
OpenFileNameにはCSVファイルのフルパスがはいっています。
2つのファイルを開くことはどうにかできたのですが、
OpenFileName を ".\注文書_" & TimeStamp & ".xls" のシートとして開きたいです。


TimeStamp = Format(Now, "yyyymmddhhmmss")
FileCopy ".\注文書_45_50_12.xls", ".\注文書_" & TimeStamp & ".xls"
Workbooks.Open (".\注文書_" & TimeStamp & ".xls")
Workbooks.Open (OpenFileName)

どのように記述をしたらよろしいでしょうか。
何卒よろしくお願いいたします。

A 回答 (3件)

こんにちは



CSVファイルを直接読み込んでシートに展開することも可能ですが、クォーテーションの処理などが必要でそれなりに面倒です。
(クォーテーションが無いと保証されていれば、さほどでもないですが)

ご提示のように別ブックとして一旦開いたものから、シートをまるっとコピペするのが簡単だと思います。
 CSVブック.WorkSheets(1).Copy after:=コピー先ブック.指定シート
とか。
あるいは、受け入れ先のシートが既に存在するのなら
 CSVブック.WorkSheets(1).Cells.Copy Destination:=コピー先シート.Cells
とか。

コピーしたら、CSVブックは保存せずにCloseすれば良いです。
    • good
    • 0

こんにちは


本当はCSVファイルをExcelにして開かないで行う事を薦めますが
シートをコピーして挿入先ブックを指定すれば出来ると思います
このコードは、開いたOpenFileName側ブックで記録する事も出来ます


TimeStamp = Format(Now, "yyyymmddhhmmss")
FileCopy ".\注文書_45_50_12.xls", ".\注文書_" & TimeStamp & ".xls"

Dim ExlWb As Workbook
Dim csvWb As Workbook
Set ExlWb = Workbooks.Open(".\注文書_" & TimeStamp & ".xls")
Set csvWb = Workbooks.Open(OpenFileName)
csvWb.Sheets(1).Copy After:=ExlWb.Sheets(ExlWb.Sheets.Count)
csvWb.Close False

最終シートに追加
閉じるところまで書きました
    • good
    • 0

>OpenFileName を ".\注文書_" & TimeStamp & ".xls" のシートとして開きたいです。



なさりたいことが、よくわかりません。
2回同じファイル(".\注文書_" & TimeStamp & ".xls")をOpenしたいということでしょうか。
具体的に説明していただけませんでしょうか。

Workbooks.Open (".\注文書_" & TimeStamp & ".xls")・・・①
Workbooks.Open (OpenFileName)・・・②

①で".\注文書_" & TimeStamp & ".xls"をオープンしているので、
OpenFileNameに".\注文書_" & TimeStamp & ".xls"を設定して②を
実行すると、2重オープンになります。
    • good
    • 0
この回答へのお礼

コメントありがつございます。
1つのエクセルファイルを開き、CSVを開きたいのですが、先に開いたエクセルファイルのシートとしてCSVファイルを開きたいです。

お礼日時:2023/05/31 13:25

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