Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


935 / 13644 ツリー ←次へ | 前へ→

【77418】あるファイルの中身をシートごとにわけて入力する。 カイト 15/9/29(火) 0:06 質問[未読]
【77419】Re:あるファイルの中身をシートごとにわけ... ウッシ 15/9/29(火) 8:08 質問[未読]
【77420】Re:あるファイルの中身をシートごとにわけ... カイト 15/9/29(火) 8:41 発言[未読]
【77421】Re:あるファイルの中身をシートごとにわけ... ウッシ 15/9/29(火) 9:05 回答[未読]
【77422】Re:あるファイルの中身をシートごとにわけ... カイト 15/9/29(火) 12:20 発言[未読]
【77423】Re:あるファイルの中身をシートごとにわけ... ウッシ 15/9/29(火) 12:30 回答[未読]
【77424】Re:あるファイルの中身をシートごとにわけ... カイト 15/9/29(火) 20:00 お礼[未読]

【77418】あるファイルの中身をシートごとにわけて...
質問  カイト  - 15/9/29(火) 0:06 -

引用なし
パスワード
   あるファイルの中身をシートごとにわけて入力するということを行いたいです。
シートごとに分けて入力する方法がわかりません。
,がある場合は区切って一セルごとに表示します。

ファイル名:aaabbb.timestamp

--------------ファイルの中身--------------
はじまり

NoA,NoB,Count1
1010,1,360
432,3,254


2356,6,227


NoC,NoD,NoE,Count2
101,34,31,565
3432,33,5,254


564,4,5,462

Next 3


NoAS,NoDS,NoFD,Count3
45,8,13,454
65,7,6,454


75,3,2,576




おわり
--------------ファイルの中身--------------

このような形式のデータを
sheet1〜7までに分けて入れたいです。
sheetは用意してあります、データが入っています。
sheet1〜6はA5から最後までのデータを削除後、A5からデータを入れたいです。
sheet7は既に入っている最後のデータ行の次の行からデータを入れたいです。

sheet1はNoA,NoB,Count1の次の行から改行まで
sheet2はNoC,NoD,NoE,Count2の次の行から改行まで

Next 3(たまにこういういらない表記が途中にあります。はじまりとおわりもファイル内に書いてありますが、いらない表記です。)

NoAS,NoDS,NoFD,Count3の次の行から改行まで
以降も似たような形式で書かれています。
一行の項目数は3または4となります。

以上ですが、どなたかよろしくお願いいたします。

【77419】Re:あるファイルの中身をシートごとにわ...
質問  ウッシ  - 15/9/29(火) 8:08 -

引用なし
パスワード
   こんにちは

ファイル名:aaabbb.timestamp

はどんなファイルですか?

拡張子が「timestamp」のテキストファイルですか?

NoA,NoB,Count1という部分も転記するのですか?


▼カイト さん:
>あるファイルの中身をシートごとにわけて入力するということを行いたいです。
>シートごとに分けて入力する方法がわかりません。
>,がある場合は区切って一セルごとに表示します。
>
>ファイル名:aaabbb.timestamp
>
>--------------ファイルの中身--------------
>はじまり
>
>NoA,NoB,Count1
>1010,1,360
>432,3,254
>・
>・
>2356,6,227
>
>
>NoC,NoD,NoE,Count2
>101,34,31,565
>3432,33,5,254
>・
>・
>564,4,5,462
>
>Next 3
>
>
>NoAS,NoDS,NoFD,Count3
>45,8,13,454
>65,7,6,454
>・
>・
>75,3,2,576
>・
>・
>
>
>おわり
>--------------ファイルの中身--------------
>
>このような形式のデータを
>sheet1〜7までに分けて入れたいです。
>sheetは用意してあります、データが入っています。
>sheet1〜6はA5から最後までのデータを削除後、A5からデータを入れたいです。
>sheet7は既に入っている最後のデータ行の次の行からデータを入れたいです。
>
>sheet1はNoA,NoB,Count1の次の行から改行まで
>sheet2はNoC,NoD,NoE,Count2の次の行から改行まで
>
>Next 3(たまにこういういらない表記が途中にあります。はじまりとおわりもファイル内に書いてありますが、いらない表記です。)
>
>NoAS,NoDS,NoFD,Count3の次の行から改行まで
>以降も似たような形式で書かれています。
>一行の項目数は3または4となります。
>
>以上ですが、どなたかよろしくお願いいたします。

【77420】Re:あるファイルの中身をシートごとにわ...
発言  カイト  - 15/9/29(火) 8:41 -

引用なし
パスワード
   こんにちは。
説明がわかりにくく、申し訳ありません。
拡張子が日付時間のタイムスタンプになっています。
例 aaabbb.201509280835

NoA,NoB,Count1の転記は必要ありません。
次の行の数字の組み合わせから改行までの数字の組み合わせをシートごとに記載したいです。

▼ウッシ さん:
>こんにちは
>
>ファイル名:aaabbb.timestamp
>
>はどんなファイルですか?
>
>拡張子が「timestamp」のテキストファイルですか?
>
>NoA,NoB,Count1という部分も転記するのですか?
>
>
>▼カイト さん:
>>あるファイルの中身をシートごとにわけて入力するということを行いたいです。
>>シートごとに分けて入力する方法がわかりません。
>>,がある場合は区切って一セルごとに表示します。
>>
>>ファイル名:aaabbb.timestamp
>>
>>--------------ファイルの中身--------------
>>はじまり
>>
>>NoA,NoB,Count1
>>1010,1,360
>>432,3,254
>>・
>>・
>>2356,6,227
>>
>>
>>NoC,NoD,NoE,Count2
>>101,34,31,565
>>3432,33,5,254
>>・
>>・
>>564,4,5,462
>>
>>Next 3
>>
>>
>>NoAS,NoDS,NoFD,Count3
>>45,8,13,454
>>65,7,6,454
>>・
>>・
>>75,3,2,576
>>・
>>・
>>
>>
>>おわり
>>--------------ファイルの中身--------------
>>
>>このような形式のデータを
>>sheet1〜7までに分けて入れたいです。
>>sheetは用意してあります、データが入っています。
>>sheet1〜6はA5から最後までのデータを削除後、A5からデータを入れたいです。
>>sheet7は既に入っている最後のデータ行の次の行からデータを入れたいです。
>>
>>sheet1はNoA,NoB,Count1の次の行から改行まで
>>sheet2はNoC,NoD,NoE,Count2の次の行から改行まで
>>
>>Next 3(たまにこういういらない表記が途中にあります。はじまりとおわりもファイル内に書いてありますが、いらない表記です。)
>>
>>NoAS,NoDS,NoFD,Count3の次の行から改行まで
>>以降も似たような形式で書かれています。
>>一行の項目数は3または4となります。
>>
>>以上ですが、どなたかよろしくお願いいたします。

【77421】Re:あるファイルの中身をシートごとにわ...
回答  ウッシ  - 15/9/29(火) 9:05 -

引用なし
パスワード
   こんにちは

こんな感じでしょうか?

Sub test()
  Dim f As Variant
  Dim b As Workbook
  Dim t As Workbook
  Dim i As Long
  Dim j As Long
  Dim a As Areas
  
  f = Application.GetOpenFilename("読み込みファイル (*.*), *.*", , , , False)
  If f = False Then Exit Sub
  
  Workbooks.OpenText Filename:= _
    f, Origin:=932, _
    StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _
    Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array( _
    3, 1)), TrailingMinusNumbers:=True
    
  Set b = ActiveWorkbook
  Set t = ThisWorkbook
  Set a = b.Worksheets(1).UsedRange.SpecialCells(xlCellTypeConstants).Areas
  
  j = 1
  For i = 1 To a.Count
    If a(i).Cells(1, 1) Like "No*" Then
      If j < 7 Then
        t.Worksheets("Sheet" & j).Range("A5").EntireRow.Resize(Rows.Count - 5).ClearContents
        a(i).Offset(1).Copy t.Worksheets("Sheet" & j).Range("A5")
        j = j + 1
      ElseIf j = 7 Then
        a(i).Offset(1).Copy t.Worksheets("Sheet" & j).Range("A" & Rows.Count).End(xlUp).Offset(1)
        j = j + 1
      Else
        Exit For
      End If
    End If
  Next
  
  b.Close False
  
End Sub

【77422】Re:あるファイルの中身をシートごとにわ...
発言  カイト  - 15/9/29(火) 12:20 -

引用なし
パスワード
   ありがとうございます。

t.Worksheets("Sheet" & j).Range("A5").EntireRow.Resize(Rows.Count - 5).ClearContents

こちらで、アプリケーションまたはオブジェクト定義エラーがでてしまいます。
マクロの内容は入力されたファイルが新しいエクセルファイルのシートに出力され、それがマクロを実行したエクセルにシートごとに分割して出力される作りになっているのですよね?
頭にwithをつけても駄目でした。
なぜ、マクロ実行エクセルが参照できないのでしょうか?


▼ウッシ さん:
>こんにちは
>
>こんな感じでしょうか?
>
>Sub test()
>  Dim f As Variant
>  Dim b As Workbook
>  Dim t As Workbook
>  Dim i As Long
>  Dim j As Long
>  Dim a As Areas
>  
>  f = Application.GetOpenFilename("読み込みファイル (*.*), *.*", , , , False)
>  If f = False Then Exit Sub
>  
>  Workbooks.OpenText Filename:= _
>    f, Origin:=932, _
>    StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
>    ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _
>    Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array( _
>    3, 1)), TrailingMinusNumbers:=True
>    
>  Set b = ActiveWorkbook
>  Set t = ThisWorkbook
>  Set a = b.Worksheets(1).UsedRange.SpecialCells(xlCellTypeConstants).Areas
>  
>  j = 1
>  For i = 1 To a.Count
>    If a(i).Cells(1, 1) Like "No*" Then
>      If j < 7 Then
>        t.Worksheets("Sheet" & j).Range("A5").EntireRow.Resize(Rows.Count - 5).ClearContents
>        a(i).Offset(1).Copy t.Worksheets("Sheet" & j).Range("A5")
>        j = j + 1
>      ElseIf j = 7 Then
>        a(i).Offset(1).Copy t.Worksheets("Sheet" & j).Range("A" & Rows.Count).End(xlUp).Offset(1)
>        j = j + 1
>      Else
>        Exit For
>      End If
>    End If
>  Next
>  
>  b.Close False
>  
>End Sub

【77423】Re:あるファイルの中身をシートごとにわ...
回答  ウッシ  - 15/9/29(火) 12:30 -

引用なし
パスワード
   こんにちは

マクロの設定されたブックに、シート名
Sheet1〜Sheet7
の7シートは存在しているのですよね?

実際にテストしたコードはどうなっていますか?

【77424】Re:あるファイルの中身をシートごとにわ...
お礼  カイト  - 15/9/29(火) 20:00 -

引用なし
パスワード
   こんにちは。
返信が遅くなり、申し訳ありません。
アクティブシートにしたら、問題なく動作しました。
お手数をおかけして申し訳ありませんでした。
ありがとうございました。

▼ウッシ さん:
>こんにちは
>
>マクロの設定されたブックに、シート名
>Sheet1〜Sheet7
>の7シートは存在しているのですよね?
>
>実際にテストしたコードはどうなっていますか?

935 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free