重要なお知らせ

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

【GOLF me!】初月無料お試し

前回の続きの部分になりますが,テキストファイルの指定行の書き出しの必要性が出てきまして,どのように変更したらよいのか分からないので質問させて頂きます。
現状では1行目~空行までという風になっており,こちらの書き出しはうまくいっております。
今回はこれを1行目を省き,2行目~空行までという風に変更したいと考えております。初心者なものでこのような変更に対応できず困っておりますので,どなたかご教示頂けると幸いです。また,コードは下記に記載いたしますが,可能であればどこにどのように記載すると良いのかまでご教示頂けると大変助かります。

Private Function set_sheet(ByVal book_no As Long, ByVal sheet_no As Long) As Boolean
Dim i As Long
Dim fname As String 'テキストファイル名(フルパス)
Dim fileNo As Long 'ファイル番号
Dim lno As Long '行番号
Dim text As String '読み込んだテキスト
Dim RE As Object '正規表現オブジェクト
Dim sname As String 'シート名
Set RE = CreateObject("VBScript.RegExp")
'1行が空白行か否かの判定用
RE.Pattern = "^\s*$"
RE.Global = True
set_sheet = False
'array_fileの何番目かを求める
i = (book_no - 1) * 100 + sheet_no - 1
'上限を超えているならFlaseで終了
If i > UBound(array_file) Then Exit Function
'テキストファイル名及びその拡張子を除いたものを取得
fname = TextFolder & "\" & array_file(i)
sname = array_file(i)
sname = Left(sname, Len(sname) - 4)
fileNo = FreeFile
Open fname For Input As #fileNo
'ファイル終端まで読み込む
lno = 0
Do Until EOF(fileNo)
'1行読み込み
Line Input #fileNo, text
lno = lno + 1
'空白行なら終了
If RE.test(text) = True Then Exit Do
'A列の該当行へ設定
owb.Worksheets(sheet_no).Cells(lno, "A").Value = text
Loop
Close #fileNo
'シート名を設定
owb.Worksheets(sheet_no).Name = sname
'正常終了
set_sheet = True
End Function

A 回答 (3件)

前々回の回答者です。


下記にアップしました。
https://ideone.com/47bW0x

前回の質問
https://oshiete.goo.ne.jp/qa/12776079.html
も含めて、回答しています。
不明点は、補足してください。
    • good
    • 0
この回答へのお礼

この度は誠にありがとうございました。
おかげさまで手作業だとかなり時間のかかる作業が大幅に改善されました。
今後ともExcelを用いた業務も増えていきそうなので,まずは自身でコードを読み解けるように努めてまいります。

お礼日時:2022/01/31 15:10

んー。

結局自分で理解することを放棄したという事でしょうか。

 '1行読み込み
および
 '空白行なら終了
の箇所を修正するだけですよ。

残念ですが、ここは自力で問題解決できるようにアドバイスを受ける場所ですので、
前回のように丸っとコードを教えてくださることは滅多にありません。

もしも自力で問題解決することが目的ではなく、
とにかく希望通りの処理を済ませたいという事であれば、
有料サイトで依頼することを薦めます。
このくらいの物であれば500円もしない値段で作ってくださる人がたくさんいると思います。
(自分なら200円から300円くらいかな。今後も仕様変更が頻繁にあると予想してリピートを期待した値段であれば100円から200円にするかもしれません)
    • good
    • 2
この回答へのお礼

ご指摘ありがとうございます。
理解することをあきらめたわけではないのですが,この分だけが早急に必要になっておりまして,現在ネットとにらめっこしながら一つ一つの動作に関しての理解を深めるよう努めております。今後このような依頼となってしまう場合は有料サイトでの依頼も視野に入れつつご質問させて頂きます。

お礼日時:2022/01/31 15:07

こんにちは



>前回の続きの部分になりますが~
前回を知りませんので、内容はわかりませんけれど・・

>今回はこれを1行目を省き,2行目~空行までという
>風に変更したいと考えております。
テキストファイルを1行ずつ読み込む方式のようなので、
 ・ループの外側で、最初に1行読み捨てる
 ・lnoが1だったら出力せず、出力先の行番号を lno-1 にする。
のどちらかにしておけばよさそうに思われます。

あるいは、そのまま出力が終わったところで、シートの1行目を削除するのでも良いかも。
こちらの方法であれば、何もいじる必要もなく「マクロの記録」でも作成できます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。イメージとしては仰っていることは理解できるのですが,初心者過ぎてそれをコードにおこすことが難しい状況です。。
可能であればどのような書き方をすればよいかまでご教示いただけませんか?

削除の方も書いてはみたのですが,コード的に別のブック上での操作になりまして,そちらのブックをActiveにする際に必要なブック名が複雑な式になっており,そちらを参照することができず,別の手法を模索しておりました。

お礼日時:2022/01/28 12:23

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