重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excelにて下記の方法で特殊なファイル(.textでは無い)を開いています。


 1.メニューの『開く』で『ファイルを開く』ダイアログを表示させる。

 2.毎回、同じフォルダを選択し、さらに一つ下の階層のフォルダ群の中から更新日が最新のフォルダを開く。

 3.特殊なファイルなのでファイルの種類を『すべてのファイル』にする。
   (他のアプリケーションで作成されたファイルで、拡張子もない)

 4.表示されたファイル群から任意のファイルを選択し開く。
   (選択するファイルは毎回変わる)

 5.『テキストファイルウィザード』が立ち上がってくるのでスペース区切りでファイルを開く


しかし、この一連の作業に煩わしさを感じ、
以下のマクロにて『ファイルを開く』ダイアログを表示させ、
任意のファイルを単純に開く所まではマクロ超初心者でもできましたが、
ファイルをスペース区切りの状態で開く方法がいくら調べても分かりません。
  (↑あとこれだけなんです!!)


どうかマクロ上級者様方、お知恵をお貸し頂けませんでしょうか?



Private Sub CommandButton1_Click()
  With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = False
    .FilterIndex = 1
    .InitialFileName = "c:\フォルダ\"
   If .Show = -1 Then .Execute
  End With
End Sub

A 回答 (1件)

こんばんは。



CommandButton に入れるのは良いのですが、インポートの際に邪魔にならないようにしてください。
インポートの場所も以下のコードをみて任意に変えてください。

>マクロ上級者様
以下は、とても初心者らしいマクロだと思ってください。ふつうは、あまり、このような書き方はしません。貼り付けた後は、各々のプロパティは、ヘルプで調べてみてください。


'//
Sub TestOpen()
 Dim FileName As Variant
 Const mFOLDER As String = "C:\フォルダ\"
 ChDir mFOLDER
 With Application
  FileName = .GetOpenFilename _
  ("データファイル(*.*),*.*", MultiSelect:=False)
 End With
 If VarType(FileName) = vbBoolean Then Exit Sub
  With ActiveSheet.QueryTables.Add(Connection:= _
   "TEXT;" & FileName, Destination:=ActiveSheet.Range("A1")) 'インポートの左上端
   .RefreshOnFileOpen = False
   .RefreshStyle = xlOverwriteCells '上書き設定
   .AdjustColumnWidth = False
   .TextFilePlatform = xlWindows
   .TextFileStartRow = 1
   .TextFileParseType = xlDelimited
   .TextFileSpaceDelimiter = True 'スペース・デリミタをオン
   .TextFileConsecutiveDelimiter = True
   .TextFileTextQualifier = xlTextQualifierNone
   .TextFileTabDelimiter = True
   .TextFileCommaDelimiter = True
   .Refresh BackgroundQuery:=False
  End With
  ActiveSheet.QueryTables(1).Delete 'QueryTable の残骸を消す
End Sub
'//
    • good
    • 0
この回答へのお礼

WindFaller様、ご回答有難うございます。
お礼が遅くなって申し訳ありませんでした。

ご回答の内容で私のやりたかったことが可能になりました。
本当に有難うございました。

また、初心者でもわかりやすい説明(マクロ)で非常にたすかりました。

お礼日時:2014/04/07 12:09

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