ExcelVBAで作成したマクロでデータ抽出を行なっていたのですが、
数日前に動作していたマクロが、突然に、
「定数式が必要です」というエラーが出てきて動かなくなりました。
VBAの仕様が変わったのでしょうか?

★エラーの発生したモジュール
Option Explicit
Dim MailCc As String
Sub Mailer()
(中略)
MailTo = Cells(RW_TO, 2).Text ' 宛先
→ MailCc = Cells(RW_CC, 2).Text ' CC
(以下略)

★同一プロジェクトの別モジュール
Global Const RW_CC = 18

このQ&Aに関連する最新のQ&A

A 回答 (5件)

NO.2です


先程ので解決と思ったのですが・・

以前、原因不明でマクロが動かなくなったとき以下の方法で
直ったことがあります。
試してみてください。

新規ワークブックを作成
ワークシートを全選択します(行と列の間の四角いところをクリック)
ワークシートを新規ワークブックに丸ごとコピーする。
ワークシートが複数ある時は繰り返し

モジュール等を全て新ワークブックへコピー
プロジェクトエクスプローラーでドラッグでも可(たぶん)
参照設定をあわせる
' Microsoft CDO for Windows 2000 Library
' Microsoft ActiveX Data Objects 2.7 Library
' Microsoft Scripting Runtime
でどうでしょうか。
以前私は直ったことがあります。

ところで、
' Microsoft ActiveX Data Objects 2.7 Library

' Microsoft ActiveX Data Objects 2.8 Library
が最新のようですね。
こちらに変えたらいきなり直ったりして?
関係ないと思いますが
    • good
    • 0
この回答へのお礼

どうもアドバイス有難うございました。

' Microsoft ActiveX Data Objects 2.7 Library を
' Microsoft ActiveX Data Objects 2.8 Library
に変えたら直りました。

WindowsUpdateの影響かもしれないですね。
このようなことがあるかと思うと、正直、VBAを定型業務に使ってよいものか迷ってしまいます。

助かりました。感謝いたします。

お礼日時:2007/05/24 09:18

NO2です。



では、参照設定で不足しているものはないですか。
例えば、アドインとか
最近システム変更して、DLLが変わった、削除したとか
    • good
    • 0
この回答へのお礼

有難うございます。

参照設定したDLLは一応コメントに記録してあるのですが、
特に外れているわけではないです。
' Microsoft CDO for Windows 2000 Library
' Microsoft ActiveX Data Objects 2.7 Library
' Microsoft Scripting Runtime
WindowsUPDATEはしていますが、勝手にDLLまで置き換えられることもあるのでしょうか?

お礼日時:2007/05/23 15:27

こんにちは、#1です。



 エラーの発生した行をコメントにして、#2さんの言われた方法を実行するとどうなりますか。

では。
    • good
    • 0
この回答へのお礼

お返事有難うございます。

ウォッチ式にRW_CCという定数を追加して、
そのステップで止めてみましたが、
「ウォッチ式が不正です」ということで見ることもできません。

お礼日時:2007/05/23 14:25

→ MailCc = Cells(RW_CC, 2).Text ' CC


ここでエラーと言う事でしょうか。

だとすれば、
MailCc = Cells(RW_CC, 2).Text
の1つ上に
Debug.print RW_CC
として
イミディエトウインドウには
何が出力されますか。
18のはずですが違う数字例えば0など・・
    • good
    • 0
この回答へのお礼

有難うございます。

コンパイルエラーなので、
実行できないため、イミディエトウインドウの操作はできません。

お礼日時:2007/05/23 13:43

こんにちは。



 >→ MailCc = Cells(RW_CC, 2).Text ' CC
  ↑ここにある矢印はどういう意味ですか?

では。
    • good
    • 0
この回答へのお礼

失礼しました。
ここでエラー発生という意味です。

お礼日時:2007/05/23 13:39

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qバンクーバーの英語はイギリス式?フランス式?

カナダのビクトリアやバンクーバーで話されている英語は訛りがほとんどないイギリス式英語だと教わったのですが、友達からバンクーバーはフランス式英語だと言い張ります。

イギリス式英語だという根拠を示したいのですが何かいい方法は
ないでしょうか?参考になる情報源があれば是非教えてください。

Aベストアンサー

こんにちは。

私はカナダの西部、東部におりました。
個人的な意見を参考までに書かせて頂きますね。

質問者様の、イギリス式、フランス式とは、訛りと言う
認識でしょうか?

例えば、他の方も回答されているように、カナダの公用語は、
英語とフランス語の2ヶ国語です。
東部のケベック州(ケベック)ではフランス語を話す方が
多くいます。英語も、フランス語訛りの方が多いと思います。

その他東側(トロントなど)や、西側(バンクーバーなど)でも、
道路標識や、TVのニュースなどは、2ヶ国語で標示されています。

イギリス式。例えば、アメリカでは、エレベーターをエレベーター
と言いますね。イギリスではエレベータをリフトと言うそうです。

アメリカではアパートの事を、アパートメントと言いますが、
イギリスでは、フラットと言うそうです。

このように考えると、カナダの英語が現在イギリス式だとは
言いにくいかなと思います。
カナダは上記の例ですと、アメリカと同じ単語を使います。
例えば、これがオーストラリアだと、イギリスのような単語
を使います。

発音だけで比べると、イギリスの発音と、カナダ、アメリカ、
オーストラリア、発音はそれぞれ違います。

歴史的な事を考えれば、イギリス式なのかもしれませんが、
実際のところ、どうなのでしょう。
カナダの英語がすべて(ケベック以外でも)フランス式だとは、
私は思いませんが。

後は、質問者様が、どこで判断するかにもよると思います。
ちなみに、カナダに全く訛りがないことはないですよ。
発音なのか、歴史的背景なのか、使われている単語なのか、
例えばどこの国と比べてのことなのか・・・・。
それによってまた少し違ってくるかもしれませんね。

個人的意見ですので、ご参考までに☆

こんにちは。

私はカナダの西部、東部におりました。
個人的な意見を参考までに書かせて頂きますね。

質問者様の、イギリス式、フランス式とは、訛りと言う
認識でしょうか?

例えば、他の方も回答されているように、カナダの公用語は、
英語とフランス語の2ヶ国語です。
東部のケベック州(ケベック)ではフランス語を話す方が
多くいます。英語も、フランス語訛りの方が多いと思います。

その他東側(トロントなど)や、西側(バンクーバーなど)でも、
道路標識や、TVのニュースなどは、2...続きを読む

QExcelVBAで、必要な列を抽出する方法

いつもお世話になっております

Excelシートで、次のような表を作っています


[Sheet1]
A/B/C/D/E
センター/氏名/生年月日/契約開始日/契約終了日

※契約終了日のセルには計算式が入っていて、契約開始から18か月後の日付が出るようにしています。
また、G1セルに「契約終了月」、G2に「18」と入っています

そこで、[Sheet2]に必要な行のみを抽出し、印刷するまでをしたいのですが、どのようにしたら良いのかわかりません


今できているのは、こんな感じです

Private Sub CommandButton1_Click()
Worksheets("Sheet2").Select
Worksheets("Sheet2").Range("A:E").Clear
With Worksheets("Sheet1")
.Range("A:E").Copy Worksheets("Sheet2").Range("A1")
.Range("A:E").AdvancedFilter _
Action:=xlFilterCopy, _
criteriarange:=.Range("G1:G2"), _
CopyToRange:=Worksheets("Sheet2").Range("A:F"), _
unique:=False
End With
If Application.CountA(Worksheets("Sheet2").Range("A:A")) > 1 Then
MsgBox "今月末で契約終了です", vbOKOnly + vbInformation, "確認"
If MsgBox("印刷しますか?", vbYesNo + vbQuestion, "印刷") = vbYes Then
Worksheets("Sheet2").PrintOut
End If
Else
MsgBox "今月で契約終了となる方はいません", vbOKOnly + vbInformation, "確認"
End If
Sheets("top_page").Select
Range("A1").Select
End Sub

※top_pageシートでコマンドボタンをクリックするとマクロ実行できるようにしています


連続する列の抽出の仕方はわかるのですが、例えば
A列、B列、E列のみ
を抽出させる場合どのようにしたらよいのか、アドバイスをお願いします

できたら、抽出後、印刷までできるようなやり方がもっと簡単なのがあれば、教えていただけると助かります

色々勉強してはいるのですが、今一つわからないので、よろしくお願いします

いつもお世話になっております

Excelシートで、次のような表を作っています


[Sheet1]
A/B/C/D/E
センター/氏名/生年月日/契約開始日/契約終了日

※契約終了日のセルには計算式が入っていて、契約開始から18か月後の日付が出るようにしています。
また、G1セルに「契約終了月」、G2に「18」と入っています

そこで、[Sheet2]に必要な行のみを抽出し、印刷するまでをしたいのですが、どのようにしたら良いのかわかりません


今できているのは、こんな感じです

Private Sub CommandButton1_Click()
Works...続きを読む

Aベストアンサー

まず表題が>、必要な列を抽出する方法
となっているが
むしろ、必要な行を抽出する方法 、でしょう。その後不要列は表示しないを希望らしいがまず、行の抜き出しの問題でしょう。
ーー
まずデータ例が挙げられていないことが困る。
コードだけ書き連ねて、何をしたいのか書いてないのは、回答者にコードを読み解けとなって、質問する立場としては良くない。
>criteriarange:=.Range("G1:G2"), _
のRange("G1:G2"), _の中身が書いてないので、テストも「やりにくい。
ーーー
>A列、B列、E列のみ
を抽出させる場合どのようにしたらよいのか、アドバイスをお願いします。
不要列を削除ないしは非表示にしてはどうですか。
エクセルのフィルタ、フィルタオプションの設定では必要項目は指定できないのではないかな。
もしどうしてもやりたいなら、Sheet1の各行について、条件に合って居るかIF分で判断し、合致しておれば
必要な列だけ、Sheet2に書き出す。
このコードも常々回答で示している。
その場合は
シート名を明示してセルデータを扱うこと
コピー貼り付けでなく、代入文でセルの値を持っていくで済ませる。書式が必要なら下行、や最後などで別途手当てする。
のが初心者にはわかりやすいと思う。
Sub test04()
Sheets("Sheet1").Range("F5").Copy Destination:=Sheets("Sheet2").Range("C5")
End Sub
のようなことも可能だが。
セル単位でデータを扱うこと。ただし複数列対象Copyでも連続する列ではCopyが使えるが。列数が多くなければセル単位に統一しては。
ーー
>抽出後、印刷までできるようなやり
データが完成したあとの印刷のコードは、、マクロの記録を採れば判る。
Worksheets("Sheet2").PrintOut
はシートのPrintOutだが、(シート).Range(・・).Printout
を学んでは。
多分唯一データ情況で場合によって変わるのは、最終行(データ行数)だけでしょう。
これをとらえるコードなど毎日ここに出ている。
Googleで「エクセル VBA 最終行」で照会して見ること。
ーー
>Worksheets("Sheet2").Select
Worksheets("Sheet2").Range("A:E").Clear
のようなSelect方式は早く改めること(マクロの記録から来る、クセ)
Sub test03()
Worksheets("Sheet2").Range("A:E").Clear
End Sub
で良い

まず表題が>、必要な列を抽出する方法
となっているが
むしろ、必要な行を抽出する方法 、でしょう。その後不要列は表示しないを希望らしいがまず、行の抜き出しの問題でしょう。
ーー
まずデータ例が挙げられていないことが困る。
コードだけ書き連ねて、何をしたいのか書いてないのは、回答者にコードを読み解けとなって、質問する立場としては良くない。
>criteriarange:=.Range("G1:G2"), _
のRange("G1:G2"), _の中身が書いてないので、テストも「やりにくい。
ーーー
>A列、B列、E列のみ
を抽出させる場...続きを読む

Q日本式英語でどう?

 ネイティブがどうしたとか本物の英語がこうしたとか、いいかげんうんざりしています。
 英語が国際語というなら各国なりの英語でいいのでは?(発音・文法も)
 英米の英語が正統という考えはもう捨てたほうがよくないですか?
 英米で仕事をするなら違うでしょうが、国際語として英語を考えるなら日本式英語でバンバンいったほうがむしろ状況も好転するのでは?(その国の言葉ができたほうがいいのは言うまでもありませんが)
 日本語もまた国際理解の一環としては、各国的日本語を了承する必要があると思いますが、皆さんいかがお考えでしょうか?
 (英語公用化も日式英語肯定でなら賛成)
 またこれを考える上での良書があれば教えて下さい。

Aベストアンサー

 賛成です。大英帝国が英語を国際語にしたけれど、第2次世界大戦以後の国際語は米語になった。とくにビジネスとエンターテイメントでは圧倒的に米語です。
 在日イギリス人のある人は、米語を馬鹿にしているけれど、使えないとビジネスが円滑に進まないので、ビジネスでは嫌々ながら米語を使い、その鬱憤を晴らすために英会話の指導ではQUEEN'S ENGLISHで叩き込んでるといってました。米語は美しくないと蔑んでいます。それからロンドンの下層の英語も下品だと。
 しかし言葉は道具なのですから、使い手がいちばん便利な道具を選べば、それが最善でいいのではないでしょうか。僕は上述のイギリス紳士の態度に品がないと思いました。
 標準はあるでしょうけれど、標準にあわせなければいけないということは、ないほうが望ましい。日本語もいろいろな地域的な表現があっていいとおもいます。むしろ、外国人の日本語から表現法を学ぶことがあるくらいのほうが、豊かでいいと思います。
 コミュニケーションが深くなっていくのであれば、どういう道筋を通ってもいいと思います。

QExcelVBAで複数条件で抽出して表を作成

ExcelVBAで複数条件一致の時の抽出法方を教えて下さい。

ここで教えていただいたコードがあるのですが、質問の仕方が悪かったのか、意図した結果が得られず、改変もできなかったので再質問です。よろしくお願い致します。

質問をすることは会社の許諾を得ているのですが、会社のPCからは制限がかかっており投稿できないのでスマホからです。なるべく伝わりやすいよう努めますが、力不足なときはお許し下さい。

Excelのオートフィルタ機能でもよいとも思ったのですが、処理数が100を越えるため、VBAを検討することにしました。

(1)処理前の並び順と、VBAで処理した後の並び順は異なります。
処理前:コードの昇順
処理後:地域ごとに表を作成し、更に広域ごとに表を掲載するシートを分ける

(2)処理前の表は数字しか並んでいません。全てコード化しています。

(3)処理前はいくつもの地域の男女の値が表になっていますが、
・地域コード
・性別コード
・年代コード
・疾患コード
で抽出して、表を作る方法を教えて下さい。1つの地域を抽出する方法で良いのでお願い致します。
後は表を配置する場所と地域コードを指定して、自力で頑張ります。

<元データ>
---|-A-|-B-|-C-|-D-|-E-|-F-|-G-|
列|地域| 性 | 年 | 21 | 22 | 23| 24 |
01| 201 | 1 | 40 | 1 | 2 | 3 | 4 |
02| 201 | 1 | 50 | 2 | 4 | 2 | 1 |
03| 201 | 1 | 55 | 3 | 0 | 0 | 7 |
04| 201 | 1 | 65 | 2 | 1 | 1 | 6 |
05| 201 | 1 | 80 | 1 | 2 | 4 | 1 |
06| 201 | 1 | 95 | 7 | 5 | 4 | 3 |
07| 201 | 2 | 45 | 0 | 3 | 3 | 0 |
08| 201 | 2 | 60 | 4 | 2 | 2 | 6 |
09| 201 | 2 | 70 | 1 | 2 | 3 | 4 |
10| 201 | 2 | 75 | 3 | 6 | 0 | 3 |
11| 201 | 2 | 85 | 5 | 2 | 4 | 2 |
12| 201 | 2 |100| 2 | 2 | 1 | 0 |
13| 202 | 1 | 40 | 1 | 2 | 3 | 4 |
14| 202 | 1 | 45 | 3 | 5 | 2 | 7 |
15| 202 | 1 | 55 | 1 | 2 | 3 | 2 |
…続く
・A列は地域コードです。
・B列は性別コードです。男性が「1」女性が「2」です。
・C列は年代コードです。
40/45/50/55/60/65/70/75/80/85/90/95/100
という形に40から100まで5歳刻みです。
・D列~G列は疾病コードです。

<希望>
・元データの年代は値がないと表示がありません。ですが、出力される表には全ての年代を表示させるのが希望です。

<処理後の表>
VBA実行後は、以下のような表が1つ作成できることが希望です。教えていただいたコードを元に、配置場所を変更できるようになっていると大変ありがたいです。

01| 201 |----| 21 | 22 | 23 | 24 |合計|
02|男性 | 40 | 1 | 2 | 3 | 4 | 10 |
03|男性 | 45 |-----|-----|-----|----| 0 |
04|男性 | 50 | 2 | 4 | 2 | 1 | 9 |
05|男性 | 55 | 3 | 0 | 0 | 7 | 10 |
06|男性 | 60 |-----|-----|-----|----| 0 |
07|男性 | 65 | 2 | 1 | 1 | 6 | 10 |
08|男性 | 70 |-----|-----|-----|----| 0 |
09|男性 | 75 |-----|-----|-----|----| 0 |
10|男性 | 80 | 1 | 2 | 4 | 1 | 8 |
11|男性 | 85 |-----|-----|-----|----| 0 |
12|男性 | 90 |-----|-----|-----|----| 0 |
13|男性 | 95 | 7 | 5 | 4 | 3 | 19 |
14|男性 |100|-----|-----|-----|----| 0 |
15|男性 |合計| 16 | 14 | 14 | 22| 66 |
16|女性 | 40 |-----|-----|-----|----| 0 |
17|女性 | 45 | 0 | 3 | 3 | 0 | 6 |
18|女性 | 50 |-----|-----|-----|-----| 0 |
19|女性 | 55 |-----|-----|-----|-----| 0 |
20|女性 | 60 | 4 | 2 | 2 | 6 | 14 |
21|女性 | 65 |-----|-----|-----|-----| 0 |
22|女性 | 70 | 1 | 2 | 3 | 4 | 10 |
23|女性 | 75 | 3 | 6 | 0 | 3 | 12 |
24|女性 | 80 |-----|-----|-----|-----| 0 |
25|女性 | 85 | 5 | 2 | 4 | 2 | 13 |
26|女性 | 90 |-----|-----|-----|-----| 0 |
27|女性 | 95 |-----|-----|-----|-----| 0 |
28|女性 |100| 2 | 2 | 1 | 0 | 5 |
29|女性 |合計| 15 | 17 | 13 | 15 | 60 |

こんな表にしたいです。
縦横のそれぞれの合計が出せると素敵です。

お知恵を拝借したく、何卒、よろしくお願い致します。

ExcelVBAで複数条件一致の時の抽出法方を教えて下さい。

ここで教えていただいたコードがあるのですが、質問の仕方が悪かったのか、意図した結果が得られず、改変もできなかったので再質問です。よろしくお願い致します。

質問をすることは会社の許諾を得ているのですが、会社のPCからは制限がかかっており投稿できないのでスマホからです。なるべく伝わりやすいよう努めますが、力不足なときはお許し下さい。

Excelのオートフィルタ機能でもよいとも思ったのですが、処理数が100を越えるため、VBAを検討...続きを読む

Aベストアンサー

やりたい事と少し方向性が違うかもしれませんが、PivotTableを使ったアプローチ。
1)ActiveWorkbookに対して処理を行う。
2)ActiveWorkbookに「元データ」という名前のシートがあり、データはそのA1セルが起点。
3)A列は空白セルがない連続データであり、データ行数をA列の個数で判断できる。
4)1行目は空白セルがない連続データであり、データ列数を1行目の個数で判断できる。
5)A1:C1セルに "地域","性","年" という項目名がある。
以上を前提条件とします。

Sub Macro1()
  Dim pt As PivotTable
  Dim i As Long

  With ActiveWorkbook
    .Names.Add Name:="database", RefersToR1C1:="=INDEX(元データ!R1,COUNTA(元データ!R1)):INDEX(元データ!C1,COUNTA(元データ!C1))"
    Set pt = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:="database").CreatePivotTable("")
  End With
  pt.AddFields RowFields:=Array("性", "年"), ColumnFields:="データ", PageFields:="地域"
  For i = 4 To Range("database").Columns.Count
    pt.AddDataField pt.PivotFields(i), , xlSum
  Next
  With pt.PivotFields("性")
    .PivotItems("1").Caption = "男性"
    .PivotItems("2").Caption = "女性"
    .ShowAllItems = True
  End With
  pt.PivotFields("年").ShowAllItems = True
End Sub

やりたい事と少し方向性が違うかもしれませんが、PivotTableを使ったアプローチ。
1)ActiveWorkbookに対して処理を行う。
2)ActiveWorkbookに「元データ」という名前のシートがあり、データはそのA1セルが起点。
3)A列は空白セルがない連続データであり、データ行数をA列の個数で判断できる。
4)1行目は空白セルがない連続データであり、データ列数を1行目の個数で判断できる。
5)A1:C1セルに "地域","性","年" という項目名がある。
以上を前提条件とします。

Sub Macro1()
  Dim pt As PivotTable
  ...続きを読む

Q「411式 英語発音完全マスター」を体験された方おりましたら感想など聞

「411式 英語発音完全マスター」を体験された方おりましたら感想など聞かせてください。

Aベストアンサー

開校から1~2年の小さなスクールなので、コースを修了なさった方もまだそれほど多くはないのではないでしょうか。よって「411式 英語発音完全マスター」についてのブログもほとんど存在しないようです。もう一つ以下のサイトに少しだけ記述がありました。昨年、英語の好きな人同士が集まってネット上でチャットを行ったことがありますが、そのときにチャットに参加した人の一人が「411式 英語発音完全マスター」についてほんの少しだけ触れていました。下アゴを支点にして舌を素早く動かす練習など、ユニークで楽しいらしいです。

http://eigohatsuon.web.fc2.com/index.html

QExcelVBAにて外部データ(*.csv)をSQL文を使って抽出する方法

こんにちは

VBAインポート問題で日々悩んでいるものです。

CSV形式のデータをODBCのシステムDSNに登録し、それをDAOでSQL要求しデータを抽出する方法がよくわかりません。

(1)データベースの定義記述内容
(2)レコードセットにSQL命令をかける記述
(3)抽出された内容をワークシートに貼る記述

等がよくわかりません。

DAOの場合、レコードセットを定義するのに
set DB=DBEngine.OpenDatabase("******")があったり、なかったりする理由がわかりません。

突然、set rs = CurrentDb.OpenRecordset("*****")
しているのはなぜでしょうか。

Aベストアンサー

田吾作7@38.6度の風邪引きです。。。
返事が遅くなってすいません。昨日ほとんど寝てました。。。


作りなおしました。

質問の仕様が
1.ODBC
2.EXCELに貼り付け

とあったので、すでにODBCは無視してますが、EXCELに貼り付けは忠実に守ろうとしていました。
今回のは、完全に仕様を無視したつくりになってます。(スピード重視のため)

作りとしては
1.CSVのデータをAccessにテーブルとして取り込む
2.EXCEL形式でエクスポート&ワークブックを開く

もしこれでもいいのであれば、こちらの方が処理が早いと思います。


Sub Main2()
  'CSVファイルのフルパス
  Const csvFullPath  As String = "c:\Folder1\dmy\test.csv"
  'EXCELファイルのパス
  Const excelFullPath As String = "c:\test.xls"
  'CSVファイルを取り込むテーブル名
  Const DmyTbl    As String = "DmyTbl"
  
  
  'CSVファイルを取り込む
  Call inCsv(csvFullPath, DmyTbl)
  
  'EXCEL形式でエクスポート
  Call outExcel(DmyTbl, excelFullPath)
End Sub

Private Sub outExcel(inTblName As String, inXlsFile As String)
  Dim xlsApp   As Excel.Application
  Dim xlsBook   As Excel.Workbook
  
  'エクセル形式でエクスポート
  DoCmd.TransferSpreadsheet acExport, 8, inTblName, inXlsFile, True
  
  
  'エクセル起動をしてエクスポートされたかを確認
  Set xlsApp = New Excel.Application
  Set xlsBook = xlsApp.Workbooks.Open(inXlsFile)
  
  xlsBook.Worksheets(inTblName).Select
  
  xlsApp.Visible = True

  Set xlsBook = Nothing
  Set xlsApp = Nothing
End Sub
Private Sub inCsv(inFileName As String, inTblName As String)
  Dim Db   As DAO.Database
  Dim strSQL As String
  
  Dim strFile As String
  Dim strPath As String
  
  Dim wkVal  As Variant
  
  Set Db = CurrentDb
  
  'とりあえずダミーを削除
  On Error Resume Next
  Db.TableDefs.Delete inTblName
  On Error GoTo 0
  
  'パスとファイル名に分解
  wkVal = Split(inFileName, "\")
  strFile = wkVal(UBound(wkVal))
  strPath = Left(inFileName, Len(inFileName) - Len(strFile))
  
  'SQL文(テーブル作成用)を作成
  strSQL = "select * into " & inTblName & _
      " from " & "[Text;DATABASE=" & strPath & "].[" & strFile & "]"
  Db.Execute strSQL
  
  Set Db = Nothing
End Sub

田吾作7@38.6度の風邪引きです。。。
返事が遅くなってすいません。昨日ほとんど寝てました。。。


作りなおしました。

質問の仕様が
1.ODBC
2.EXCELに貼り付け

とあったので、すでにODBCは無視してますが、EXCELに貼り付けは忠実に守ろうとしていました。
今回のは、完全に仕様を無視したつくりになってます。(スピード重視のため)

作りとしては
1.CSVのデータをAccessにテーブルとして取り込む
2.EXCEL形式でエクスポート&ワークブックを開く

もしこれでもいいのであれ...続きを読む

Q英語ネイティブ並の方!結婚式パンフレット表紙に載せるタイトルをアドバイスしてください

結婚式披露宴で使う、パンフレットを自作しています。
席次表、メッセージ、プロフィールなどが一冊になったものです。

表紙に「Welcome to our Wedding Reception」
のようなタイトル(?)を書きたいのですが、
どうも教科書英語的かなあという印象が拭えません…。

そこで、
本当に英語を使う人だったらどんなタイトルをつけるのか
または実際、欧米の結婚式ではどんなタイトルをつけるのか
アドバイスいただけませんか?

「あまり一般的ではないけれど、こんな英語なら”粋”だよ」
という個人的な好みの英語でも結構です。
よろしくおねがいします!

Aベストアンサー

いわゆるmarriage ceremony/reception programを書いた2-数ページの小冊子の表紙は、表紙にLove is ...とかいったような簡単な句や文があり、中に式次第等のことなどが書いてあったと思いす。

今回のは中身は日本語でカバーに、ということですね。

「個人的な好み」で:

Yasuo Fukuda (1)
and (1)
Norika Fujiwara (1)
thank you for joining us to (1)
cerebrate on love today. (1)

Sunday, February 3 (1)

(上記英文を投稿するとどのような形になるかわかりませんが、(1)
それぞれで一行で、最後の(1)は一行空け、各(1)の中心を真ん中にそろえます)

米国で2回ほど結婚式にでましたが、そういう小冊子はなかったですね。ある程度の式だとレベルだとつくるのでしょうかね?

冒頭の言葉をGoogleすれば、参考情報があるかもしれません。

いわゆるmarriage ceremony/reception programを書いた2-数ページの小冊子の表紙は、表紙にLove is ...とかいったような簡単な句や文があり、中に式次第等のことなどが書いてあったと思いす。

今回のは中身は日本語でカバーに、ということですね。

「個人的な好み」で:

Yasuo Fukuda (1)
and (1)
Norika Fujiwara (1)
thank you for joining us to (1)
cerebrate on love today. (1)

Sunday, February 3 (1)

(上記英文を投稿するとどのような形になるか...続きを読む

QExcelのマクロについて質問です。 以下のようなデータに対し、条件に合うデータのみを抽出したいです

Excelのマクロについて質問です。
以下のようなデータに対し、条件に合うデータのみを抽出したいです。
(条件)
・長さ→15.0以上
・重量→10.00以下
・速度→3つ上のデータと比較し差が±0.05なら抽出(3個目のデータは一番最後のデータと比較、2個目のデータは最後から一つ前のデータと比較、1個目のデータら最後から二つ前のデータと比較)

| A | B | C | D |
1|時間 |長さ| 重量| 速度 |
2|8:00|15.5|5.25|15.25|
3|9:00|20.3|7.55|12.27|
4|9:30|10.7|3.85|17.85|




どなたかわかる方教えて頂きたいです。
コードを乗せて頂けると助かります。

Aベストアンサー

こんばんは。

この問題というのは、VBAの基礎を試すのに良い問題ですね。(^^;
アップロード寸前で気が付きました。
小数点のある計算は、全部狂いが生じます。

マクロのコードの内容は別にして、どの計算も全部、浮動小数点誤差が発生します。以前も、こんな回答をしたことがあるけれども、質問者さんは理解しなかったです。ところが、これが、ワークシート上でも狂っているのですから、目も当てられないっていう感じです。

Excel で浮動小数点演算の結果が正しくない場合がある
https://support.microsoft.com/ja-jp/kb/78113
(だいたい、6~7割は間違っています。)10進にすればこんなことはありません。今回は、@ -Currency 型で計算させています。

'//
Sub TestDataAnlysing()
 Dim LastRow As Long
 Dim i As Long, j As Long
 Dim rng As Range
 Dim sh2 As Worksheet: Set sh2 = Worksheets("Sheet2")
 If Range("A1").CurrentRegion.Rows.Count < 4 Then
  MsgBox "この表では集計ができません。", vbExclamation
  Exit Sub
 End If
 Set rng = ActiveSheet.Range("A2", Cells(Rows.Count, 1).End(xlUp))
 LastRow = rng.Rows.Count
 sh2.Cells(1, 1).Resize(, 4).Value = Array("時間", "長さ", "重量", "速度")
 j = 2 '初期値
 
 With rng
 For i = 1 To LastRow
  If .Cells(i, 2).Value >= 15@ And _
   .Cells(i, 3).Value <= 10@ Then
   If i < 4 Then

    If Abs(.Cells(i, 4).Value - .Cells(LastRow - 3 + i, 4).Value) <= 0.05@ Then
     .Cells(i, 1).Resize(, 4).Copy sh2.Cells(j, 1)
     j = j + 1
    End If
   Else
    If Abs(.Cells(i - 3, 4).Value - .Cells(i, 4).Value) <= 0.05@ Then
    .Cells(i, 1).Resize(, 4).Copy sh2.Cells(j, 1)
    j = j + 1
    End If
   End If
  End If
Next i
End With
End Sub

こんばんは。

この問題というのは、VBAの基礎を試すのに良い問題ですね。(^^;
アップロード寸前で気が付きました。
小数点のある計算は、全部狂いが生じます。

マクロのコードの内容は別にして、どの計算も全部、浮動小数点誤差が発生します。以前も、こんな回答をしたことがあるけれども、質問者さんは理解しなかったです。ところが、これが、ワークシート上でも狂っているのですから、目も当てられないっていう感じです。

Excel で浮動小数点演算の結果が正しくない場合がある
https://support.microsoft.c...続きを読む

Q英語で終業式を意味する文

英語で終業式を意味する言葉ってclosing ceremonyであってますか?
・今日で高校●年が終了した、
・今日終業式があった
・4月から●年です

英語でどういう文になりますか?

Aベストアンサー

今日終わりましたか・・・いいですね、若い人たちは(!)。

一応「2年生」がおわったとし:

My second year at (senior) high school ended today.
Today was the last day of my second year at high school.
I've wrapped up my second year ... なんてのも
暦年でなく学年度なんで、必要に応じて、academic year と。


We had an end-of-academic year ceremony today.
There was a ceremony to end the academic year today.

I will start my final (third) year of high school in April.
April will kick off my final year at high school.
This coming April will be the starting month of my final ...

がんばってください。

今日終わりましたか・・・いいですね、若い人たちは(!)。

一応「2年生」がおわったとし:

My second year at (senior) high school ended today.
Today was the last day of my second year at high school.
I've wrapped up my second year ... なんてのも
暦年でなく学年度なんで、必要に応じて、academic year と。


We had an end-of-academic year ceremony today.
There was a ceremony to end the academic year today.

I will start my final (third) year of high school in Apri...続きを読む

QExcelマクロ 複数条件一致データの抽出方法

お世話になります。

2個の条件に一致するものを別シートに抽出したいのですが、お知恵を貸してください。
Excelシートで下記のような表があります。
これをL列(品名)かつS列(品質)の条件に一致するデータで新しいシートを作成したいのですが、
その際に新しいシート名は"AA1"のようにしたいのです。

条件がC列(品名)だけであれば下記で動いたのですが…。

(データ)
A列 入荷日
I列  品目コード
L列 品名
S列 品質
V列 在庫
A・・・・・・I・・・・・・・・・L・・・・・・・・・S・・・・・・・・・V
1/1・・・・01・・・・・・・AA・・・・・・・・1・・・・・・・・・20
2/2・・・・01・・・・・・・AA・・・・・・・・1・・・・・・・・・10
2/3・・・・01・・・・・・・AA・・・・・・・・2・・・・・・・・・10
2/3・・・・01・・・・・・・AA・・・・・・・・2・・・・・・・・・10
2/3・・・・01・・・・・・・BB・・・・・・・・1・・・・・・・・・10
※以下、最大100品目の行数10000程です。
 ↓↓
(実行後希望)
シート名 AA1
A・・・・・・I・・・・・・・・・L・・・・・・・・・S・・・・・・・・・V
1/1・・・・01・・・・・・・AA・・・・・・・・1・・・・・・・・・20
2/2・・・・01・・・・・・・AA・・・・・・・・1・・・・・・・・・10

シート名 AA2
A・・・・・・I・・・・・・・・・L・・・・・・・・・S・・・・・・・・・V
2/3・・・・01・・・・・・・AA・・・・・・・・2・・・・・・・・・10
2/3・・・・01・・・・・・・AA・・・・・・・・2・・・・・・・・・10

シート名 BB1
A・・・・・・I・・・・・・・・・L・・・・・・・・・S・・・・・・・・・V
2/3・・・・01・・・・・・・BB・・・・・・・・1・・・・・・・・・10


Sub Sheet抽出()
Dim i As Long, Lstrow As Long, myName As String
Dim MySht As Worksheet, myFlg As Boolean
Application.ScreenUpdating = False
With Sheets("sheet1")

'準備
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
myName = .Cells(i, 9)

'シートの存在確認
For Each MySht In Worksheets
If MySht.Name = myName Then
myFlg = True '既にシート在り!!
Sheets(myName).Range("a1") _
.CurrentRegion.Offset(1).ClearContents
Exit For
End If
Next

'新規シートの追加
If myFlg = False Then
Worksheets.Add.Name = myName
End If
With Sheets(myName)
.Range("A1") = "入荷日"
.Range("I1") = "品名コード"
.Range("L1") = "品名"
.Range("S1") = "品質"
.Range("V1") = "在庫"

End With
myFlg = False
Next

'データの転記
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
myName = .Cells(i, 9).Value
.Range("A" & i & ":V" & i).Copy _
Sheets(myName).Cells(Rows.Count, 1).End(xlUp).Offset(1)
With Sheets(myName)
.Activate
Lstrow = .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(Rows.Count, 1).End(xlUp).Offset(1, 21) = ""
.Cells(Rows.Count, 1).End(xlUp).Offset(1, 21) = _
"=SUM(v2:V" & Lstrow & ")"
End With
Next
End With
Sheets("Sheet1").Activate
Application.ScreenUpdating = True
End Sub

実行後希望のように抽出するには、どうすれば良いのでしょうか?
よろしくお願いいたします。

お世話になります。

2個の条件に一致するものを別シートに抽出したいのですが、お知恵を貸してください。
Excelシートで下記のような表があります。
これをL列(品名)かつS列(品質)の条件に一致するデータで新しいシートを作成したいのですが、
その際に新しいシート名は"AA1"のようにしたいのです。

条件がC列(品名)だけであれば下記で動いたのですが…。

(データ)
A列 入荷日
I列  品目コード
L列 品名
S列 品質
V列 在庫
A・・・・・・I・・・・・・・・・L・・・・・・・・・S・・・・・・・・・V
1/...続きを読む

Aベストアンサー

ぎゃっはっはぁ~~!
なかなか解決しませんね。

>イメージとしてシート2以降の表示は、
>元データA列→新シートA列(1行目のタイトルも表示)
>元データI列→新シートB列(〃)
>元データL列→新シートC列(〃)
>元データS列→新シートD列(〃)
>元データV列→新シートE列(〃)

結局元データSheetのA・I・L・S・V列のデータだけを
新規SheetのA~E列に項目行も含めて表示させればよい訳ですよね?

コピー元の範囲と貼り付け先のセル番地だけの問題だと思います。

Sub Sample4()
Dim k As Long, lastRow As Long, wS As Worksheet, wS2 As Worksheet
Application.DisplayAlerts = False
If Worksheets.Count > 1 Then
For k = Worksheets.Count To 2 Step -1
Worksheets(k).Delete
Next k
End If
With Worksheets(1)
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A:A").Insert
With Range(.Cells(2, "A"), .Cells(lastRow, "A"))
.Formula = "=M2&T2"
.Value = .Value
End With
Worksheets.Add after:=Worksheets(1)
Set wS2 = Worksheets(Worksheets.Count)
Range(.Cells(1, "A"), .Cells(lastRow, "A")).AdvancedFilter Action:=xlFilterInPlace, unique:=True
.Range("A:A").Copy wS2.Range("A1")
.ShowAllData
For k = 2 To wS2.Cells(Rows.Count, "A").End(xlUp).Row
.Range("A:A").AutoFilter field:=1, Criteria1:=wS2.Cells(k, "A")
Worksheets.Add after:=Worksheets(Worksheets.Count)
Set wS = Worksheets(Worksheets.Count)
'↓★ココから変更
.Cells(1, "B").Resize(lastRow).SpecialCells(xlCellTypeVisible).Copy wS.Range("A1")
.Cells(1, "J").Resize(lastRow).SpecialCells(xlCellTypeVisible).Copy wS.Range("B1")
.Cells(1, "M").Resize(lastRow).SpecialCells(xlCellTypeVisible).Copy wS.Range("C1")
.Cells(1, "T").Resize(lastRow).SpecialCells(xlCellTypeVisible).Copy wS.Range("D1")
.Cells(1, "W").Resize(lastRow).SpecialCells(xlCellTypeVisible).Copy wS.Range("E1")
'↑★ココまで
wS.Name = wS2.Cells(k, "A")
wS.Columns.AutoFit
Next k
.AutoFilterMode = False
.Range("A:A").Delete
wS2.Delete
End With
Application.DisplayAlerts = True
End Sub

これで何とかご希望通りになるでしょうか?m(_ _)m

ぎゃっはっはぁ~~!
なかなか解決しませんね。

>イメージとしてシート2以降の表示は、
>元データA列→新シートA列(1行目のタイトルも表示)
>元データI列→新シートB列(〃)
>元データL列→新シートC列(〃)
>元データS列→新シートD列(〃)
>元データV列→新シートE列(〃)

結局元データSheetのA・I・L・S・V列のデータだけを
新規SheetのA~E列に項目行も含めて表示させればよい訳ですよね?

コピー元の範囲と貼り付け先のセル番地だけの問題だと思います。

Sub Sample4()
Dim k As Long, lastRow ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報