• 締切済み

エクセル2000VBAで質問です。

デスクトップ上に「T」というフォルダがあり、そこに「x05.txt」という カンマ区切りファイルがあるのですが、 そのファイルの内容を デスクトップ上の実績フォルダ内の「book1.xls」sheet1に、 カンマ区切りで貼り付けていく処理をしたいのです。 「x05.txt」の05は、作成した日付が?月5日という意味です。 貼り付けも、上書きではなくA1に1日のデータ、その続きの行の1列目に2日目のデータを貼り付ける という風にしたいのですが・・・さっぱりです。 OSは、WindowsXPです。 どうか、よろしくお願いいたします。 以下、作っている途中のプログラムです。 * 変数の宣言を抜いております。 Sub データ結合() SYSBASE = ActiveWorkbook.Name res = MsgBox("累積処理を開始します。", vbOKCancel) If res = vbCancel Then Exit Sub End If Workbooks(SYSBASE).Sheets("累積データ").Activate Cells.Delete For h = 1 To 31 メインパス名 = ActiveWorkbook.Path 日付パス名 = Right("00" + Mid(Str(h), 2), 2) On Error GoTo オープンエラー ChDir メインパス名 + "\" + 日付パス名 On Error GoTo 0 If ermsg = 1 Then ermsg = 0 Else ermsg = 0 For i = 1 To 10 ファイル名 = "T-LOG1_" + Right("00" + Mid(Str(i), 2), 2) On Error GoTo オープンエラー Workbooks.Open Filename:=メインパス名 + "\" + 日付パス名 + "\" + "個別" + _ "\" + ファイル名 + ".txt" On Error GoTo 0 If ermsg = 1 Then ermsg = 0 Exit For End If Workbooks(SYSBASE).Sheets("累積データ").Activate datarec = Range("A1").CurrentRegion.Rows.Count If datarec = 1 And Cells(1, 1) = "" Then Workbooks(ファイル名 + ".txt").Activate Range(Cells(1, 1), Cells(1, 20)).Copy Workbooks(SYSBASE).Sheets("累積データ").Activate Cells(1, 1).Select ActiveSheet.Paste End If Workbooks(ファイル名 + ".txt").Activate D_datarec = Range("A1").CurrentRegion.Rows.Count If D_datarec <= 1 Then ActiveWorkbook.Close savechanges:=False Else Range(Cells(2, 1), Cells(D_datarec, 20)).Copy Workbooks(SYSBASE).Sheets("累積データ").Activate datarec = Range("A1").CurrentRegion.Rows.Count Cells(datarec + 1, 1).Select ActiveSheet.Paste Workbooks(ファイル名 + ".txt").Activate Application.DisplayAlerts = False ActiveWorkbook.Close savechanges:=False Application.DisplayAlerts = True End If Next i End If Next h Exit Sub オープンエラー: ermsg = 1 Resume Next End Sub

みんなの回答

  • nao-y
  • ベストアンサー率58% (111/190)
回答No.1

動作検証してないので、変なこと言ってたらごめんなさい。 で、すみませんが、何が「さっぱりです。」なんですか? 動作させると何かエラーが出るんですか? それとも、エラーは出ないけど意図しない動きをするんですか? とりあえず、ざっと見たところ ・book1.xlsのパスが上の説明とソースコード内で違う ・x05.txtについても同様 ・If datarec = 1 And Cells(1, 1) = "" Then ~ End If の部分は必要ない(ちなみに「Cells(1, 1) = ""」は「Cells(1, 1).Value = ""」と書きましょう) というところ以外は大丈夫そうな気がしますが…。 (表現をもっと簡潔にできる箇所はありますが)

pheriar
質問者

お礼

すみません、自己解決いたしました。 わざわざ返事いただいたのに申し訳ございませんでした。