• 締切済み

エクセルのマクロについて【長文です。】

はじめまして。 今、仕事の中でマクロを使った処理を行おうとしています。 手順は下記の通りです。 【1】アクセスからデータをエクスポートする。 【2】エクスポートしたデータをエクセルで開く。 【3】エクセルの中のデータを表にまとめる。 ごく簡単にご説明すると、このような手順となります。 ここで、皆様のお力をお借りいたしたく、質問いたしました。 【2】と【3】の間で行う、作業なのですが、 アクセスからエクスポートしたデータは日付が「'20070827」のように、 文字列となって表示されてしまいます。 これをマクロで2007/8/27という表示にしたいと思います。 【3】の表へは日付でVLOOKUPを使い一覧にまとめています。 さらに、日付は自動で入る仕組みにしてあります。 はじめのうちは量が少なかったので、置換や区切り位置で どうにかしのいできたのですが、シート数が多くなってしまい、 とても時間がかかってしまいます。 マクロの登録にもチャレンジしてみましたが、 並び位置が変わってしまったりと不都合が出てしまいました。 出来れば、そのブックを開けた段階で日付が変更されるような マクロがありましたら、ぜひ教えてください。 よろしくお願いいたします。

みんなの回答

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.3

#1です。 ThisWorkbookのコードではなくモジュールに記述して下さい。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

エクセルの側に、 データー外部データの取り込みーmdb-テーブル名指定 というのがあります。 これで私がやると、アクセスのテーブルの日付フィールドのデータは エクセルの日付として読み込まれました。 この操作は、エクセルのマクロの記録で取れる。 これが参考になりませんか。うまくいけば変換の必要性が無くなる。 アクセスの日付フィールドは文字列ですか。 ーー >【3】の表へは日付でVLOOKUPを使い一覧にまとめています。 さらに、日付は自動で入る仕組みにしてあります。 この意味不明。説明不足ではないの。日付をVLOOKUPの対象にした課題は、本質問コーナーでの質問は、多分出たことない。

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.1

こんにちは 並びが変わる場合VBAなどの場合は設定シートなど用いる事がありますが、下記のコードはコンバート的な簡易ロジックです。 参考にお使いください。 データのあるブックのモジュールに下記のコードを貼り付け実行してください。 ---簡易説明--- 1.シート数を取得 2.各シート範囲内のセルすべてに対し8文字のセルを年月日に分割 3.はじめの4文字が数値であれば年月日と判断 4.セルの書き換え -------------- Public WsCo, LR(), LC() Sub test() WsCo = ActiveWorkbook.Worksheets.Count ReDim LR(WsCo), LC(WsCo) For i = 1 To WsCo With Worksheets(i) .Select LR(i) = .UsedRange.Rows.Count LC(i) = .UsedRange.Columns.Count For j = 1 To LR(i) For k = 1 To LC(i) tmp = .Cells(j, k).Value If Len(tmp) = 8 Then y = Left(tmp, 4) m = Mid(tmp, 5, 2) d = Right(tmp, 2) If Application.WorksheetFunction.IsNumber(Val(y)) = True Then .Cells(j, k).Value = y & "/" & m & "/" & d End If End If Next Next End With Next End Sub

MARUFUKU02
質問者

お礼

お早いお答えありがとうございます。 早速、コードを貼り付けて見ました。 貼り付けた箇所はthisworkbookというところです。 しかし、実行してみたところ、 「コンパイルエラーです。」と表示され、 Public WsCo, LR(), LC() こちらの【Co, LR()】の部分が反転してしまいました。 貼り付け箇所が間違っているのでしょうか? お任せしっぱなしで大変申し訳ありません。

関連するQ&A