Access (VBA)

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

 
(指定なし : 指定なし)
EXCELテンプレートファイルに出力
投稿日時: 22/04/12 16:28:39
投稿者: hareru

Access2016です。
抽出したデータをEXCELへ出力しています。
新規BOOKや既存BOOK(空白シート)への出力時は警告メッセージを表示しないように抑制されるのですがテンプレートファイルに出力する時は警告メッセージが表示されてしまいます。
以下のコードで実行しています。
        Dim xlApp As Excel.Application
        Dim wkb As Excel.Workbook
        Dim wks As Excel.Worksheet
 
        strAdr = "C:\Users\" & pStrUsid & "\Documents\Office のカスタム テンプレート\Temp_RowHiLight.xltm"
         
        On Error Resume Next
        Set xlApp = GetObject(, "Excel.Application") '起動済Excelの取得
        If Err.Number <> 0 Then
            Err.Clear
 
            '起動済Excelが無い時新規作成
            Set xlApp = CreateObject("Excel.Application")
            iCreatObje = True
            xlApp.Visible = False 'EXCEL aplが新規時のみ表示しない
        End If
         
        iSTAT = 15
         
        'テンプレートファイルが有れば利用します。
        If Dir(strAdr) <> "" Then
            ' テンプレートファイル利用する
            Set wkb = xlApp.Workbooks.Add(strAdr)
        Else
            ' テンプレートファイル利用しない
            Set wkb = xlApp.Workbooks.Add
        End If
        Set wks = wkb.Worksheets(1)
         
        xlApp.ScreenUpdating = False
        xlApp.DisplayAlerts = False
--------------------------------------------------------
テンプレートファイルを利用すると後続する以下のMergeで警告メッセージが表示されます。
   wks.Range("AS1:AS2").Merge '品種
メッセージ;セルを結合すると、左上の値のみが保持され、他のセルの値は破棄されます。
テンプレートを利用する時にWorkbooks.addで良いものかも疑問なのですがメッセージを表示しないようにするにはどのようにすると良いでしょうか?
アドバイスをお願いいたします。

回答
投稿日時: 22/04/13 07:15:28
投稿者: WinArrow
投稿者のウェブサイトに移動

セルを結合すると「左上セル」のみにデータが入り、それ以外は、空白になります。
これは仕様です。
  
> wks.Range("AS1:AS2").Merge '品種
このコードを実行する前のコードが説明されていませんが、
既にセル:AS2にデータが入っているのではないでしょうか?
(「テンプレートの時だけ」というのは、分かりませんが、・・・)

回答
投稿日時: 22/04/13 08:50:43
投稿者: Suzu

Excel 2019 ですが
 
Sub TEST()
  Range("A1").Value = 1
  Range("A2").Value = 2
' Application.DisplayAlerts = False
  Range("A1:A2").Merge
End Sub
 
  Application.DisplayAlerts = False
を入れれば、警告は出てこなくなります。
 
何故 警告メッセージが出てくるかは、
 結合しようとせるセル のうち、左上 以外 のセルに 値が入っているから。
 
テンプレートを使用して メッセージが出るのであれば、それらのセルに 値が含まれているのだと思います。
警告が出てこない様にするには、セルの値を消すか、.DisplayAlerts = False で良いはずです。
 
確認してみてください。

投稿日時: 22/04/13 11:01:07
投稿者: hareru

WinArrowさん、Suzuさん
 
回答ありがとうございます。
"AS2"にデータが入っている事が判明し、データを入れないようにする事で解決出来ました。
ただ、テンプレートファイルを使わない時(新規BOOK)の時はなぜ、警告が表示されなかったのかが不明です。
現時点でvba仕様通りの動作により、想定通りOUTPUTデータを取得出来ているので、解決とさせて頂きます。
 
ありがとうございました。