[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フォルダ内のエクセルデータのシート5のみをタブ区切りテキストに変換』(nasu)
フォルダ内のエクセルデータをタブ区切りテキストに変換したいです。
フォルダわけなくても大丈夫です。
フォルダ内に
A.xls
B.xls
C.xls
というファイルがあるとすると、保存するテキスト名が全てA.txtになってしまいます。
Sub シート5をタブ区切りテキスト保存()
Dim Path As String Dim FName As String Dim msg As String
Path = "C:\Users\ユーザー名\Desktop\変換前\" FName = Dir(Path & "*.xls") txtFileName = "C:\Users\ ユーザー名 \Desktop\変換後\" & Replace(FName, ".xls", ".txt")
Do While FName <> "" Workbooks.Open Path & FName Worksheets(5).Activate
ActiveWorkbook.SaveAs FileName:=txtFileName, _ FileFormat:=xlText, CreateBackup:=False
ActiveWorkbook.Close SaveChanges:=False
msg = msg & txtFileName & vbCrLf
FName = Dir() Loop MsgBox msg End Sub
< 使用 Excel:unknown、使用 OS:Windows10 >
>保存するテキスト名が全てA.txtになってしまいます。 読み込むファイル名から保存するファイル名への変換をループの前での回しか行っていないため。 >txtFileName = "C:\Users\ ユーザー名 \Desktop\変換後\" & Replace(FName, ".xls", ".txt") を >Do While FName <> "" の次の行に移動させては? あとtxtFileNameの定義がないようだが。 (ねむねむ) 2022/06/20(月) 11:01
おっと文字抜け。 >読み込むファイル名から保存するファイル名への変換をループの前での回しか行っていないため。 ↓ 読み込むファイル名から保存するファイル名への変換をループの前での1回しか行っていないため。 (ねむねむ) 2022/06/20(月) 11:13
ご回答くださりありがとうございます。
希望の動作ができました!
見ての通りの初心者なので大変助かりました。
定義も抜けていました…
ありがとうございました。
(nasu) 2022/06/20(月) 11:23
初心者の浅はかな考えで申し訳ないですが、
https://www.239-programing.com/excel-vba/basic/basic072.html
こちらを使用させていただいて、全シートにしようと試みました。
Dim i As Integer
を追加
Worksheets(i).Activate
に
For i = 1 To Worksheets.Count
を追加
テキスト名を & i
を追加しましたが、動きませんでした…
考え方から全然違うのでしょうか?
Sub フォルダ内全シートタブ区切りテキスト保存()
Dim Path As String Dim FName As String Dim txtFileName As String Dim msg As String Dim i As Integer
Path = "C:\Users\ ユーザー名 \Desktop\変換前\" FName = Dir(Path & "*.xls")
Do While FName <> "" txtFileName = "C:\Users\ ユーザー名 \変換後\" & Replace(FName, ".xls", ".txt") For i = 1 To Worksheets.Count Workbooks.Open Path & FName Worksheets(i).Activate
ActiveWorkbook.SaveAs FileName:=txtFileName & i, _ FileFormat:=xlText, CreateBackup:=False
ActiveWorkbook.Close SaveChanges:=False
msg = msg & txtFileName & vbCrLf
FName = Dir()
Loop MsgBox msg End Sub
(nasu) 2022/06/23(木) 14:46
まずシート数は対象のブックを開いてからでないと確認できない。 よって >For i = 1 To Worksheets.Count は >Workbooks.Open Path & FName の後になる。 またこのForに対応するNextがない。
次に、 >txtFileName & i としているがtxtFileNameの中は パス名\ファイル名.txt なのでそのままでは拡張子のほうに数値がついてしまう。
あとどのブックのシートなのかを明示したほうがいいので次ではどうだろうか? Sub フォルダ内全シートタブ区切りテキスト保存() Dim Path As String Dim FName As String Dim txtFileName As String Dim msg As String Dim WK_BOOK As Workbook Dim i As Integer
Path = "C:\Users\ ユーザー名 \Desktop\変換前\" FName = Dir(Path & "*.xls") Do While FName <> "" txtFileName = "C:\Users\ ユーザー名 \変換後\" & Left(FName, InStrRev(FName, ".") - 1) Set WK_BOOK = Workbooks.Open(Path & FName) For i = 1 To Worksheets.Count WK_BOOK.Worksheets(i).Activate WK_BOOK.SaveAs Filename:=txtFileName & i & ".txt", _ FileFormat:=xlText, CreateBackup:=False msg = msg & txtFileName & i & "txt" & vbCrLf Next WK_BOOK.Close SaveChanges:=False FName = Dir() Loop MsgBox msg End Sub (ねむねむ) 2022/06/23(木) 15:26
すまない、最後に表示されるメッセージボックスだけの問題になるが >msg = msg & txtFileName & i & "txt" & vbCrLf を msg = msg & txtFileName & i & ".txt" & vbCrLf としてくれ。 (ねむねむ) 2022/06/23(木) 15:53
この度もご親切にご回答くださり、そしてソースコードまで教えていただきありがとうございます!
こちらを実行すると、デスクトップの変換前フォルダから.xlsのデータをひろってくれず、
マクロを記録してる.xlsmのデータのテキストデータになり、保存先も、.xlsmが入っているフォルダになってしまいます。テキスト名もSheet1.txtとなり、ファイル名が入っていません。
素人にはどうしてそうなるかがわかりません。
問題点を丸投げしてしまい申し訳ありませんが、お時間可能でしたら、引き続きご教示いただければ幸いです。
(nasu) 2022/06/23(木) 16:14
新しいブックにマクロを入れて実行しても同じ状況だろうか? 私のほうではきちんとデスクトップ上の変換前フォルダのブックから変換後フォルダにTXTファイルが作成されているが。
(ねむねむ) 2022/06/23(木) 16:24
検証いただきありがとうございます。
こちらのPCでは変換前フォルダ内に.xlsmのデータを入れても先ほどの結果と変わりありませんでした。
そういえば、Sheet1.txtができるのにメッセージボックスの表示がありませんでした…
どこでどうなっているのやら…
せっかく教えていただいたのに申し訳ありません…。
(nasu) 2022/06/23(木) 16:39
>こちらのPCでは変換前フォルダ内に.xlsmのデータを入れても先ほどの結果と変わりありませんでした。 そういうことでなく、新しいブックを作りそこに上記マクロだけを入れて実行してみてくれ。 ちがうマクロを実行しているようにしか思えない。 (ねむねむ) 2022/06/23(木) 16:46
大変申し訳ありません!
おっしゃられた通り別のマクロを動作させていました…
PCの調子が悪いからとみてもらったら電源が抜けていたような恥ずかしさです。
一番下の行に追加したので、一番下のマクロを動作させていました…
ソートされるの事が知れてまた一つ勉強になりました(超絶初心者)。
また、見当違いな返答をしてしまい申し訳ありませんでした。
改めて実行させていただいたところ、
ファイル名1.txtにアクセスできません。
ファイルが破損しているか、応答しないサーバーにあるか、
読み取り専用に設定されています。
とエラーが出てしまいました。
新規Bookを作成してa1セルにあああと入力しただけのデータでした。
Sheetも追加しておらず、Sheet1しかないデータです。
もしよろしければ、引き続きお付き合いいただければ幸いです。
(nasu) 2022/06/24(金) 09:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.