• ベストアンサー

エクセルのマクロで外部ファイルを開く

セルに入力した内容をファイルネームとして外部ファイルを開きたいのですが どうすればいいのかわかりません。 具体的には 1.外部ファイルはFDで供給されます。 2.FDに入れられるファイル名は毎日かわります。 3.ファイル名は固定された名称+日付のフォーマットです。(例:file0802) 4.やろうとしているのはA1に\"file\"、B1にtoday関数で日付を入力して   A1+B1をファイル名としマクロよりそのファイル名でFDのファイルを  開きたい。 5.開いたファイルの一部をコピーしてHDD上にあるエクセルのファイルに  ペースト、このファイルにマクロを組み込みたいのです。 help等をいろいろ見たのですがこの内容に関するものが見つけられません。 もしかしたら出来ないのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

4.やろうとしているのはA1に\"file\"、 FDに更にフォルダがあって その中の file0802.xls? Workbooks.Open Filename:="A:" & Range("A1") & "file" & WorksheetFunction.Text(Range("B1"), "mmdd") & ".xls" の事でしょうか? Workbooks.Open Filename:="A:" & Range("A1") & WorksheetFunction.Text(Range("B1"), "mmdd") & ".xls" かな? ちがったら C1セルに ="A:"&A1&"file"&TEXT(B1,"mmdd")&".xls" 関数を準備してみるとわかりかわりやすいかも? Workbooks.Open Filename:=Range("C1") でもOKかと。

jab01124
質問者

お礼

おかげで解決できました。 後半の関数を使うやり方だと途中経過がわかりやすく 良く理解できました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • spnlight
  • ベストアンサー率46% (15/32)
回答No.6

Dim abc As Integer 通常、上記の様に変数の型を宣言するのですが、型の宣言は要らないけど、変数の宣言が要るソースからの 流用でしたので表示されてますが、Excelでは無くても動作しますので、無視して下さってかまいません。

すると、全ての回答が全文表示されます。
  • spnlight
  • ベストアンサー率46% (15/32)
回答No.5

すいませんコードミスったので、こちらで Sub test() Dim PasteSheet, MyFilename, FileToOpen1, FileToOpen2, MyDate PasteSheet = "Sheet1" '貼り付けるシート名 MyFilename = Range("A1") '読込むファイル名の記入 MyDate = Format(Range("B1"), "mmdd") '読込むファイル名の日付 FileToOpen1 = "貼付エクセル.xls" '貼り付けるファイル名 FileToOpen2 = MyFilename & MyDate & ".xls" Workbooks.Open Filename:="C:\" & FileToOpen1 Workbooks.Open Filename:="A:\" & FileToOpen2 Range("A1:IV65536").Select '全セル選択 Selection.Copy Windows(FileToOpen1).Activate Worksheets(PasteSheet).Activate Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Application.Windows(FileToOpen2).Close End Sub

jab01124
質問者

お礼

複雑なマクロをお手数おかけしました。 案件についてはANo.1で解決したのですがこちらも参考にさせて もらいます。 勉強不足でよくわからないのですが冒頭のDimはどのような意味を もつのでしょうか? ヘルプ見たんですがよくわからなくて(^^ゞ お忙しいようでしたら無理しなくても結構ですのでお手数でなければ 教えてもらえればと思います。

すると、全ての回答が全文表示されます。
  • spnlight
  • ベストアンサー率46% (15/32)
回答No.4

前提条件 貼りつけ先ブック名を「貼付エクセル.xls」とする 貼りつけ先のファイルは、Cドライブ直下に在る物とする Sub test() Dim PasteSheet, MyFilename, FileToOpen1, FileToOpen2, MyDate FileToOpen1 = "貼付エクセル.xls" '貼り付けるファイル名 FileToOpen2 = MyFilename & MyDate & ".xls" PasteSheet = "Sheet1" '貼り付けるシート名 MyFilename = Range("A1") '読込むファイル名の記入 MyDate = Format(Range("B1"), "mmdd") '読込むファイル名の日付 Workbooks.Open Filename:="C:\" & FileToOpen1 Workbooks.Open Filename:="A:\" & FileToOpen2 Range("A1:IV65536").Select '全セル選択 Selection.Copy Windows(FileToOpen1).Activate Worksheets(PasteSheet).Activate Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Application.Windows(FileToOpen2).Close End Sub 綺麗で無いコードですが、これでどうですか?

すると、全ての回答が全文表示されます。
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

他サイトですが参考になると思います。 セルの内容で外部ファイルを開きたい http://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=112246&rev=0

すると、全ての回答が全文表示されます。
  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.2

5点ほど補足が欲しいところです。 1)A1の「\"file\"」ですが、このふたつの\はどのような意味を持ちますか? 2)FDに入っているファイルはどんな形式ですか。xlsファイルですか、テキスト   またはCSVファイルですか?それとも他の形式ですか。 3)質問の趣旨は、ファイルを開くことだけですか?   それともコピー&ペーストの方法も含めてですか。 4)コピー&ペーストの方法も知りたいのであれば、「開いたファイルの一部」の   範囲指定はどのように与えられますか? 5)「HDD上にあるエクセルのファイルにペースト、このファイルにマクロを組み込   みたいのです。」ということは「A1に\"file\"、B1にtoday関数で日付を入力し   て」あるファイルにマクロを組み込みたいと云うことですか?   であれば、ペーストする場所(シート/セル)はどのように与えられますか? 以上補足お願いいたします。

jab01124
質問者

補足

1) \は意味がないものですコピーした際に変なコードが混ざったようです。 2) FDのファイルはCSVファイルです。 3),4),5) 今回はファイルを開くことのみです、よけいなことも書いてしまい申し訳ありません。

すると、全ての回答が全文表示されます。

関連するQ&A