ここから本文です

Access エクセルエクスポート時にセルの書式設定 Accessでコマンドボタンのイベ...

coc********さん

2016/3/2411:30:51

Access エクセルエクスポート時にセルの書式設定

Accessでコマンドボタンのイベントにエクセルエクスポートを設定しています。

エクスポートしたエクセルの1行目のみ行幅を100に設定し、折り返して全体を表示したいのですが
VBAで可能なのでしょうか。どう記述すればよいでしょうか。

現在のコードです↓

Dim mypath as string

mypath = CurrentProject.Path & "\Data"
FullPath = mypath & "\" & Me.ファイル名 & "_" & Format(Now(), "yyyymmddhhnnss") & ".xlsx"

DoCmd.TransferSpreadsheet acExport, , "Q01_抽出", FullPath, True, "抽出"
MsgBox "Exportしました"

※me.ファイル名→フォームにファイル名というテキストボックスを配置しています。

これで、正常にExportできています。
このExcelを開いて、1行目の行幅を100、セルを折り返すと設定しているのですが、
Accessからすでにこの状態でExportしたいです。

ご教授の程、宜しくお願します。

閲覧数:
2,005
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

bj2********さん

2016/3/2412:59:04

EXCELのテンプレートファイル(エクスポートしたエクセルの1行目のみ行幅を100に設定し、折り返して全体を表示)を用意して、

ACCESSのVBAでこのテンプレートファイルを呼び出し、
シート指定、セル位置指定、値だけをセットするようにして、
最後に別名(フォームのファイル名)でファイルを保存する
というようにしてはどうでしょう。

EXCELファイルを扱うときは下記の変数を宣言します。

Dim xlApp As Object 'EXCEL
Dim xlBook As Object 'ブック(ファイル)
Dim xlSheet As Object 'シート
Dim lngX1 As Long '列
Dim lngY1 As Long '行

変数のセットはこんな感じです。

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("D:\Template.xls", 0, False)
Set xlSheet = xlBook.Worksheets("シート名")

セルへの値セットはこんな感じです。

xlSheet.Cells(lngY1, 1) = RS1![社員番号]
xlSheet.Cells(lngY1, 2) = "ABC"
xlSheet.Cells(lngY1, 3) = 123.45
xlSheet.Cells(lngY1, 4) = CDate("2002/04/21")

セルに式を設定するときはこうです。
xlSheet.Cells(lngY1, 3) = "=A1 + B1" '式のセット A1形式
xlSheet.Cells(lngY1, 4) = "=RC[-2] + RC[-1]" '式のセット R1C1形式

文字色を設定する
xlSheet.Cells(lngY1, 1).Font.color = 255 'レッド

セル背景色を設定する
xlSheet.Cells(lngY1, 3).Interior.color = 10092543 'イエロー


最後に名前を付けて保存します
xlApp.DisplayAlerts = False '警告メッセージの抑制
xlBook.SaveAs (FullPath)
xlBook.Close 'ブックを閉じる
xlApp.Quit 'エクセルの終了


※テーブル/クエリのレコードセット処理の部分を省略しています。

  • 質問者

    coc********さん

    2016/3/2416:01:23

    有難うございます。やってみたのですが、用意したテンプレートにはうまく貼りついたものの、名前を付けて保存したファイルが空っぽです。勉強不足で申し訳ございません。
    Dim mypath As String
    Dim xlApp As Object 'EXCEL
    Dim xlBook As Object 'ブック(ファイル)
    Dim xlSheet As Object 'シート
    Dim lngX1 As Long '列
    Dim lngY1 As Long '行

    mypath = CurrentProject.Path & "\Data"
    FullPath = mypath & "\" & Me.ファイル名 & "_" & Format(Now(), "yyyymmddhhnnss") & ".xlsx"

    DoCmd.TransferSpreadsheet acExport, , "Q01_抽出", mypath & "\template.xlsx", True, "抽出"

    xlBook.SaveAs FullPath

    xlBook.Close 'ブックを閉じる
    xlApp.Quit 'エクセルの終了

    MsgBox "Exportしました"

    templateの名前を付けて保存するにはどこを直せばよいでしょうか。

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2016/3/25 15:42:53

細かく教えてくださり、有難うございました。
思ったとおりに実行できました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる