• ベストアンサー

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

セルに入力した内容をファイルネームとして外部ファイルを開きたいのですが どうすればいいのかわかりません。 具体的には 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

  • excelの関数かマクロで連番、日付を付けたい

    こんばんわ、EXCELマクロ入門者です。 excelの関数かマクロ、VBAで日付や、連番を付けたいです。 できれば関数でできたらなぁと思います。マクロ、VBAはほとんど初めてです。 (1)まず、B2に商品名を入れます。 (2)すると、A2に連番、C2に今日の日付(システム日付)、 D2に商品名と今日の日付、商品ごとの連番が自動的に振っていく感じにしたいです。毎日たくさん入力するらしいのでマクロとかVBAとか関数で作ってくれと頼まれました。 A列は例えばA3に=if(B3="","",A2+1)を入れて何とかできたのですが、 C列の日付(today関数やnow関数ではファイルを開き直すと日付が変わってしまう)とD列の商品名-日付-商品ごとの連番で特に困っています。 イメージとしては下のような感じです。   A   B    C     D 1 連番 商品名 日付    商品名-日付-商品ごとの連番 2 1   ○○○ 2007/8/10  ○○○-2007/8/10-1 3 2   ××× 2007/8/12  ×××-2007/8/12-1 4 3   △△△ 2007/8/13  △△△-2007/8/13-1 5 4   ○○○ 2007/8/15  ○○○-2007/8/15-2 6 5   ○○○ 2007/8/16  ○○○-2007/8/16-3 どなたか、ご教授ください。 どうぞ、宜しくお願い致します。

  • Excelで外部ファイルの取り込み(データの更新)をマクロ化したい

    C:\data のdataフォルダの中に「20060709.dat」「20060710.dat」「20060711.dat」・・・というようにファイル名に日付が入ったファイルがあります。 例えば、(データ)→(外部データの取り込み)で"sheet2"に「20060709.dat」を読み込んでいるとしします。 この時に"sheet1”のセルA1に「20060710」と入力してマクロボタンをクリックすると"sheet2"に「20060710.dat」を(データ)→(データの更新)で読み込むというような作業をマクロで自動化することは可能なのでしょうか? 可能であれば教えて頂きたいのですが。どうぞよろしくお願いします。 ちなみにマクロに関しては(自動記録)で作ったマクロを少しいじる程度の知識しかありません。Excel2000を使用しています。 以上、どうぞよろしくお願い致します。

  • エクセル マクロ 任意のファイルを選択してコピペ

    現在、「A+日付」と「B」の2つのファイルがあり、 「A+日付」のデータをコピーして「B」に貼り付けるマクロが組まれています。 マクロは「B」のファイルに組まれています。 ただし、マクロでファイルを特定するために日付を削除して、「A」にファイル名を 変更してから実施しています。 流れとしてはフルパスで「A」を開いて、「A」の指定範囲のデータをコピーし、 「B」に貼り付けとなっています。 これをダイアログで任意のファイル「A+日付」を選択して、 そのデータを「B」に貼り付けるように変更したいのですが、 マクロの知識がなくわかりません。 既に組まれている簡単なマクロなら、なんとか解読できる程度の理解力です。 ダイアログでファイルを開くだけなら、ネットでも探せましたが、 そのファイルの指定範囲のデータをコピーする指示の仕方が判りません。 どなたかご教示頂けると助かります。 宜しくお願い致します。

  • Excelのマクロで基準日から見た日付の前後を判定したい

    Excelのマクロについて質問です。 初歩的な内容かもしれませんが よろしくお願いします。 マクロで日付を扱おうとしたのですが うまくいきませんでした。 ある日付が基準日から見て前の日か後ろの日かを 判定しようとしたのです。 たとえば セルA1に入力した日付が 今日より先ならセルB1に「1」を 後なら「2」を表示しようとして If Range("A1") > "=TODAY()" Then Range("B1") = 1 Else Range("B1") = 2 End If このようにすると セルA1にどのような日付を入れても セルB1は「2」と表示されてしまうのです。 "=TODAY()" の部分に問題があるのでしょうね。 でも、確かこれで今日という日付を 表しているのではなかったでしょうか… 日付はどのように扱われているのでしょう。 回答をお待ちしております。

  • エクセルでフォルダとファイルを作りたい

    お世話になります。 エクセル2007で質問です。 下記のような表をエクセルで作り、A列の名称でフォルダを作り、 そのフォルダの中にすべて同じファイル名のテキストファイルを作り、 その内容をB列の文字としたいのですが、マクロなどでの作成方法を教えてくだい。 A列 B列 a1  ああああああ a2  いいいい a5  かかかかか いままで使っていたマクロはテキストのファイル名がすべてバラバラだった ので同じフォルダ内に書き出していましたが、変更があり同じファイル名で内容が 違うデータが必要となってしまいましたので、違う名称のフォルダの中に、 同じ名称のテキストデータを格納したいと思っています。 テキストデータの名称は何でもいいです。 作成するデータの数は決まっていなく、最大で1000くらいあります。 ぜひ、ご教授お願いします。

  • エクセルのマクロについて

    エクセルのマクロを使って日付を入力したいのですが、上手く行きません。 何か良い方法があったら教えてください。 やりたいことは、あらかじめ選択されているセルに、今日(作業当日)の日付を入力することです。 これまで試したのは、 〔ctrl〕+;→マクロ作成日の日付を入力するようになってしまうので駄目 today関数→翌日になると、日付も翌日のものになってしまうので駄目 よろしくお願いいたします。

  • マクロでファイルを開くには・・・

    特定のフォルダにデータファイルを入れ、マクロによってそのデータの集計を行なっています。そのデータファイル名は通常 a_1 b_2 c_3 です。これをマクロで集計していますが、このファイル名が a_6 b_7 c_8 のようにファイル名が変わると、マクロが動作しないので、ファイル名を、a_1、b_2、c_3 に変更してから、マクロを走らせています。(数字のところはいつも同じではありません) aとbとcのファイルは一つづつ存在します。 番号を変更しないで、マクロを走らせるには、マクロをどのように修正すれば良いのでしょうか。よろしくお願いします。

  • エクセルのマクロについて

    マクロのコードについて教えていただきたいと思います。 sheet1のA2に[=today()]の数式があって、その下の表がであります。表にもオートサムなどの関数 B2~H 70まであります。 sheet2の 1行目が日付欄で、この日付とsheet1のA2が一致した時にB2~H 70の表の数値だけを転記することは可能でしょうか。 わかりにくくて申し訳ありませんがコードがわかれば助かります。

  • エクセル2000のマクロについて教えて下さい。

    いつも お世話になっております。 マクロにはこだわってはいませんが、 a1:a1000 まで名称があります。 セルb1に一部の名前を入力したら a1:a1000の間に同じ名称があった 場合c1に表示できないでしょうか? ただし 複数があった場合はc1:c・・・・で表示したいので マクロではないとできないかなと思っています。 すみませんがよろしくお願いします。

  • ファイル名変更後も、マクロを動作させたいのですが?

    データ入力用雛形ファイル(入力用.xls)に、データ入力完了後、保存用マクロでデータ部分だけをデータベース蓄積用ファイル(データ.xls)に、コピー・ペースト(数回に分けて)し、元の入力用.xlsを名前を変えて(日付&時間&ID番号.xls)別名保存する、マクロを作りました。 通常はうまくいくのですが、マクロの動作後、訂正箇所が発生したときに、現状ではマクロが正しく動作しません。(ファイル名が変わっているため?) どなたか教えていただけないでしょうか? よろしくお願いします。

専門家に質問してみよう