
皆様のお力をお貸しください
1.フォルダを選択する
2.フォルダのファイルでINIを開く
3.開いたINIファイルをExcelに転機する
4.シートの名前をファイル名(.INI不要)に変える
5.ファイルを閉じる
6.次のINIファイルを開く(2)
全てのファイルを開き終わったら終了
というVBAを作りたいのですが、
・フォルダの中身をすべて書き出す
・テキストの中身をExcelに書き出す
という二つのサンプルで作れると思ったのですが、思うようにいかず・・・
ご助力頂ければと思います。
よろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
BAについてはともかくとして、画像の雰囲気で、行番号が見えましたので、それは、今は使いかたを知っている人はいないような気がしますので、それについて少し解説が必要かと思いました。
今は、基本的には行番号は不要です。外部ツールで大事ものは、Indenter という、整形行下げツールです。http://blog.dreamhive.co.jp/yama/9326.html
ただ、現在、その本家のダウンロードサイトではサーバーエラーが発生しています。2019/03/04
他にも、MZ-Tools というものがあります。有償ですので、すぐにお勧めというわけにはいきませんが、私の愛用ツールです。https://www.ka-net.org/blog/?p=6260
他にも、XMLを編集するエディターやら、ハンドルを調べるSpyXX など、開発に備えておくと困らないと思います。
質問の件、再度、いままでにまとめたものをもう一度質問されれば、また別の人が別の考え方で、回答してくれるかもしれません。ひとまず、ここを閉められるそうですから、私も退くことにします。お体おだいじに。
No.5
- 回答日時:
ちょっと関係のない話をさせていただきます。
画像は ✕400倍しても、jpg(204 x 500)では見えません。確か、画像はある程度の大きさでも、貼り付ける時にサイズの圧縮は利いたとは思いますが、外部のストレージサイトを使うと良いですね。
ここで最近見かけるストレージサイトは、firestrage (https://firestorage.jp/doc/first)です。
会員登録しないと、後消せなくなりますが、放っておけば、1週間程度で消えてしまいます。私も使っています。
質問者、質問後に与えられるスペースはあまり大きくないようです。ここの常連の方が使っていたテキスト・ソースを表示する外部サイトもあるようです。https://ideone.com/ (登録だけはしています。)
僭越かもしれませんが、全体を見る限りは、たぶん、初歩的なことから指摘するかもしれません。これでも、本格的に初めて15年、ブランクは、1週間程度で、ずっと何かしらVBAはイジってきていますから、何かヒントくらいは与えられると思います。それに、VBAの便利な開発用のツールをいくつか持っていますので、よかったら紹介させていただきます。ただ、外国製なので、紹介してもあまり興味を見せないようですが。ある程度、若い方だったら、いえ、40代ぐらいまでなら、今後は、日本語だけでは、まかり通らなくなるかもしれませんね。
金土日と高熱で倒れてお礼が遅くなり申し訳ございません
職場のPCからソースを抜き出すのが機密情報名の無い印刷しか無いので画像での処理になっております。
外部ツールの情報ありがとうございます
尚、英語スキルは英会話はそこそこ出来た(はず)ですが、英語が書けないレベルです(;´Д`)
GOOさんがベストアンサー選べとうるさいのでもう少ししたら一旦閉めます
本当にありがとうございました
No.4
- 回答日時:
もとの質問文で、いくつか欠けている部分がありますが、こちらで想像して補填してしまいました。
実際は、メインはこれですね。
「バッチファイルをまとめたiniファイルを新規サーバに合わせてPC名の部分を変更する作業」を行っております「バッチファイルをまとめたiniファイル」というのはよく分かりませんが、入出力で、シート名は拡張子はなしにしても、入れだしそのものの拡張子は、iniにするわけですね。
私なりの解釈で、たたき台を作ってみます。そうしないと、文章のやり取りではイメージが湧いてこないのです。VBAマクロを作る時は、漠然とでよいので、イメージがあるとやりやすいのです。任意のフォルダーから一括で取得するというスタイルになりす。出力も別のフォルダーに一括で出力するようになります。
ただし、現行ではS-JIS仕様になっています。他のエンコードの時は、Encode/Decode Converter が必要になります。また、個別のフォルダーに流し込むスタイルの場合は、多少の手直しが必要です。(No.3 コードを参照)
シートは、全て使いますので、何かデータがあった場合は、コピーしてデータを退避してください。
コードにはコメントがありますので、一度目を通してください。
'//標準モジュール
Sub FilesImport()
'一括ファイルインポート
On Error GoTo errHandler
Dim Fn As String, f As String
Dim TextLine As String
Dim i As Long, j As Long, k As Long
Dim buf
Dim mPath As String
Dim Sh As Worksheet
Dim myAr(300)
With Application.FileDialog(msoFileDialogFilePicker) '当初はFolderPicker にしていたが、iniファイルが見えない。
.Title = "フォルダー選択 --1つ選べは、残りもインポートします"
.Filters.Add "ini ファイル", "*.ini"
.InitialView = msoFileDialogViewDetails
If .Show = -1 Then
buf = .SelectedItems(1)
mPath = Mid(buf, 1, InStrRev(buf, "\"))
End If
End With
Fn = Dir(mPath & "*.ini", vbNormal)
Do While Fn <> ""
If Fn <> "." And Fn <> ".." Then
myAr(i) = mPath & Fn
i = i + 1
If i > 300 Then Exit Do 'Limit
End If
Fn = Dir()
Loop
i = i - 1
If myAr(0) = "" Then MsgBox "該当ファイルが見当たりません。", vbCritical: Exit Sub
For j = 0 To i
If Worksheets.Count < (j + 1) Then
Worksheets.Add After:=Worksheets(Worksheets.Count)
ElseIf Not Worksheets(j + 1).Name Like "Sheet*" Then
Worksheets(j + 1).Name = "T" & (j + 1) 'やり直しを想定
End If
Set Sh = Worksheets(j + 1)
Sh.UsedRange.ClearContents '既に書かれてあるものは消してしまいます。
f = myAr(j)
Open f For Input As #1
Do While Not EOF(1)
Line Input #1, TextLine
If TextLine <> "" Then
k = k + 1
Sh.Cells(k, 1).Value = TextLine
End If
Loop
Close #1
k = 0
TextLine = ""
buf = Mid(f, InStrRev(f, "\") + 1)
Sh.Name = Mid(buf, 1, InStrRev(buf, ".") - 1)
Next j
errHandler:
If Err() <> 0 Then
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in FilesImport"
End If
End Sub
'------------------------
Sub FilesExport()
'一括出力
'*******************
'ユーザー設定(以下のパスを書き入れてください)
Const mPath As String = "D:\"
'******************
Dim endLine As Long
Dim i As Long, j As Long
Dim strLine As String
For j = 1 To Worksheets.Count
If Not Worksheets(j).Name Like "Sheet*" Then
Fn = mPath & Worksheets(j).Name & ".ini"
With Worksheets(j)
endLine = .Cells(Rows.Count, 1).End(xlUp).Row
Open Fn For Output As #1
For i = 1 To endLine
strLine = .Cells(i, 1).Value '日付があれば、Textプロパティ
Print #1, strLine
strLine = ""
Next i
Close #1
End With
End If
Next j
Beep
End Sub
ありがとうございます
一応なんとなく稼働した物は出来たのですが、ソースをはる暇もなく情報を出せておりませんでした。
後ほど確認させて頂きます!
No.3
- 回答日時:
No..2 の回答者です。
一応、iniファイル自体を読むブログラムは調べれば分かりますが、ここでは公開しません。VBAでは、レジストリを書き換えるに匹敵する、特殊なブログラムのひとつです。
前回の書き込みからみても、ご質問者さんが、プログラミング全般では、とても素人とは思えませんが、私のようなVBAを多少とも嗜む人間には、非常に特殊なことをしているように思い、理解できませんでした。
>他の処理の関係でiniファイルの中身を取り出すのが目的で、テキストを読めればいいのです
>編集を大量にしたい所がありまして・・・
Sub ImportText()
Dim FName As Variant
Dim TextLine As String
Dim i As Long
FName = Application.GetOpenFilename("Text File (*.txt;*.ini),*.txt;*.ini", , "テキストインポート")
If FName = False Then Exit Sub
Open FName For Input As #1
Do While Not EOF(1)
Line Input #1, TextLine
i = i + 1
Cells(i, 1).Value = TextLine
Loop
Close #1
End Sub
'//
ふつうは、テキストエディタを使いますね。中でも、NotePad ++ (日本語対応)は、汎用性があって、扱いは言語によっては難しいけれども、XMLも扱えますので便利です。書き換えは、前回示した正規表現で行ったりします。
有難うございます
プログラム経験は昔スーパーファミコンのソフトを作成を20年前位にした事がある程度です
「バッチファイルをまとめたiniファイルを新規サーバに合わせてPC名の部分を変更する作業」を行っております
ですのでそれ用のiniファイルを読み込んで出力するツールが必要なのです
言葉不足で申し訳ございません
No.2
- 回答日時:
少し伺いますが、なぜ、iniファイルを利用とすることを考えたのでしょうか。
今は、Excelでは iniファイルは使いません。
一般的には、text ファイルを扱います。
iniファイルというのは、一種の環境設定ファイルです。
https://wa3.i-3-i.info/word11391.html
iniファイルは特殊な書き込み/呼び出しの仕方をします。もちろん、もう過去の遺物に違いないですが。iniファイルはファイル一覧を書き込むような使い方はしません。Office全般では、iniファイルの代わりに、カスタムドキュメントプロパティを利用します。
それに、
>・フォルダの中身をすべて書き出す
>・テキストの中身をExcelに書き出す
ファイル名が必要なら、Excelに直接書き出せばよいと思うのです。
>一行一セルのこちらのサイトを参考に見ました
凝った書き方をしている割には、もう少し標準的な書き方があります。
Excelでは、 外部ファイルを開く時は、Application.GetOpenFilename を使います。
別に参考にならないかもしれませんが、ひとつコードを置いておきます。
例:
Sub FileLists()
Const mPATH As String = "D:\Excel\
Dim i As Long
Dim fn As String
fn = Dir(mPATH & "*.xls?", vbNormal)
Do While fn <> ""
i = i + 1
Cells(i, 1).Value = fn
fn = Dir()
Loop
End Sub
他の処理の関係でiniファイルの中身を取り出すのが目的で、テキストを読めればいいのです
編集を大量にしたい所がありまして・・・
ややこしくてすみません
iniを使うわけではございません
No.1
- 回答日時:
>・フォルダの中身をすべて書き出す
https://oshiete.goo.ne.jp/qa/10987554.html
の#1 回答を抜粋
http://officetanaka.net/excel/vba/file/file07.htm
を参考に、Dir関数でファイルリストを取り出します。
>・テキストの中身をExcelに書き出す
INIファイルの中身を、Excelのシート上に出力することと推測されますが、
目的・条件によって異なりますが、少なくとも2パターンあります。
・1行1セル (出力先となるセルのサイズに限界があるので、通常はこちら)
・全体で1セル (ファイルサイズが小さい場合限定)
どちらを希望でしょうか?
ご返信ありがとうございます。
一行一セルのこちらのサイトを参考に見ました (https://www.ipentec.com/document/vba-open-read-t …)
こちらと上記田中様のソースを見て知らない宣言が色々とでて混乱しておりました(filedialogやApplication等
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) 複数ブックの統合について Excel VBA 1 2022/05/13 09:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
彼女の過去の恋愛に嫉妬してし...
-
CSVファイルの特定行の削除
-
エクセルのマクロについて教え...
-
Excel: ファイル名になぜ、[...
-
CSVファイルの暗号化
-
Delphi
-
FTPのgetとputの使いわけ。
-
このファイルは外部のエディタ...
-
htmlファイルを結合して一つの...
-
iCloud for Windowsをアンイン...
-
HTMLのファイル移動について
-
アクセスが開かなくなってしま...
-
ファイルが移動してもリンクの...
-
MP3の移動ができない。
-
容量があるのにいっぱい
-
[Unity]シーンファイルの中が消...
-
pythonの作業ディレクトリに変...
-
正規表現でファイルの末尾の特...
-
docxをmht形式で保存したファイ...
-
サクラエディタの機能について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの特定行の削除
-
彼女の過去の恋愛に嫉妬してし...
-
Excel: ファイル名になぜ、[...
-
エクセルのファイル:「自分」が...
-
ファイルが移動してもリンクの...
-
iCloud for Windowsをアンイン...
-
EXCELVBAにて文字列にして「01...
-
WINDOWS CMDからゴミ箱のファ...
-
vbsからのExcelマクロ呼び出し...
-
[Unity]シーンファイルの中が消...
-
5000個のtiffファイルをpdfへ変...
-
複数のExcelファイルにある同名...
-
このファイルは外部のエディタ...
-
batでファイル名を変更したい(...
-
フォルダ内の複数のファイルの...
-
docxをmht形式で保存したファイ...
-
FTPのgetとputの使いわけ。
-
Googleドライブについて
-
VBA ファイル一覧を取得して全...
-
エクセル保存終了で一時ファイ...
おすすめ情報
一応動く処理ができました
こちらになります。
ここをこうした方がいい等ありましたらご指摘いただけますと助かります
急ぎ上げた物で肝心な部分が1部欠けてるのと圧縮で読みにくいので帰宅次第上げ直します
申し訳ございません