Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3681 / 13646 ツリー ←次へ | 前へ→

【60698】あるフォルダ内の更新日が新しいCSVファイルを開く 昇進者 09/3/9(月) 18:14 質問[未読]
【60699】Re:あるフォルダ内の更新日が新しいCSVファ... kanabun 09/3/9(月) 18:21 発言[未読]
【60702】Re:あるフォルダ内の更新日が新しいCSVファ... kanabun 09/3/9(月) 21:48 発言[未読]
【60715】Re:あるフォルダ内の更新日が新しいCSVファ... ああ 09/3/10(火) 14:45 お礼[未読]
【60716】Re:あるフォルダ内の更新日が新しいCSVファ... kanabun 09/3/10(火) 15:36 発言[未読]
【60723】Re:あるフォルダ内の更新日が新しいCSVファ... 初心者 09/3/11(水) 14:45 発言[未読]
【60727】Re:あるフォルダ内の更新日が新しいCSVファ... neptune 09/3/11(水) 15:41 発言[未読]
【60724】Re:あるフォルダ内の更新日が新しいCSVファ... 初心者 09/3/11(水) 14:46 お礼[未読]
【60728】Re:あるフォルダ内の更新日が新しいCSVファ... kanabun 09/3/11(水) 16:38 発言[未読]
【60747】Re:あるフォルダ内の更新日が新しいCSVファ... こまつ 09/3/12(木) 17:28 質問[未読]
【60751】Re:あるフォルダ内の更新日が新しいCSVファ... kanabun 09/3/12(木) 17:47 発言[未読]
【60752】Re:あるフォルダ内の更新日が新しいCSVファ... kanabun 09/3/12(木) 17:52 発言[未読]
【60755】Re:あるフォルダ内の更新日が新しいCSVファ... こまつ 09/3/13(金) 10:31 お礼[未読]

【60698】あるフォルダ内の更新日が新しいCSVファ...
質問  昇進者  - 09/3/9(月) 18:14 -

引用なし
パスワード
   題名の通り、更新日の新しいファイルを開きたいです。

よろしくお願いします。

【60699】Re:あるフォルダ内の更新日が新しいCSVフ...
発言  kanabun  - 09/3/9(月) 18:21 -

引用なし
パスワード
   ▼昇進者 さん:
>題名の通り、更新日の新しいファイルを開きたいです。

更新日は FileDateTime関数で取得できます。

【60702】Re:あるフォルダ内の更新日が新しいCSVフ...
発言  kanabun  - 09/3/9(月) 21:48 -

引用なし
パスワード
   もすこし具体的に書くと、

Sub Try1()
 Const myPath = "D:\(Data)\" 'ここに検索フォルダをセットする(最後は \)
 Dim myFile As String
 Dim LastFile As String
 Dim fDate As Date, LastDate As Date
 
 myFile = Dir$(myPath & "*.csv")
 Do While Len(myFile)
   fDate = FileDateTime(myPath & myFile)
   If LastDate < fDate Then
     LastDate = fDate
     LastFile = myFile
   End If
   myFile = Dir$()
 Loop
 MsgBox "最新のCSVファイルは" & vbCr _
    & LastFile & vbTab & LastDate & vbCr _
    & "です"
   
End Sub

といった感じでどうですか?

【60715】Re:あるフォルダ内の更新日が新しいCSVフ...
お礼  ああ  - 09/3/10(火) 14:45 -

引用なし
パスワード
   ▼kanabun さん:
ありがとうございます。
できました。

さらに、欲を言いますと、
そのファイルを開くことは可能ですか?


もすこし具体的に書くと、
>
>Sub Try1()
> Const myPath = "D:\(Data)\" 'ここに検索フォルダをセットする(最後は \)
> Dim myFile As String
> Dim LastFile As String
> Dim fDate As Date, LastDate As Date
> 
> myFile = Dir$(myPath & "*.csv")
> Do While Len(myFile)
>   fDate = FileDateTime(myPath & myFile)
>   If LastDate < fDate Then
>     LastDate = fDate
>     LastFile = myFile
>   End If
>   myFile = Dir$()
> Loop
> MsgBox "最新のCSVファイルは" & vbCr _
>    & LastFile & vbTab & LastDate & vbCr _
>    & "です"
>   
>End Sub
>
>といった感じでどうですか?

【60716】Re:あるフォルダ内の更新日が新しいCSVフ...
発言  kanabun  - 09/3/10(火) 15:36 -

引用なし
パスワード
   ▼ああ さん:
>▼kanabun さん:
>ありがとうございます。
>できました。
>
>さらに、欲を言いますと、
>そのファイルを開くことは可能ですか?

できます。
いろいろ方法があります。マクロの記録をとってみてください。

(1)ダブルクリックで開く  → Workbooks.Open CSVファイル名
 ただ、この方法は 「00123」という文字列が 123という数値になったり、
 「2-3」という文字列が 2月3日 という日付になったり、化けてしまいます
 ので、以下の2つの方法のどちらかが おすすめです。

(2)拡張子を "*.txt" に代えて開く →Workbooks.OpenText
 
(3)メニュ-[データ]-[外部データの取り込み]-
  [テキストファイルのインポート]から
  ワークシートにインポートする →  ActiveSheet.QueryTables.Add

※ (2)(3)いずれも、テキストファイルウィザードで
  列のデータ型を「文字列」とか「YMD」日付 とか指定して開く(または
  インポートする)ものです。

※詳しくは
 「CSV 開く」でサイト内を AND検索すると、関連記事がたくさん見つかります。

【60723】Re:あるフォルダ内の更新日が新しいCSVフ...
発言  初心者  - 09/3/11(水) 14:45 -

引用なし
パスワード
   ▼kanabun さん:

ググってみたものの、
やはり私の知識では難しいです。
1.拡張子を変えて開く方法もお聞きしたいのですが、
2.拡張子を変更せずに、ファイル名と拡張子を分離して、それからCSVファイルを開くということは可能ですか?

ご回答、お待ちしております。

>▼ああ さん:
>>▼kanabun さん:
>>ありがとうございます。
>>できました。
>>
>>さらに、欲を言いますと、
>>そのファイルを開くことは可能ですか?
>
>できます。
>いろいろ方法があります。マクロの記録をとってみてください。
>
>(1)ダブルクリックで開く  → Workbooks.Open CSVファイル名
> ただ、この方法は 「00123」という文字列が 123という数値になったり、
> 「2-3」という文字列が 2月3日 という日付になったり、化けてしまいます
> ので、以下の2つの方法のどちらかが おすすめです。
>
>(2)拡張子を "*.txt" に代えて開く →Workbooks.OpenText
> 
>(3)メニュ-[データ]-[外部データの取り込み]-
>  [テキストファイルのインポート]から
>  ワークシートにインポートする →  ActiveSheet.QueryTables.Add
>
>※ (2)(3)いずれも、テキストファイルウィザードで
>  列のデータ型を「文字列」とか「YMD」日付 とか指定して開く(または
>  インポートする)ものです。
>
>※詳しくは
> 「CSV 開く」でサイト内を AND検索すると、関連記事がたくさん見つかります。

【60724】Re:あるフォルダ内の更新日が新しいCSVフ...
お礼  初心者  - 09/3/11(水) 14:46 -

引用なし
パスワード
   ググってみたものの、
やはり私の知識では難しいです。
1.拡張子を変えて開く方法もお聞きしたいのですが、
2.拡張子を変更せずに、ファイル名と拡張子を分離して、それからCSVファイルを開くということは可能ですか?

ご回答、お待ちしております。

>▼ああ さん:
>>▼kanabun さん:
>>ありがとうございます。
>>できました。
>>
>>さらに、欲を言いますと、
>>そのファイルを開くことは可能ですか?
>
>できます。
>いろいろ方法があります。マクロの記録をとってみてください。
>
>(1)ダブルクリックで開く  → Workbooks.Open CSVファイル名
> ただ、この方法は 「00123」という文字列が 123という数値になったり、
> 「2-3」という文字列が 2月3日 という日付になったり、化けてしまいます
> ので、以下の2つの方法のどちらかが おすすめです。
>
>(2)拡張子を "*.txt" に代えて開く →Workbooks.OpenText
> 
>(3)メニュ-[データ]-[外部データの取り込み]-
>  [テキストファイルのインポート]から
>  ワークシートにインポートする →  ActiveSheet.QueryTables.Add
>
>※ (2)(3)いずれも、テキストファイルウィザードで
>  列のデータ型を「文字列」とか「YMD」日付 とか指定して開く(または
>  インポートする)ものです。
>
>※詳しくは
> 「CSV 開く」でサイト内を AND検索すると、関連記事がたくさん見つかります。

【60727】Re:あるフォルダ内の更新日が新しいCSVフ...
発言  neptune  - 09/3/11(水) 15:41 -

引用なし
パスワード
   ▼初心者 さん:
こんにちは

>ググってみたものの、
>やはり私の知識では難しいです。
どんなキーワードで、どのようなヒットを期待してググッたんでしょう?
興味があるので出来れば教えて下さい。
そのものズバリはホントにごく稀にしかヒットする事無いです。

>1.拡張子を変えて開く方法もお聞きしたいのですが、
それは拡張子の種類によりますし、開くの意味によって答えは違ってきます。

>2.拡張子を変更せずに、ファイル名と拡張子を分離して、それからCSVファイルを開くということは可能ですか?
分離は可能です。が、何か意味があるんですか?
分解に関しては
ht tp://excelvba.pc-users.net/func/func3.html
で解説している関数を組み合わせる事で出来ます。
もしくはreplace一発でも可能です。
↑これは「Exce VBA 文字列処理関数」でググってヒットしました。期待通りの
情報です。

開くに関しては
既にUPされているサンプルを理解するとか、マクロの記録とかとって下さい。

【60728】Re:あるフォルダ内の更新日が新しいCSVフ...
発言  kanabun  - 09/3/11(水) 16:38 -

引用なし
パスワード
   ▼初心者 さん:
>ググってみたものの、
>やはり私の知識では難しいです。
> ググってみたものの、

ぼくが
>※詳しくは
>「CSV 開く」でサイト内を AND検索すると、関連記事が...見つかります。

とコメントしたのは
この掲示板『Excel VBA質問箱 IV』のメニュー ↓
【新規投稿|ツリー表示|...|検索|設定|過去ログ|ホーム】
から、           ▲ ここをクリックして
検索するという意味でしたが、
ま、それは置いといて、

紹介しました3つの方法は試されたのでしょうか?

---------------------------------------------------------------------------
>(1)ダブルクリックで開く  → Workbooks.Open
  メニュー「ファイル」-「開く」ダイアログで そのCSVファイルを指定する操作

>(2)拡張子を "*.txt" に代えて開く →Workbooks.OpenText
  ▼以下を参考に
  ht tp://www.relief.jp/itnote/archives/000839.php
  なお、VBAで
  ファイル名を変更するには FileCopy というステートメントもあります。
  
>(3)メニュ-[データ]-[外部データの取り込み]-
>  [テキストファイルのインポート]から
>  ワークシートにインポートする →  ActiveSheet.QueryTables.Add
  ▼以下を参考に
  ht tp://www.relief.jp/itnote/archives/001687.php

  この操作ならば、事前に拡張子を変更する必要がありません。


それともマクロの記録のしかたが分からない、ということでしたら、

  ▼犬でもわかるExcelVBA講座
   §3 マクロを記録して実行する 
   ht tp://excelfactory.net/inukouza/inu03.htm

あたりを参考になさって記録に挑戦してください。

【60747】Re:あるフォルダ内の更新日が新しいCSVフ...
質問  こまつ  - 09/3/12(木) 17:28 -

引用なし
パスワード
   ▼kanabun様

>Sub Try1()
> Const myPath = "D:\(Data)\" 'ここに検索フォルダをセットする(最後は \)
> Dim myFile As String
> Dim LastFile As String
> Dim fDate As Date, LastDate As Date
> 
> myFile = Dir$(myPath & "*.csv")
> Do While Len(myFile)
>   fDate = FileDateTime(myPath & myFile)
>   If LastDate < fDate Then
>     LastDate = fDate
>     LastFile = myFile
>   End If
>   myFile = Dir$()
> Loop
> MsgBox "最新のCSVファイルは" & vbCr _
>    & LastFile & vbTab & LastDate & vbCr _
>    & "です"
>   
>End Sub

勉強の為にいろいろ見てはヘルプ等で調べているのですが、
上記のDir関数の後ろにくっついている$マークは何を意味するのでしょうか?

今回のプログラム上では在っても無くても同じ結果が得られるのですが。
どのような時に使用するものなのでしょうか?

宜しくお願い致します。

【60751】Re:あるフォルダ内の更新日が新しいCSVフ...
発言  kanabun  - 09/3/12(木) 17:47 -

引用なし
パスワード
   ▼こまつ さん:

>ヘルプ等で調べているのですが、
>上記のDir関数の後ろにくっついている$マークは何を意味するのでしょうか?
ヘルプの「目次」から
  Visual Basic プログラミングのヒント
   関数からの文字列の取得
 
のトピックを読んでみてください。

> 関数によっては 2 つの形式を持つものがあります。
> バリアント型 (Variant) を返す形式と、文字列型 (String) を返す
> 形式です。バリアント型 (Variant) を返す形式は、異なるデータ型
> への変換が自動的に行われるので便利です。この形式を使用すると、
> Null 値を式で渡すことができます。文字列型 (String) を返す形式
> は、使用するメモリが少ないため、より効率的です。

> 次の場合は、文字列型 (String) を返す形式を使用することを検討してください。
> ・プログラムが大きく、多くの変数を使用する場合。
> ・データをランダム アクセス ファイルに直接書き込む場合。

>次の関数は関数名にドル記号 ($) を追加すると、文字列型 (String)
> の値を返します。

> Chr$   ChrB$   *Command$
> CurDir$  Date$   Dir$
> Error$  Format$  Hex$
> Input$  InputB$  LCase$
> Left$   LeftB$  LTrim$
> Mid$   MidB$   Oct$
> Right$  RightB$  RTrim$
> Space$  Str$   String$
> Time$   Trim$   UCase$

昔は 「$」付きしかなかったんだけど、データベースを扱うように
なって、Variant型が登場したんですね、きっと。

【60752】Re:あるフォルダ内の更新日が新しいCSVフ...
発言  kanabun  - 09/3/12(木) 17:52 -

引用なし
パスワード
   こちらも参考にどうぞ

Office TANAKA - VBA高速化テクニック(文字列型関数を使う)
ht tp://www.officetanaka.net/excel/vba/speed/s12.htm

【60755】Re:あるフォルダ内の更新日が新しいCSVフ...
お礼  こまつ  - 09/3/13(金) 10:31 -

引用なし
パスワード
   ▼kanabun様
理解できました。ありがとうございます。

3681 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free