エクセルのマクロ記録を使ったファイルの選択方法

このQ&Aのポイント
  • エクセルのマクロ記録を使ってファイルを選択する方法を教えてください。
  • Application.GetOpenFilenameを使用してファイルを取得する方法について教えてください。
  • txtファイルの中身から不要な部分を削除し、必要な部分のみを取り出す方法を教えてください。
回答を見る
  • ベストアンサー

エクセル マクロ 教えてください

お世話になります エクセルのマクロ記録を使った結果が下記のようになりました。 そこで、ファイルは自分で選択して開きたいと思い 色々調べた結果 Application.GetOpenFilenameを使用すればよい事がわかりましたが、どの部分を変更すればよいのかわかりません やりたいことは、txtファイルの中身の不要な部分を削除して必要な部分だけを取り出したいのです。 どうぞ、よろしくお願いします。 Sub Macro1() ' ChDir "C:\Documents and Settings\My Documents\next\aaa" Workbooks.OpenText Filename:= _ "C:\Documents and Settings\My Documents\next\aaa\aaa.txt" _ , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=True, Other:=True, OtherChar:="(", FieldInfo:= _ Array(Array(1, 9), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 9), Array(7 _ , 9)), TrailingMinusNumbers:=True Cells.Select Cells.EntireColumn.AutoFit End Sub

  • hou66
  • お礼率50% (79/155)

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

OpenText の引数 Filename に Application.GetOpenFilename の戻り値を渡せば良いだけです。 殆どヘルプのままですが、最低限のエラー処理としてキャンセル時の処理を追加しています。 ChDir "C:\Documents and Settings\My Documents\next\aaa" fName = Application.GetOpenFilename("テキスト ファイル (*.txt), *.txt") If fName = False Then Exit Sub Workbooks.OpenText Filename:=fName _

hou66
質問者

お礼

有難うございます。 何とかできました また何かの機会があればよろしくお願いします

関連するQ&A

  • テキストファイルを開く際のFor文の使い方

    質問です。あるフォルダに入っているテキスト形式のデータ10個をエクセルで開いていくVBAのプログロムを書いているのですが、エラー文で「i.txtがありません」と表示されます。私の書いたプログラムは下記です。 Sub テスト() テスト Macro Dim i As Integer For i = 0 To 5 ChDir "C:\Documents and Settings\データ" Workbooks.OpenText Filename:= _ "C:\Documents and Settings\データ\i.txt" _ , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True Next i End Sub このプログラムの目的は、テキストデータの入っているフォルダを他の名前に変更したときも、その中に入っているテキストデータ10個をエクセルで展開するためです。おそらく"C:\Documents and Settings\データ\i.txt"のiの部分が間違えていると思うのですが、どうすればいいでしょうか?よろしくお願いします。

  • テキストファイルを開く際のFor文の使い方

    質問です。あるフォルダに入っているテキスト形式のデータ10個をエクセルで開いていくVBAのプログロムを書いているのですが、エラー文で「データ_i.txtがありません」と表示されます。私の書いたプログラムは下記です。 Sub テスト() テスト Macro Dim i As Integer For i = 0 To 5 ChDir "C:\Documents and Settings\データ" Workbooks.OpenText Filename:= _ "C:\Documents and Settings\データ\_i.txt" _ , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True Next i End Sub このプログラムの目的は、テキストデータの入っているフォルダを他の名前に変更したときも、その中に入っているテキストデータ10個をエクセルで展開するためです。おそらく"C:\Documents and Settings\データ\_i.txt"のiの部分が間違えていると思うのですが、どうすればいいでしょうか?よろしくお願いします。

  • エクセルで選択してるセルに決まった動作をマクロに

    いつもお世話になっております。 手動で選択したセルに対して決まった動作をさせたいのですが、マクロの記録では最初に選択したセル番地で動くことになるので困っています。 やりたいことは、例えばA列の5~6行目を選択して、そのセルの内容を文字区切りで横に展開したいのです。 これをマクロの記録では Sub Macro1() Range("A5:A7").Select Selection.TextToColumns Destination:=Range("A5"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ :="\", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _ 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1)), TrailingMinusNumbers:=True End Sub となるのですが、この最初の行のRange("A5:A7”)Selectをその時に選んだセルで下のコードが実行されるようにしたいのですが。

  • Excel VBAでテキストを開く際の表示形式

    恐れ入りますが、ご存知の方、ご教授願います。 Excel VBAにてテキストファイルを開く際に、表示形式を"標準"ではなく"文字列"で取り込もうと思います。 "文字列"にするにはVBAで下記のように記述します。 ------------------------------------------------------------------ Workbooks.OpenText Filename:= _ sFileName _ , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array( Array(1, 2), Array(2, 2), Array(3, 2)) , TrailingMinusNumbers:=True ------------------------------------------------------------------ FieldInfo:=部分に列数だけArray(x, 2)を指定しますが、一括で"文字列"指定することは可能でしょうか。 恐れ入ります。ご教授願います。

  • ExcelのOpenTextで作ったシートのコピー

    Excel2010のVBAでテキストファイルを読み込むと新しいブックに読み込まれるので、新しいブックのシートをVBAのコードがあるブックにコピーしたいのですが CSVファイル読み込み時に使う Workbooks.Open の場合には  Dim wb As Workbook  Set wb = Workbooks.Open(Filename:="C:\test\test1.csv")  wb.Worksheets(1).Cells.Copy ThisWorkbook.Worksheets("Sheet1").Range("A1")  wb.Close False のような感じでコピーすることができたのですが テキストファイル読み込み時に使う Workbooks.OpenText の場合には  Dim wb As Workbook  Set wb = Workbooks.OpenText Filename:= _    "C:\test\test1.txt", _    Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _    , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _    Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), _    Array(9, 2)), TrailingMinusNumbers:=True  wb.Worksheets(1).Cells.Copy ThisWorkbook.Worksheets("Sheet1").Range("A1")  wb.Close False とすると、OpenTextの箇所で「Workbooks.OpenText Functionまたは変数が必要です」というコンパイルエラーが発生します。Set wb = Workbooks.OpenText (Filename:=・・・・True)のように括弧でくくっても同様のエラーがでてしまいます。 Microsoft Office 14.0 Object Libratyの参照設定はチェックされています。 Workbooks.OpenText Filename:= _・・・=Trueの部分はマクロの記録の機能で生成したコードです。 このような場合、どのように記述すればよいのでしょうか。 よろしくお願いします。

  • 【Excel2013】特定のセルを指定したくない

    下記マクロはD8:D80までのセルに入力されている文字を「文字列」にするマクロです。 Range("D8:D80").Select Selection.TextToColumns Destination:=Range("D8"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 2), TrailingMinusNumbers:=True Range("D8").Select End Sub 同じ作業を他のセルでも実行することが多々あるため、文字列にしたいセルを選択した状態でマクロを実行したいのです。 どのように設定すればよろしいのでしょうか?

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

    エクセルのマクロについて教えてください。 Dドライブのaaaというフォルダにある、何百個あるXLSファイルを開いて、カンマを取った後、CSVに保存したいです。 保存の名前はそのままで、拡張子だけをcsvに変えたいです。 エクセルは初級者レベルなのでプログラムも判らないのですが、自分で作ってみました。 Sub Macro20() ' ' Macro20 Macro ' マクロ記録日 : 2010/4/29 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+e ' Application.ScreenUpdating = False '画面更新を一時停止 CChDir ("D:/aaa") 'フォルダー名取得 Filename = Dir(ThisWorkbook.Path & "\*.xls") 'フォルダ内のXLSファイルを検索 Do Until fname = Empty '全て検索 Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのファイルを開きwbとする。 n = n + 1 'カウントしnとする Workbooks.Open Filename:= _ "C:\Documents and Settings\Owner\My Documents\aaa\1.xls" Cells.Select Selection.NumberFormatLocal = "G/標準" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\Owner\My Documents\aaa\*.csv", FileFormat:=xlCSV, _ CreateBackup:=False fname = Dir 'フォルダ内の次のCSVファイルを検索 Loop '繰り返す Application.ScreenUpdating = True '画面更新一時停止を解除 MsgBox n & "件を処理しましました。" End Sub ↓ 駄目でした>< アドバイスどうかお願い致します。

  • VBA 文字を指定文字で区切り、セルを分けたい。

    WINは7、Excelは2013を使用しています。 「A、B」や「A・B」を、「、」や「・」のところで区切り、セルを分けたいと思っています。 下記、マクロの記録で作ったものを、アレンジしているのですが、 OtherChar:="、" のところで、「・」を追加できなくて、つまづいてしまっています。 修正点をご教示頂けます様お願い致します。 ------------- Sub 区切り() Dim i As Integer Dim j As Integer Dim maxrow As Integer j = InputBox("「行」を数字で入力 " & vbCr & vbCr & "【例】A列=1、B列=2...Z列=26", _ "「行」を半角数字で入力して下さい。") maxrow = Cells(Rows.Count, j).End(xlUp).Row For i = 2 To maxrow Cells(i, j).Select If Cells(i, j) <> "" Then Application.CutCopyMode = False Selection.TextToColumns Destination:=ActiveCell, _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=True, _ Tab:=True, _ Semicolon:=True, _ Comma:=True, _ Space:=True, _ Other:=True, _ OtherChar:="、", _ FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _ TrailingMinusNumbers:=True end if Next i End Sub

  • UTF-8のデータを複数開いて編集したい

    皆様のお力をお貸しください 基本がわかってないために所々おかしなところがあるかも知れませんが宜しくお願いします。 UTF-8で書かれたxmlデータをエクセルで開いて編集して保存したいのですがうまくいきません。 Sub test1() Dim xmlFileName As Variant Dim F_Filter As String Dim i As Integer F_Filter = "データ,*.txt" xmlFileName = Application.GetOpenFilename(filefilter:=F_Filter, MultiSelect:=True, Title:="ファイル選択") If IsArray(xmlFileName) Then For i = 1 To UBound(xmlFileName) Workbooks.OpenText Filename:=xmlFileName(i), _ Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier _ :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _ False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True MsgBox xmlFileName(i) ActiveWorkbook.Close Next End If End Sub Origin:=932は Origin:=-535 だと思ってください。(家だとなぜかエラーのため) 一つはこんな感じです。 これだと連続編集できるのですが拡張子がxmlだとスクリプトエラー となってしまうため まず拡張子を手で.txtに変えています。 二つ目は Sub OpenFile() Dim xmlFileName As Variant Dim F_Filter As String Dim NewName As String F_Filter = "データ,*.xml" xmlFileName = Application.GetOpenFilename(filefilter:=F_Filter, MultiSelect:=False, Title:="ファイル選択") If xmlFileName = False Then MsgBox "キャンセルしました" Else NewName = Left(xmlFileName, InStrRev(xmlFileName, ".", -1, vbTextCompare)) & "txt" Name xmlFileName As NewName Workbooks.OpenText Filename:=NewName, _ Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier _ :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _ False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True MsgBox xmlFileName ActiveWorkbook.Close Name NewName As xmlFileName End If End Sub これだと拡張子を変更してくれるのですが連続編集できません。 拡張子を自動で変更しつつ連続編集できないものでしょうか。 というのも自作なのですがすべてつぎはぎでできているためうまくできないのです。どうぞ宜しくお願いします。 あわせて編集したあとUTF-8で保存したいのですがこちらのコード もわかりましたら宜しくお願いします。

  • loopでファイル名を取得したい

    loopでファイル名を取得して、テキストファイルをエクセルに保存していきたいのですが、 ↓ここ(StrFileName)でエラーになるのですが、どうしたらいいですか? Workbooks.OpenText FileName:=StrFileName, Origin:=932, StartRow:= _ ---------------------------------------- Private Sub コマンド23_Click() Dim StrFileName As String Const EXTENSION As String = ".txt" StrFileName = Dir$(Me!FilePathName & "\*" & EXTENSION) '任意のフォルダを指定 Do Until Len(StrFileName) = 0 'ファイルが無くなったら終了 MsgBox StrFileName Workbooks.OpenText FileName:=StrFileName, Origin:=932, StartRow:= _ 1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _ , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _ Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 2), _ Array(10, 1), Array(11, 1), Array(12, 2), Array(13, 1), Array(14, 1), Array(15, 1), Array( _ 16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), _ Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array( _ 29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), Array(35, 1), _ Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 2), Array(40, 1), Array(41, 2), Array( _ 42, 1), Array(43, 1), Array(44, 1)), TrailingMinusNumbers:=True ActiveWorkbook.SaveAs FileName:=FolderName & ActiveSheet.Name, _ FileFormat:=xlNormal, CreateBackup:=False ActiveWorkbook.Close False StrFileName = Dir$ '次のファイル名を取得 Loop End Sub

専門家に質問してみよう