Excelマクロで特殊なファイルを開く方法

このQ&Aのポイント
  • Excelにて特殊なファイルを開く方法をマクロで行うための手順を解説します。
  • Excelのファイルを開く際、特殊なファイルを選択する手間を省くためにマクロを使用する方法を紹介します。
  • Excelのマクロを使ってファイルを開く際に特殊なファイルの選択を自動化する方法について説明します。
回答を見る
  • ベストアンサー

Excel : マクロでファイルを開く方法を

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

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

  • ベストアンサー
回答No.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 '//

rightlight
質問者

お礼

WindFaller様、ご回答有難うございます。 お礼が遅くなって申し訳ありませんでした。 ご回答の内容で私のやりたかったことが可能になりました。 本当に有難うございました。 また、初心者でもわかりやすい説明(マクロ)で非常にたすかりました。

関連するQ&A

  • 複数のCSVファイルを読み込んで複数シートを1ブックとしたい

    始めまして。 VBA初心者です。 2枚のCSVファイルをダイアログで各々指定し、保存する2枚のシートを1ブックにまとめたいのですが、うまくいきません。 現状は以下のようなマクロですが、別々のシートとなります。 よろしくお願い致します。 Sub 選択されたPDPファイルを開いて読み込む() With Application.FileDialog(msoFileDialogOpen) .Title = "ファイルを選択して[OK]ボタンをクリックしてください" .AllowMultiSelect = False '複数選択不可 .Filters.Clear .Filters.Add "1枚目", "*.csv", 1 If .Show = -1 Then .Execute 'キャンセルでなければ開く End With With Application.FileDialog(msoFileDialogOpen) .Title = "2つめのファイルを選択して[OK]ボタンをクリックしてください" .AllowMultiSelect = False '複数選択不可 .Filters.Clear .Filters.Add "2枚目", "*.csv", 1 If .Show = -1 Then .Execute 'キャンセルでなければ開く End With End Sub

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

    エクセルの「ファイルを開く」ダイアログボックスを使用してファイルを開き、その開いたファイルに対してとあるマクロを実行させたいと思っています。 エクセルの「ファイルを開く」ダイアログボックスでパス取得までは理解出来たのですが、その先の処理が分かりません。 「ファイルを開く」と言うのは、「現在アクティブになっているシートにデータを貼り付けて」の処理でも構いません。 Dim Ret As Variant Ret = Application.GetOpenFilename("Excel ブック (*.xls), *.xls, テキストファイル(*.txt),*.txt") If Ret = False Then MsgBox "キャンセルが選択されました。" Exit Sub Else       'ここにRetで取得しているパスのファイルを開いて、sub_WAITのマクロを実行させたいです。 sub_WAIT.Show End If End Sub

  • Word VBA: 任意の html ファイルをファイルを開くダイアログから開くには?

    こんにちは、 Word VBA のことで質問があります。 今任意の html ファイルを[ファイルを開く]ダイアログから開くというマクロを作りたいので下記のプログラムを書きましたがこれではあらかじめファイル名やパスが指定されたものになってしまうので目的を満たせないと気づきました。。 Documents.Open メソッドではファイル名の指定が必須だそうですし、、そうするとほかに考えられる手段はどんなものか、 変数を使えばできそうですが、具体的にはどんなプログラムを組めばよいかなど悩んでいます。 ちなみにマクロを作成する環境は word 2003 です。 ***以下、現状のプログラム内容です。*** Private Sub OpenButton_Click() '任意の html ファイルを開き、[File Path] テキストフィールドへファイルのフルパスを表示します Dim dlgOpen As FileDialog Set dlgOpen = Application.FileDialog( _ FileDialogType:=msoFileDialogOpen) With dlgOpen .AllowMultiSelect = False If .Show = -1 Then MainWindow.TextBox1 = .SelectedItems(1) Documents.Open FileName:="C:\test.html", Format:=wdOpenFormatEncodedText End If End With End Sub ************************************************************ 目的を満たすためにはどのようなプログラムをかけばよろしいのか どなたかご指導いただけませんでしょうか よろしくお願いいたします。

  • Excelで「名前をつけて保存」しようとすると、別ファイルが開くのですが・・・

    こんにちは。いつもお世話になります。 WinXp、Excel97を使用しています。 Excelで、メニューバーから「ファイル(F)」→「名前をつけて保存(A)」を選択すると、 「ファイル名をつけて保存」ダイアログの表示される前に、 別の、ある特定のExcelブックが開いてしまう現象が起きて困っています。 この特定のブックですが、マクロが組んであり、 その中に次のようなコードがありますが、関係しているでしょうか。 Sub Auto_Open() With Application.CommandBars("Worksheet Menu Bar") '"ファイル(F)"を選択 With .Controls(1) '"名前を付けて保存(A)"を選択 With .Controls(5) 'ダイアログボックス表示関数を呼ぶ .OnAction = "Dialog_Open" End With End With End With End Sub ちなみに、新規ブック保存時に、「標準」ツールバーの フロッピーアイコン(上書き保存)を押下した時はこの現象は起きません。 ぜひ、解決のヒントをください。よろしくお願いします。

  • エクセルVBAでマクロなしのブックでマクロを使う方法

    タイトルが変ですが、こういうことです。 Sub serch() Application.Dialogs(xlDialogFormulaFind).Show ActiveCell.Value End Sub このコードは検索ダイアログを表示するものですが、これをマクロなしの様々なブックで使いたいのです。 何か方法があるでしょうか?

  • VBAでファイル名の取得方法

    FileDialogを使用してユーザーにファイル名を指定してもらい、結果からフルパスを取得する事はできたのですが、パスではなくファイル名を取得するにはどのようにすれば良いのでしょうか? Dim lngCount As Long ' ファイル ダイアログを開きます。 With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show '選択された各ファイルのパスを表示します。 For lngCount = 1 To .SelectedItems.Count lblPath_1.Caption = .SelectedItems(lngCount) Next lngCount End With

  • EXCELにテキストファイルを読込むマクロ作成

    EXCELにテキストファイルを「カンマ区切り」で読み込みしたいのですが、 下記マクロの内容ではカンマ区切りで正しくインポートされないのですが 作成方法ご伝授お願いいたします。 sub macro1()  dim myFile as string  myfile = application.getopenfilename(filefilter:="テキストファイル(*.txt),*.txt")  if myfile = "False" then exit sub  workbooks.opentext _   filename:=myfile, _   datatype:=xldelimited, _   textqualifier:=xltextqualifierdoublequote, _   tab:=true, _   comma:=true, _   space:=true ’予備  activeworkbook.worksheets(1).move before:=thisworkbook.worksheets(1) end sub

  • マクロで質問です

    下記のようなマクロで現在はマクロコード内にフォルダのアドレスを書いていますが これをダイアログを開いてフォルダを選択できるようにするには どうすればよいでしょうか? Sub Sample10()    Call FileSearch("V:\個人\飯塚\マクロ\RawData2") End Sub Sub FileSearch(Path As String) Application.ScreenUpdating = False    Dim FSO As Object, Folder As Variant, File As Variant    Set FSO = CreateObject("Scripting.FileSystemObject")    For Each Folder In FSO.GetFolder(Path).SubFolders        Call FileSearch(Folder.Path)    Next Folder    For Each File In FSO.GetFolder(Path).Files        If File.Name = "RawData" Then Workbooks.Open fld & File, Format:=2 Range("B1:B180").Select Application.CutCopyMode = False Selection.Copy Application.DisplayAlerts = False ActiveWindow.Close Application.DisplayAlerts = True Range("f2").Select ActiveSheet.Paste ActiveSheet.Next.Activate End If    Next File End Sub

  • Excelのマクロでファイルを開くのダイアログをキャンセルしたときの挙

    Excelのマクロでファイルを開くのダイアログをキャンセルしたときの挙動についてです。 マクロで次のような記述をしています。 Sub tekitou() Dim vntFileName As Variant vntFileName = _ Application.GetOpenFilename( _ FileFilter:="エクセルファイル(*.xls),*.xls" & _ ",CSVファイル(*.csv),*.csv" _ , FilterIndex:=1 _ , Title:="ファイルを開く" _ , MultiSelect:=False _ ) If vntFileName <> "False" Then Workbooks.Open Filename:=vntFileName End If うんたらかんたら End Sub このとき、ファイルを開くのダイアログをキャンセルしたときでも「うんたらかんたら」の部分が実行されてしまいます。 キャンセルを押したときにそこでそれ以降をスキップして何もなかったかのような挙動をさせるためにはどのような記述をすればいいのでしょうか?

  • マクロからマクロを呼び出す方法

    ブックの中にあるマクロを呼び出すマクロを書きたいです。 Sub Macro2()   Application.Run "Book1!Macro1" End Sub とすると、book1のmacro1しか呼び出せませんが、マクロを書いているファイル(コピーして仮にbook2) のマクロを呼び出すにはどのように書けばよいでしょうか?(マクロブックだけ他のファイルにコピーして使う用途を想定しています。

専門家に質問してみよう