Access2003からExcel2003へデータをエクスポートする際に困っていることがあります。
ExcelテンプレートはAとBの2種類あります。ほぼ同じ内容ですが、Rangeの数がBのほうがAより1つ多くなっています。
テンプレートBに1つ追加されているこのRangeの名前をここで"abc"としておきます。
AccessVBAで
obSht.Range("abc").Value = rs!abc
のようにレコード上のデータをセル値に一つ一つコピーしていきたいのですが、abcというRangeのないテンプレートAにこの式は必要ありません。
そこで、abcというRangeがExcelにある場合のみこの式を追加、ということがしたいのですが、どのように記述すればよいでしょうか。
If [ExcelにabcというRangeがある] Then
obSht.Range("abc").Value = rs!abc
End If
のようにしてみたいのですが。。。
回答どうぞよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
"abc" っていう名前で定義されている範囲は確かに Range ではありますが、そもそも "abc" ってのは Workbook.Names コレクションの中の Name オブジェクトです。
これを確認するには、マクロの記録で
1. 適当な範囲を選択
2. そこに適当な名前を定義
を記録してその VBA コードを見てみるとわかります。
ActiveWorkbook.Names.Add Name:="hoge", RefersToR1C1:="=Sheet1!R14C1:R17C2"
みたいに記録されます。
ですので対象のワークブックの Names コレクションから "abc" という名前がついた Name オブジェクトを探せばいいんじゃないかな、なんて思いつきます。
Dim aName As Name
For Each aName In targetBook.Names
If aName.Name = "abc" Then
MsgBox "発見"
Exit For
End If
Next aName
みたいな。
お礼を申し上げるのが送れ大変申し訳ございません。
非常に参考になりました。ご提示いただいたコードを
多少いじって適用してみたところ、要求どおりに
動作しました。
本当にありがとうございました。
No.2
- 回答日時:
> obSht.Range("abc").Value = rs!abc
で、名前 abc が存在しないと実行時エラーが発生するはずですから、それを
利用します。名前 abc が存在すれは代入されるし、存在しなければ素通りす
ると思いますが、確認はしてません。
On Error Resume Next
obSht.Range("abc").Value = rs!abc
On Error Goto 0
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「何とかで始まり、何とかで終...
-
「abcで始まらない」を正規表現...
-
バッチファイルの正規表現を利...
-
VBA EXCEL あるセルの中の一...
-
C++でofstreamに空白を含む文字...
-
CSVファイルの中で、「 , 」カ...
-
マクロを使ってフォルダー内に...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
エクセルにMicrosoft Barcode C...
-
カンマ区切りの数字をCSVフ...
-
各項目がダブルクォーテーショ...
-
Excel VBAでPDFファイルをMicro...
-
住宅にカナを入力する際に丁目...
-
csvデータ ダブルクォーテ...
-
CSVの定義
-
正規表現で、特定の文字列を含...
-
IEからEdgeへの移行に伴うIMEの...
-
VBA 置換文字がみつからない時
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「何とかで始まり、何とかで終...
-
VBA EXCEL あるセルの中の一...
-
「abcで始まらない」を正規表現...
-
正規表現の否定先読みで、複数...
-
バッチファイルの正規表現を利...
-
正規表現について
-
角カッコが含まれてるかどうか...
-
XML::Xpathで部分一致検索をす...
-
英数字混じり8文字以上の正規表現
-
正規表現 英数字を1つ以上含む...
-
C++でofstreamに空白を含む文字...
-
.htaccessで特定のドメインを弾...
-
文字列の否定の正規表現について
-
正規表現
-
Perl CSVファイルの複数条件で...
-
文字列から数値を抽出したいの...
-
[正規表現]特定の範囲のIPアド...
-
ログファイルからキーワードを...
-
長い文字列から特定の数字を取...
-
正規表現にて文字数をチェック...
おすすめ情報