- ベストアンサー
ワードでエクセルデータを参照
エクセルで表を作成しています A:風袋 B:実重量 C:総重量 C=A+B のCの所が、縦倍角で表示させてありまして Cの所をワードで作成しエクセルシートに貼り付けました。 (わざわざ面倒な事をしていますが) 現在、Cを編集する時、ダブルクリックでワードを起動し 書き換えています。 これを、ワードを起動した時に計算結果Cが表示されるように するにはどうすればよいのでしょうか? コマンドボタンでUserFormを表示させOKボタンで編集する事を 考えましたが私のVBAの知識では エクセルのAとBをワードのUserFormに表示する事が出来ません なにか良い方法をお教え下さい。
- acecon
- お礼率20% (2/10)
- オフィス系ソフト
- 回答数6
- ありがとう数1
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 私の書いた#4のコードは、Excelのブックを開く必要がありません。直接、取得する方法です。 どういう方法にするのかは、お決めください。こちらとしては、ADOで取得する方法でなくてもよいのですが、違う場合はコードは違ってきます。 >Private Sub CommandButton1_Click() これについては、私の回答ではありませんので、直接の回答は省かせていただきますが、「実行時エラー」なら、 = Val(TextBox1.Value) + Val(TextBox2.Value) とすれば、型の違いのエラーはなくなります。
その他の回答 (5)
- hallo-2007
- ベストアンサー率41% (888/2115)
すみませんでした、総重量なので >ActiveDocument.Tables(1).Cell(2, 3).Range.Text = TextBox1.Value * TextBox2.Value は ActiveDocument.Tables(1).Cell(2, 3).Range.Text = TextBox1.Value + TextBox2.Value ですね(足し算) >書き込むと 実行時エラー 型が一致しません。 テキストボックスが全角数値 あるいは半角でも文字が含まれていればエラーかと思います。 ただ私もいちいちユーザーフォームを開かずとも、マクロでシートの値をWordの表へ代入すればと思います。 足し算の計算もエクセル上で行っておくという方法もあります。
補足
ありがとうございます。 ActiveDocument.Tables(1).Cell(2, 3).Range.Text = TextBox1.Value + TextBox2.Value 上記を実行しますと文字列の足し算になりTextBox1=12 TextBox2=34とすると Cell(2, 3)に1234と入ってしまいます。 そうですね、私の質問が悪く、現在は エクセルtest1.xlsmのA1:風袋 B1:実重量 C1付近に:総重量(縦倍角)をワードオブジェクトで作成 このオブジェクトをダブルクリックするとワードが起動し編集可能になり、風袋+実重量の結果を キーボード入力し確定しています。この部分をマクロで自動入力したいのです。 エクセルで作ってしまったのでこうなってしまいましたが 改訂版としてワードの差し込み印刷でする事を検討中です。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 全体のレイアウトが見えてこないけれども、Word では、特別なことがない限りは、めったにUserFormを立ち上げることはありません。 Excelとリンクさせるなら、差し込み文書(OLE)でExcelのブックとつなげばよいのではありませんか? C = A + B 例 差し込み印刷の[宛先の選択] --[差し込みフィールドの挿入] {MERGEFIELD "風袋"} {MERGEFIELD "実重量"} {= A1 + B1 } で、Cは、単なる計算ですから、表の中で計算させればよいと思います。 ただし、これは一行のみです。 複数行のデータなら、ADO や DAO で、Excelファイルを呼び出して、それをTable(表の挿入) にするなり、TextBox(フィールドの挿入) にして表示させればよいと思います。 以下も計算自体は、計算式{= A1 + B1 }にさせます。 ADOで、Excelファイルを呼び出し、Wordのテーブルに自動的に出すマクロ '標準モジュール Sub Auto_Open() Dim cnADO As Object Dim rsADO As Object Dim i As Long Dim mySource As String Dim strQuery As String Set cnADO = CreateObject("ADODB.Connection") mySource = ""C:\Documents and Settings\[UserName]\My Documents\test1.xls" 'Excelファイル With cnADO .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & mySource & ";" & _ "Extended Properties=Excel 8.0;" .Open End With strQuery = "SELECT * FROM [Sheet1$]" Set rsADO = CreateObject("ADODB.Recordset") rsADO.Open strQuery, cnADO, adOpenKeyset, adLockOptimistic rsADO.MoveFirst Do Until rsADO.EOF = True For i = 1 To 4 '行数分 With ThisDocument.Tables(1) .Cell(i, 1).Range.Text = rsADO.Fields("風袋") .Cell(i, 2).Range.Text = rsADO.Fields("実重量") .Cell(i, 3).Range.Fields.Update '計算式をアップデート End With rsADO.MoveNext Next i Exit Do 'Wordの表とExcelの表の行数が違っている場合を考慮する Loop Set rsADO = Nothing Set cnADO = Nothing End Sub なお、プロシージャ名を、自動起動はやめるなら、Auto_Openではなく、CommandButton の中に入れてもよいです。 また、Excel側は、タイトル行(シートの1行目)が、 [風袋] [実重量] と書かれてあり、シート名は、[Sheet1] となっていることが条件です。
お礼
この回答への補足 間違えました 補足欄訂正の仕方わからず お礼欄を使わせていただきました。 確かに 最初にエクセルで作成してしまい、総重量Cはポイントを 変えて作りましたが、訳あって縦倍角にする事になり こうなってしまいましたが おっしゃる様にワードの差し込み印刷を使えば良いのではと気づきました。 (いままでワードは不勉強でエクセルの文書作成機能で満足していました)
補足
ありがとうございます ワードのUserForm1のVBコードに Private Sub CommandButton1_Click() ActiveDocument.Tables(1).Cell(2, 1).Range.Text = TextBox1.Value ActiveDocument.Tables(1).Cell(2, 2).Range.Text = TextBox2.Value ActiveDocument.Tables(1).Cell(2, 3).Range.Text = TextBox1.Value * TextBox2.Value End Sub を書き込むと 実行時エラー 型が一致しません。 が出て止まってしまいます。 ActiveDocument.Tables(1).Cell(2, 3).Range.Text = TextBox1.Value * TextBox2.Valueの部分が黄色に この時エクセルBook1は開いて置くのですよね Tables(1)はエクセルでいうとSheet(1)でCell(2, 3)はエクセルのRange("A2:C2")をコピーした 内のC:総重量でよいのですよね? よろしくお願い致します。
- hallo-2007
- ベストアンサー率41% (888/2115)
>ワードに置いたCommandButton1をクリックすると >なにも変化がありません >エクセルのマクロには少し経験がありますが、 >ワードは初めてでして、どこかに >UserForm1.Showは必要ないのでしょうか? 最初にコマンドボタンでUserFromを表示させます。 Private Sub CommandButton1_Click() UserForm1.Show End Sub は必要です。 Private Sub UserForm_Initialize() ~ End Sub は、UserForm上のコードです。InitializeはUserFromを開いたときに実行されます。 UserFromにはTextBox1とTextBox2が配置されていると思いますが?
補足
補足をつける所を間違えました 大変失礼いたしました。 ありがとうございます ワードのUserForm1のVBコードに Private Sub CommandButton1_Click() ActiveDocument.Tables(1).Cell(2, 1).Range.Text = TextBox1.Value ActiveDocument.Tables(1).Cell(2, 2).Range.Text = TextBox2.Value ActiveDocument.Tables(1).Cell(2, 3).Range.Text = TextBox1.Value * TextBox2.Value End Sub を書き込むと 実行時エラー 型が一致しません。 が出て止まってしまいます。 ActiveDocument.Tables(1).Cell(2, 3).Range.Text = TextBox1.Value * TextBox2.Valueの部分が黄色に この時エクセルBook1は開いて置くのですよね Tables(1)はエクセルでいうとSheet(1)でCell(2, 3)はエクセルのRange("A2:C2")をコピーした 内のC:総重量でよいのですよね? よろしくお願い致します。
- hallo-2007
- ベストアンサー率41% (888/2115)
エクセルのAとBをワードのUserFormに表示する事が出来ません A、BがBook1というファイルの一番上のシートの 2行目のA列、B列として Word上のUserFormのInitializeに Private Sub UserForm_Initialize() Dim xlApp As Object Dim xlBook As Object Set xlApp = GetObject(, "Excel.Application") Set xlBook = xlApp.Workbooks("Book1") TextBox1.Value = xlBook.Sheets(1).Cells(2, 1).Value TextBox2.Value = xlBook.Sheets(1).Cells(2, 2).Value Set xlApp = Nothing Set xlBook = Nothing End Sub の様なコードは参考になりますでしょうか。 Private Sub CommandButton1_Click() ActiveDocument.Tables(1).Cell(2, 1).Range.Text = TextBox1.Value ActiveDocument.Tables(1).Cell(2, 2).Range.Text = TextBox2.Value ActiveDocument.Tables(1).Cell(2, 3).Range.Text = TextBox2.Value * TextBox2.Value End Sub でWordの表へです。
補足
早々のアドバイス ありがとうございます。 早速、コピペさせて頂き、 ワードに置いたCommandButton1をクリックすると なにも変化がありません エクセルのマクロには少し経験がありますが、 ワードは初めてでして、どこかに UserForm1.Showは必要ないのでしょうか?
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
代案と言うか・・・ 1. 適当なセルに解を表示させる 2. コピー 3. [Shift]押しつつ 編集メニュー 4. 図のリンク貼り付け 5. 図の書式設定で高さのサイズのみ200% 6. 目的の位置に配置 参考まで
補足
早速の回答ありがとうございます。 現在、お答頂いたようにして編集しておりますが 一連の作業をワ-ドを開いた時に マクロで実行させたいと思い質問させて頂きました。
関連するQ&A
- 画像データを エクセル・ワード で
エクセルやワードで作成した書類をスキャンしてエクセルやワードで編集する事は出来ないものでしょうか? 出来るのであればその方法を教えてください。(素人ですので分かりやすくお願いします)
- ベストアンサー
- その他([技術者向] コンピューター)
- wordの文章内に、excelのデータを取り込む
ワードで作成した文章に、エクセルのデータを取り込みたいのですが やり方がわかりません。 そもそも出来るのかもわかりませんが、詳しい方いらっしゃいましたら教えてください。 環境は、ワード、エクセルともに2007を使用しています。 ワードで作成する文章は、新規会員になられた方に IDナンバーをお知らせするという内容です。 日にちや内容ともに全て共通で 文書内のお客様のお名前とIDナンバーのみが それぞれ変わるという内容です。 エクセルBook1のシート1のA列にIDナンバーを入力し B列にお客様の名前を入力しています。 例えばA2に入力されているIDナンバーは B2に入力されている方のIDナンバーになります。 ワードに指定したエクセルのデータを読み込ませ 「A2、B2」と表示させたいです。 エクセルなら数式がありますが ワードでも可能でしょうか? また実際は、IDと名前が100件以上あるので 自動で読み込ませて、印刷するまでいきたいのですが…。 イメージとしては ラベル印刷の要領でエクセルを読み込み 印刷をしたいです。 イマイチわかりにくい説明になりましたが わかる方、手順を教えてください。 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- エクセル ブックの参照について
ブックの参照について質問です。 a、b、cというエクセルファイルがあったとし、 それぞれA1のセルには1、2、3と値が入力されています。 新規にbook1を作成し、A1のセルにファイル名"a"又は"b"又は"c"を入力すると、A2へ"1"又は"2"又は"3"が表示される、というように参照することは可能なのでしょうか。 皆様のお力をお貸しください。 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- EXCEL 複数分岐 参照
初心者ながらエクセルで、単価確認計算の一覧表を作成してます。 商品が10種類ほどあり、重量もそれぞれが異なっている時の単価を出したいのです。 今までは、各商品ごとのシートを作成し、その商品ごとに入力してVLOOKUPを使っていました。 複数のシートにそれぞれ入力してしまうと、チェックがかけにくくなるので 理想としては一枚のシートで確認したいのです。 シート1を入力用のものにして、シート2に商品とその商品ごとの各重量単価を入力しています。 シート1の商品と重量を入力したときに、シート2を参照してシート1の単価のセルに返したいのですが上手くできません。 宜しくお願い致します。 シート1 商品 重量 単価 1 A 10 2 B 18 3 B 29 ↑ ↑ ↑ シート2 重量 商品 2~8kg 8~15kg 15~20kg 20~25kg 1 A 1400 1200 1100 980 2 B 1380 1300 1200 1150 3 C 1000 1000 950 900 4 D 1240 1210 1100 1040
- ベストアンサー
- オフィス系ソフト
- エクセルのデータをワードでリンクし、自動印刷をかけたい
エクセルで電話一覧を作成し、 sheet1に、 A B C D NO 氏名 電話 FAX sheet2に フォームを作成し、VLOOKUPでC1に1~50まで 順次入力すると、氏名・番号・FAXが反映してあります。 このフォームをWordにリンクして、 そのWordを自動印刷したい
- 締切済み
- その他([技術者向] コンピューター)
- Wordファイルから別Wordファイルのマクロを起動したい
Word2003でマクロを作成しました。 WordファイルAにはマクロを保存したくないので、 WordファイルBに保存しています。 このマクロをWordファイルAから起動したいのですができません。 WordファイルAを開き「マクロの実行」ダイアログボックスから WordファイルB内のマクロを選択して 「実行」ボタンを押して実行したいのですが、 一覧にマクロ名が表示されないのです。 Excelの場合は、ExcelファイルAからExcelファイルBのマクロを 呼び出すことができるのですが、 (例えばブック名!モジュール名.マクロ名) Wordではできないのでしょうか? 何か設定が必要でしょうか? ご存知の方がいらっしゃいましたら、 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセル UserForm 呼び出しでフリーズしてしまいます
エクセルでタイムカード?退勤時間管理表を作成しています。 UserFormの使用は初めてです・・・ UserForm1が「出勤」「退勤」「休憩入り・戻り」などをボタンで作って入力させるのはうまくいきました。 ところが、UserForm2に、各従業員のタイムカード(出勤退勤休憩を記録しているシート部分)を表示したくなったのでUserForm2に、ListBox1を貼り付けてマクロでRowSourceを書き換えて表示させたかったのですが・・・ 作成中はうまく表示しているのですが、実際にUserForm2.Showとやって呼び出すとUserForm2は表示されるのですが、エクセルすべてが全く反応なくなってしまいます。UserForm2も閉じれません。 ListBox1でいじったプロパティは、RowSourceとColumnCountのみです。 RowSourceは、'名 前'!A1:H32 ColumnCountは、8 UserForm2には、ListBox1しかありません。 UserForm1にも、ListBoxはあるのですが全く問題なしです。(1行のみのものですが) 時計のリアルタイム表示マクロやUserFormに最小化ボタンを付けるマクロを付けていたのでそれが原因かとも思い削除してみたのですが、UserForm2を表示するとフリーズしてしまいます。 何が原因のでしょうか? 教えてください。よろしくお願いします。 エクセルは、2007です。
- ベストアンサー
- その他MS Office製品
- ExcelからWordへのコピーについて
Excelに縦一列に並んでいる品番リストをワードにカンマをいれながら横に並べる効率の良いコピー&ペーストの方法はありますか?イメージとしては以下のような感じです: Excelの表としては、 A001 B001 C001 D001 A002 B002 C002 D002 となっているものを、 A001, B001, C001, D001, A002, B002, C002, D002, というようにワードにコピーしたいのですが数千品番もあるので効率の良い番号が知りたいです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- IE画面からエクセル、ワードを起動させるには?
ある作業のマニュアルのような物を作っています。 CD-ROMを挿入すると自動的に起動して、IEの画面が表示され、その中のボタンをクリックすると、エクセルやワードで作ったファイルが入っているフォルダの中身が表示され、エクセルファイルなどをクリックすると、そのままエクセルが起動して作業に入れるようにしたいのですが、どのようにしたらよいのでしょうか? ちなみに、ボタンに<A href="*****.xls">*****</A>と記述すると、IEの中にエクセル画面が表示されてしまったのですが、そうではなくエクセルそのものが開くようにしたいと思っています。 どうぞよろしくお願いします。
- ベストアンサー
- HTML
- エクセルの操作説明書を作りたい
ワードを使ってエクセルの操作説明をしたいのですが、エクセルで作成した表をワードに貼り付ける方法を教えてください。セルを示すA,B,C・・・や1,2,3・・・なども併せて一緒に表示する方法です。エクセルの参考書などによく見かけるものです。うまく説明ができてないかも知れませんがよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
補足
アドバイス頂きありがとうございます。 #4のコードをコピペさせて頂き実行しましたが 変わりませんでした。 現環境:OS Vista HomeEdtion Office2007 で 使用環境:OS XP HomeEdtion Office2000 の予定です。 フォルダー C:\Testを作成し C:\Test\test1.xlsm とC:\Test\文書1.docmを作りました test1.xlsmのA1:風袋 B1:実重量 C1:総重量 に書き込んであります。 (OSの違いでC:\My DocumentsやC:\Documents and Settings\My Documents VISTAのC:\Documents and Settings\[UserName]\My Documents等色々なので C:\Testとしましたが間違っていますでしょうか?) Wordの参照設定はOffice2007の初期インストール時のままです。 ちなみに VisualBasic ForApprications MicrosoftWord12.0 ObjectLibrary OLEAutomation MicrosoftOffice12.0 ObjectLibrary の4Fileです Microsoft.Jet.OLEDB.4.0に近い Microsoft Jet and Replication Objects2.6 Libraryにチェックいれましたが 変化ありませんでした。 ワードは不案内なのですが文書1.docmには何か書き込んで置くのでしょうか? やりたい事は ワードを開いた時にエクセルにあるA1:風袋 B1:実重量 C1:総重量を ワードに表示させ、C1の総重量を縦倍角で表示出来ればよいのですが 質問と変わるかも知れませんがワードで印刷するかエクセルで印刷するかの違いで 目的は一緒です。