Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Access 2010)
エクスポートについて
投稿日時: 19/04/17 09:37:53
投稿者: ラングドシャ

お願いします。
 

Function 出力()

    Dim FS          As Object
    Dim FILE_NAME1  As String

    Set FS = CreateObject("Scripting.FileSystemObject")
    
    FILE_NAME1 = "\\192.168.xx.xx\営業部\出店データ\" & _
                  "open_" & Format(Date - 1, "yyyymmdd") & ".xlsx"
                  
    FS.CopyFile "\\192.168.xx.xx\営業部\雛形\format.xlsx", FILE_NAME1, True
    DoCmd.TransferSpreadsheet acExport, 8, "T_出店データ", FILE_NAME1, True, ""

End Function

 
こちらのコードで、テーブル:T_出店データをエクスポートしております。
エクスポート時に\\192.168.xx.xx\営業部\雛形\format.xlsxをつかって
文字の配置などをのレイアウトを調整しております。
ところが、\\192.168.xx.xx\営業部\雛形\format.xlsxを開いて文字位置の変更を行い
上書きをしても、次回エクスポート時にその変更が反映されていません。
どこかほかに変更箇所がございますでしょうか?
よろしくお願いいたします。

回答
投稿日時: 19/04/17 16:20:57
投稿者: sk

引用:
\\192.168.xx.xx\営業部\雛形\format.xlsxを開いて文字位置の変更を行い

format.xlsx の、どのシートの、どのセルに対して、
どのような操作(値/数式の編集、セル書式の設定など)を
行なわれたのでしょうか。
 
引用:
DoCmd.TransferSpreadsheet acExport, 8, "T_出店データ", FILE_NAME1, True, ""

format.xlsx には[T_出店データ]という名前付きセル範囲
定義されているのでしょうか。
 
仮に名前付き範囲[T_出店データ]が定義されているとして、
「文字位置の変更」が行なわれたセルは、名前付きセル範囲
[T_出店データ]に含まれるセルなのでしょうか。

投稿日時: 19/04/17 18:03:19
投稿者: ラングドシャ

 sk 様
 
ご返信ありがとうございます。
 

引用:
format.xlsx の、どのシートの、どのセルに対して、
どのような操作(値/数式の編集、セル書式の設定など)を
行なわれたのでしょうか。

 
A列、H列の文字位置を中央揃えに変更しました。
 
 
引用:
format.xlsx には[T_出店データ]という名前付きセル範囲が
定義されているのでしょうか。

 
sk様にご指摘いただき初めて名前定義を確認しました。
A1:j14まで名前定義がされていました。(この範囲のみ書式設定がされていた状態です)
私が設定していないので自動的に設定されるのでしょうか?
とりあえず、定義を削除してみました。エクスポートは明日自動的に行われるので
結果を見てみます。

回答
投稿日時: 19/04/17 18:56:44
投稿者: sk

引用:
A1:j14まで名前定義がされていました。(この範囲のみ書式設定がされていた状態です)
私が設定していないので自動的に設定されるのでしょうか?

既存の Excel ブックに対して Access から任意のテーブル/クエリを
エクスポート(書式なしワークシート変換)した場合、エクスポート
されるテーブル/クエリと同じ名前で定義されたセル範囲が存在するか
否かによって動作が変わります。
 
・テーブル/クエリと同じ名前のセル範囲が存在する場合は、
 そのセル範囲に対してレコードがエクスポートされる。
 (フィールドの個数やレコードの件数が参照範囲の列数/行数と
 異なっている場合は、前者に合わせる形で参照範囲が変更される)
 
・テーブル/クエリと同じ名前のセル範囲が存在しない場合は、
 新規ワークシートに対してレコードがエクスポートされ、
 エクスポート先のセル範囲に対してテーブル/クエリと
 同じ名前が定義される
 
引用:
とりあえず、定義を削除してみました。エクスポートは明日自動的に行われるので
結果を見てみます。

むしろ削除しない方がよいと思います。
(新しいワークシートが作られ、エクスポート先のセル範囲に
名前が定義されることになるはず)
 
引用:
A列、H列の文字位置を中央揃えに変更しました。

「何らかの書式が設定された名前付きセル範囲」に対する
エクスポートに関しては、エクスポート実行前に設定された
セル書式が常に維持されるという保証はありません。
(エクスポートするたびにレコードが増えたり減ったりする場合は特に)
 
また、下記記事のように「ブックを保存する直前に行なった操作」による
影響を受けることもありえます。
 
Access(VBA)掲示板より:
https://www.moug.net/faq/viewtopic.php?t=78082
 
確実なのは「エクスポート先のブックを開いて
エクスポート先のセル範囲の書式を(再)設定して
ブックを上書き保存して閉じる」ところまで
VBA で実現することだと思います。

投稿日時: 19/04/18 10:04:02
投稿者: ラングドシャ

sk様
 
おはようございます。
丁寧にご回答いただきありがとうございます。
 

引用:

引用:
とりあえず、定義を削除してみました。エクスポートは明日自動的に行われるので
結果を見てみます。

 
むしろ削除しない方がよいと思います。
 (新しいワークシートが作られ、エクスポート先のセル範囲に
名前が定義されることになるはず)

 
まさに、ご指摘いただいた通りとなっていました。
詳しくご説明いただき理解できました。再度やり直してみます。
ありがとうございました。