• ベストアンサー
  • すぐに回答を!

Open Filenameで変わるファイル名を開く

スマホアプリで作成したデータをパソコンのExcelから開きたいです。 vbaで操作したいのですが、アプリでエクスポートされたファイル名は日々名前が変わります。 Open Filenameで操作したいです。 Sub Sample1は開きますが、毎日ファイル名をて入力しなければなりません。 Sub Sample1() Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel-160906.xls" '←「yymmdd.xls(年年月月日日).xlsの数値が入っています」 End Sub Sub Sample2に日々変わるファイル名の数値の部分を*に置き換えましたが、駄目でした。実行エラー1004 Sub Sample2() Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel*.xls" End Sub Sub Sample3に日々変わるファイル名の数値の部分を??????に置き換えましたが、駄目でした。実行エラー1004 Sub Sample3() Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel-??????.xls" End Sub ファイル名の変わる部分の指定方法を教えて下さい。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数1211
  • ありがとう数5

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

  • ベストアンサー
  • 回答No.2
  • kkkkkm
  • ベストアンサー率59% (1045/1749)

cal-excel-160906.xlsの数値部分がyymmddで実行当日でしたら Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel-" & Format(Date, "yymmdd") & ".xls" でいけます。深夜に作業する場合、エクスポートが24時前でマクロ実行が24時を超えた時にはエラーになりますので、開く前にファイルの存在の有無を確認したほうがいいと思われます。 以下のページを参考にして確認してください。 http://officetanaka.net/excel/vba/file/file06.htm

共感・感謝の気持ちを伝えよう!

質問者からのお礼

動作確認できました。 ありがとうございます。

関連するQ&A

  • Workbooks.openについて

    超初心者です。 Workbooks.Openを使って他の任意のxslファイルを開きたいのですが、 Sub Test_FileOpen() Workbooks.Open Filename = "c:\MyDocuments\data.xls" End Sub のように書いても 「実行時エラー'1004': 'False.xls'が見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください」 と言うアラートが出て上手くいきません。 ファイルのパスは何度も確認したので間違いはないです。 ちなみに同じフォルダに置いて、 Sub Test_FileOpen() Workbooks.Open Filename = ThisWorkbook.Path & "\data.xls" End Sub とやっても同じアラートが出ます。 どこがおかしいのでしょうか? 原因が推測できる方、どうかご教授願います。

  • VBA Workbooks.open

    ブックを開くコマンド × Workbooks("filename.xls").open ○ Workbooks.open filename:="filename.xls" 何故下なのですか?ワークブックコレクションの中から特定のブックを指定し開くなら、上の構文にした方がワークシートコレクション等と構文表現を統一出来ます。 現にブックを閉じるコマンドは Workbooks("filename.xls").close です。何故ブックを開くコマンドだけ別表現なのですか?

  • VBAでのファイルの開き方について

    いつもお世話になっております。(エクセル2010を使用) エクセルVBAを学習中の者です。 ダイアログボックスを表示してファイルを開く・・・というコードを記述しているのですが、分からない点があるためご指導をお願いします。 Sub Sample1() Dim openFileName As String openFileName = Application.GetOpenFilename filefilter:="Microsoft Excelブック,*.xls?" Workbooks.Open Filename:=openFileName End Sub を実行するとコンパイルエラーの構文エラーが表示されます。 Sub Sample2() Dim openFileName As String openFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Workbooks.Open Filename:=openFileName End Sub を実行すると正常に動作します。 私の現在の知識ではSample1も正常に動作するはずなんですが・・・ (※コードはVBEをコピペしています) 両者の違いはなんでしょうか?(※スペルの間違いは無いとは思いますが・・・) どうぞよろしくお願いいたします。

その他の回答 (3)

  • 回答No.4

そのフォルダの中には、エクセルのファイルが複数あると思うので、多分、この方法はダメなのですが、もし、エクセルファイルは、目的のファイル1つしか存在しない(エクセル以外のファイルはあっても可)のでしたら、 Set s = CraeteObject("Scripting.FileSystemObject") Set f = s.GetFolder("C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite") For Each n In f.Files e = LCase(s.GetExtensionName(n.Name)) If e = "xls" or e = "xlsx" Then Workbooks.Open f & "\" & n.Name End IF Next これで、「f」に格納されたフォルダ(C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite)の中のすべてのファイルを「For Each n In f.Files」で調べてゆき、拡張子が「xls」または「xlsx」のファイルがみつかると、「Workbooks.Open」で開いていきます。 何度も言いますように、フォルダ内にあるすべてのエクセルファイル(拡張子が「xls」または「xlsx」ファイル)を次々に開いてしまいます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

CraeteObjectはユーザ定義変数でしょうか。 そこら辺勉強不足で申し訳ありません。 ありがとうございます。

  • 回答No.3
  • kkkkkm
  • ベストアンサー率59% (1045/1749)

No2です。 もしファイル名の数値の部分が当日ではないとか、実行時に数値部分を特定できる規則的な何かがない場合には、ファイルを開くダイヤログを出して開く方法があります。 以下のページを参考にしてください。 http://officetanaka.net/excel/vba/file/file02.htm

共感・感謝の気持ちを伝えよう!

質問者からのお礼

Dir関数は、そのファイル名を返すのが使えそうです。 ありがとうございます。

  • 回答No.1

 今日の日付でファイルを自動的に取得すれば良いのであれば・・・ Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel-"&YEAR(TODAY())&MONTH(TODADY())&DAY(TODAY())&".xls"  のような感じで、変わるところに、変わる文字列を自動で入れてあげれば、いけませんか。  もし、昨日の日付が欲しいなら、日付関数の所を昨日に書き換えればいけます。  ??????のところが、もっと複雑なルールになるようであれば、いったん、??????の部分を別に作って、文字列変数に保管して置いて  KAWARUMOJI=ふにゃらふにゃら  Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel-" & "KAWARUMOJI & ".xls" とやった方が見通しが良いかもしれません。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。

関連するQ&A

  • VBAでファイルを閉じる時に、他のエクセルファイルを閉じるには?

    VBAで、 Private Sub Workbook_Open() Workbooks.Open FileName:="バス時刻表.xls",ReadOnly:=True End Sub で、バス時刻表.xlsを自動的にオープンした後、 閉じる時に、 Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("バス時刻表.xls").Close End Sub で記述したら、エラーとなります。 どのようにすればいいのでしょうか? よろしくお願いします。

  • エクセルVBAでFileNameを使用してブックを開き又は保存する方法

    現在の構文は以下の通り作成し使用しています。 Dim FileName1 FileName1="\\C\台帳.xls" Workbooks.Open FileName1 で目的のブックを開きます。  更新等の作業をした後ブックを保存する場合 Workbooks("台帳.xls").Close Savechanges:=true  で保存していますが、 (1)「FileName1」を使用して保存する方法を教えて頂きたいのですが可能でしょうか。 (2)同時に「FileName1」を使用してブックをアクティブにしたりセレクトする方法も教えて頂きたいのです。 ブックをセーブ・アクティブ・セレクトするたびにブックの名前をいちいち入力していますが、「FileName1」を使用してブック名の入力手間を減らしたいのです。

  • VBA-Workbook_Open()イベントで

    再度、お世話になります。 手順1.book1よりボタンをクリックしてbook2を開く 手順2.あるフォルダの.xlsファイル名をボタン名に貼り付ける 手順3.book2の戻るボタンでbook2を閉じ、book1を開く 手順4.手順1を実行する という流れを行ったところ1回目のbook2の表示の際にはうまくファイル名を表示できるのですが、戻った後の2回目のbook2の表示ではファイル名が1回目のときのままになってしまいます。 一部 [book2での処理] ***Module1*** Public strPath as String ***ThisWorkbook*** Public Sub Workbook_Open() strPath = "C:\" & Worksheets("Sheet1").Range("A1") myName = Dir(strPath & "\*.xls", vbDirectory) If myName <> "" Then FCnt = FCnt + 1 Worksheets("Sheet1").OLEObjects("btn" & FCnt).Object.Caption = myName Do ・・・(略) Loop End If End Sub ***Sheet1*** Private Sub btnBack_Click() Workbooks.Open Filename:="C:\book1.xls" Workbooks("book2.xls").Close saveChanges:=False End Sub のようにしています。 お手数をおかけしますが、どなたかご教授お願いいたします。

  • エクセルマクロ ファイル名を変更したとき

    マクロ初心者です。 データファイルからシートを複写挿入するマクロです。 コピー先ファイル名を都度変更したいのですが、その場合マクロにコピー先ファイル名が入っているのでエラーになります。名前が変わっても実行できるようにするにはどうしたらよいのでしょう? なお、複写元のデータファイルは複写後に閉じます。 Workbooks.Open Filename:="データファイル.xls" Sheets("Sheet1").Copy Before:=Workbooks("コピー先ファイル名.xls").Sheets(1)

  • エクセルVBAで複数の変数に、パス、ファイルを格納しOpenする方法

    よろしくお願いします。 環境:Excel2003 以下のような形でファイルを開きたいのですが、変数を?げる方法がわかりません。 *A1はファイルへのパス *A2はファイル名 hoge_path = ActiveSheet.Range("A1").Value hoge_filename = ActiveSheet.Range("A2").Value Workbooks.Open hoge_pathとhoge_filenameを?げた変数 また、ファイル名がaaの場合、aa*.xls(aabb.xlsやaa1111.xls)も開ける形にもしたいと思っています。 よろしくお願いいたします。

  • 結合した文字列をファイル名に使えない

    Excel上に入力されているパス名とファイル名のデータを組み合わせて、 様々なファイルを開いたりコピーしたりするVBAのコードを作ろうとしています。 仮にシート上のA1セルに、C:\Documents and Settings\デスクトップ というパス名 A2セルに URIAGE.xls というファイル名が入力されていたとして、 A1の文字列データとB1の文字列データを結合する場合、 Sub FileSousa()  Dim a As String  Dim b As String  Dim c As String  a = Cells(1, "A").Value  b = Cells(2, "A").Value  c = Chr(34) & a & "\" & b & Chr(34)  Range("A3") = c としてみると、確かにA3セルには、"C:\Documents and Settings\デスクトップ\URIAGE.xls" と出力され、文字列が結合されたことがわかるのですが、その変数cのデータを使って  Workbooks.Open Filename:=c として、そのファイルを開こうとすると、ファイル名が見つからないとしてエラーになります。 ファイルはデスクトップ上の確かにその名前で存在しており、直接 Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\URIAGE.xls" とすると開きます。 " を Chr(34)によって入力したのがいけないのでしょうか、 Workbooks.Open Filename:=××× には、変数を置いてはいけないのでしょうか。 そもそも文字列の結合は、"あ" & "い" → "あい" となるのが基本だと思うのですが、 a="あ"、b="い"、c=a&b → c="あい"として結合した変数cについては、ファイル操作上のファイル名の設定項目として使えないのでしょうか。

  • エクセル ファイル名を指定して保存閉じる。

    Sub ブックを開く() Workbooks.Open Filename:="D:\顧客データ\" _ & Range("B1").Value & ".xls" End Sub 上記のマクロでファイルを開き作業をしています。 作業後にファイルを上書保存して閉じるには どのようなマクロになるのでしょうか。 よろしくお願いします。

  • エクセル 別のエクセルの特定のシートを開きたいのですが

    宜しくおねがいします。 現在、エクセルで 下記のようなVBAを使用しております。 Private Sub CommandButton1_Click() Workbooks.Open Filename:="テスト.xls" End Sub テストのエクセルのSheet2を開きたい場合はどうすれば よろしいのでしょうか? 教えて下さい。宜しくお願い致します。

  • エクセルで、PW付きのファイルを開くには?

    Sub Macro1() Workbooks.Open Filename:="C:\Users\test.xlsx",,,0000 End Sub だと赤文字になってしまうのですが、どうすればいいでしょうか? パスワードは0000だとします。よろしくお願いします。

  • マクロでのファイル名組み方

    os xp ex 03 [Module1 (コード)] に入っています。 数字は必ず4桁 数字は順位ばらばら 社名が入っている時も未入力も有り。 1503住友石炭 5602栗本鉄工所   5803フジクラ 5959岡部 6976太陽誘電 9001東武鉄道 150円以下 8604野村hd  5196 5711 以上多い時は20位少ない時は1  上記を  下記の ¥0000メック  の処に組み込む方法をお願いします。 *呼び込み ChDir "C:\08-C\9\new-2" Workbooks.Open Filename:="C:\08-C\9\new-2\ 4971メック .xls", UpdateLinks:=0 End Sub  *保存 Sub new2A保存() Windows(" 4971メック .xls").Activate ActiveWorkbook.Save: ActiveWindow.Close End Sub