A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
> (INDIRECT関数はそのファイルを開いていないとエラー表示になります)、
結果が確定したらファイルを閉じる前にコピーして同じ場所に値貼り付けしたらいいだけの話ですよね。言わずもがなの話だと思いましたが…。
私が同じことをするならINDIRECTは使わずに迷わすマクロにしますが。とりあえず他の方法の一つということで。
マクロなら単純に図2の最終行に図1のデータを追加していけばいいだけだと思いますが。セルの位置関係が違いそうなので単純なコピペだと無理そうだから、必要なセルの部分だけ、図2に代入すればいいだけの話で、印刷なんてマクロの記録で記録したものを流用すればいいだけの話ですし、しいていえば同じ見積もり番号のものがあればどうするか、印刷はするけど一覧には載せない、もしくは上書きするとか、の問い合わせする機能が必要なくらいだと思いますが。図2に見積り番号持たせてFindで探せば面倒じゃないでしょう。
とりあえず、そんなの面倒な問題でもありませんから質問者さんは頑張ってください。
No.5
- 回答日時:
inputForm.xlsmのSheet1が入力フォームとします。
同ブックのSheet2の3行目に数式を入れて、転記したいデータが一行に並ぶようにします。その範囲(ここではA3:E3)にtenkiという名前をつけます。Sheet2のA1にはデータ転記先のブックのパスを入れておきます。ここではdatabase.xlsxとします。database.xlsxのSheet1の一行目に列見出しを入れておきます。(F1~F5が見出しのつもりです)今回はあまり関係無いですが、今後役に立つでしょう。
データ入力後、testを実行すると、database.xlsxにデータが転記されます。database.xlsxは開いておく必要はありません。(開いていても転記される様です)
ADOでのワークブックへの追記がやってみたかっただけの、興味本位のコードです。ご参考まで。
Sub test()
Dim blResult As Boolean
With ThisWorkbook.Sheets("Sheet2")
blResult = addRecord(.Cells(1).Value, "Sheet1", .Range("tenki"))
End With
End Sub
Function addRecord(wbkpath As String, destSheetName As String, newDataRange As Range) As Boolean
Dim cn As Object, rs As Object
Dim mySQL As String
Dim i As Long, j As Long
Const adOpenStatic = 3
Const adLockOptimistic = 3
On Error GoTo errHandle
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
With cn
.Provider = "Microsoft.ace.OLEDB.12.0"
.ConnectionString = "Data Source=" & wbkpath & ";" & _
"Extended Properties='Excel 12.0; HDR=Yes'"
.Open
End With
mySQL = "select * from [" & destSheetName & "$]"
rs.Open mySQL, cn, adOpenStatic, adLockOptimistic
With rs
For i = 1 To newDataRange.Rows.Count
.addnew
For j = 1 To newDataRange.Columns.Count
.Fields(j - 1).Value = newDataRange.Cells(i, j).Value
Next j
.Update
Next i
End With
errHandle:
If Err.Number = 0 Then
addRecord = True
Else
Debug.Print Err.Number & Err.Description
End If
If Not rs Is Nothing Then
If rs.State = 1 Then rs.Close
Set rs = Nothing
End If
If Not cn Is Nothing Then
If rs.State = 1 Then rs.Close
Set cn = Nothing
End If
End Function
No.4
- 回答日時:
>発注用テンプレは毎回同じですばやく印刷ができれば良いです。
現状が毎回図1のテンプレを開いては入力→名前を付けて保存→図2に手入力しています。そうではなく発注書を作成した時点で、自動で何日に何が何個出荷されました。のような、流れを取りたいです。このパターンなら以下のページを参考にして、テンプレートデータから必要な項目をデータベースシートに追加するマクロコードを作成すればよいと思います。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/p …
紹介したURLのコードは最下行の1つ下のセルにセル範囲をコピーするコードになっていますが、特定のセルのコピーにして、テンプレートシートのそれぞれのデータを貼り付けるようなコードにすれば対応できると思います。
そのままのコードを使いたいなら、どこかのセルに転記したいセルを、1行のデータになるようにリンク貼り付けして(同じシートに作成するなら、このリンクセルの行は非表示にしておけばよい)、このセルを値貼り付けでデータベースシートに転記するようにすることもできます。
もちろん、データベースシートに転記前あるいは転記後に、テンプレートファイルを印刷するコードを挿入し、最後にテンプレートファイルのデータを削除する操作で終わるコードにしてください。
なお、このようなデータ追加操作は関数では対応できませんので(INDIRECT関数はそのファイルを開いていないとエラー表示になります)、マクロを利用することになります。
No.3
- 回答日時:
補足です
="[Book" & ROW(A1001) &".xlsx]Sheet1!A1"
この式の ROW(A1001)の数値部分は、ファイルの最小値の番号部分に合わせおくと、あとは下にコピーするだけで
たとえば、式の中のBookの部分だけ取り上げて記載すると
Book1001.xlsx
Book1002xlsx
Book1003xlsx
のように勝手に変化していきますので、セルの指定は変更しなくても大丈夫です。
マクロの場合、
Workbooks.Open Filename:="転記先ファイル名"
Workbooks("転記先ファイル名").Worksheets("Sheet1"). Range("A" & Range("A" & Rows.Count).End(xlUp).Row+1 ).Value = Range("A1").Value
見たいなものを、2行目以降必要な分列挙するくらいしか、助言できません。
No.2
- 回答日時:
図1の単票のデータを図2の一覧データ(一枚の単票のデータが横方向に並んでいる)に転記したいという事だと考え
単票データのアイル名が
Book1001.xlsx
Book1002xlsx
Book1003xlsx
のよう連続しているものと仮定して
Book1001.xlsxを開いて必要なデータを入力します。
以下のセルの指定は適当ですので実際のデータを反映したいセル番号に変更してください。
まず、一覧データのファイル(仮にBookXとします)のSheet2のA1に
="[Book" & ROW(A1001) &".xlsx]Sheet1!A1"
と記入します。セルには[Book1001.xlsx]Sheet1!A1と表示されます。
BookXのShhet1のA1に
=IFERROR(INDIRECT(Shhet2!A1),"")
と記入します。エラー処理はご自身のエクセルのバージョンに合わせて適宜変更してください。
そうすると、Book1001.xlsxのデータが表示されます。
うまくいったら、BookXのSheet2のA1の式を必要なだけ下と右にコピー(セルの指定は適宜調整してください)し、Sheet1の式もも同じようにコピーします。
これでファイル名が連続している場合に限りますが、式は都度変更しなくても随時データが反映されていきます。
No.1
- 回答日時:
>=[1]sheet1!A1
上記で、転記も考えたのですが、発注書のファイルを毎回見積番号で管理している為いちいちファイル名を手動で変えなければならない手間があり、他に良い方法があれば教えて頂きたいです。
質問内容が把握できないのですが、上記の操作でファイル名を自動的に書き換えれば、うまくいくということでしょうか?
全体的なイメージからすると、発注書に記載されているデータを順次データベースに追加したいように思うのですが、もしこのケースなら、たとえば「データ追跡機能付きテンプレートウィザード」を利用するのが簡単です。
これをマクロで実行するなら、テンプレートの発注書ファイルにマクロを仕込んでおき、マクロでデータベースファイルを立ち上げ、データベースシートの最下行の下の行にデータを追加するような仕様にします。
私なら、発注書シートとデータベースを同じブックにまとめ、発注用シートは印刷用だけに使用し(残しておく必要はないのでは)、それらのデータをマクロでデータベースシートの最下行に追加していくマクロコードを書く方法で対処すると思います(ファイルを立ち上げる操作がないので、素早くマクロ処理できるので勧めです)。
この回答への補足
ご回答ありがとうございます!こちらから質問させてください。発注書・データベースを同ブックについて詳しくお聞かせ願えませんか?発注用テンプレは毎回同じですばやく印刷ができれば良いです。現状が毎回図1のテンプレを開いては入力→名前を付けて保存→図2に手入力しています。そうではなく発注書を作成した時点で、自動で何日に何が何個出荷されました。のような、流れを取りたいです。ユーザーフォーム作成になりますか?
補足日時:2014/08/11 17:55お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) evcel VBAについて 2 2022/08/02 21:37
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
Excelで連続印刷をするマクロ
-
「マクロ」の足し算の式を教え...
-
条件に応じて特定の行を非表示...
-
wordのvbaでハイパーリンク設定...
-
Excel にて非表示行を探すワー...
-
値貼り付けをしても書式も貼り...
-
エクセル 列データは買えずに...
-
Excel(VBA)データ入力に応じて...
-
エクセルで全ての数字間にカン...
-
エクセル 文字列を分割するマ...
-
度々エクセルマクロで質問です
-
Excel2007 セルを右方向に削除...
-
〈VBA〉 CSVデータの指定列を読...
-
区切り文字以降を16進数を10進...
-
Excelでセル内の数式は残し値だ...
-
テキスト(日本語)文字列を逆転...
-
エクセルで行と列を入れ替えキ...
-
エクセル関数
-
合計等の計算を最終行に組み込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excelでセル内の数式は残し値だ...
-
Excel2007で、太字にした行のみ...
-
Excelで連続印刷をするマクロ
-
「マクロ」の足し算の式を教え...
-
エクセル VBA 小数点を含む数字...
-
エクセルで全ての数字間にカン...
-
Excel(VBA)データ入力に応じて...
-
Excel にて非表示行を探すワー...
-
値貼り付けをしても書式も貼り...
-
エクセルで、行ごとの並び替え...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
-
VBA コピーを有効行までループ...
-
並べ替えのマクロで対象行の範...
-
Excelで周期的に列を削除する方法
-
100行のセルの高さを一括で調整...
-
yyyy/mm/ddの日付に一括変換す...
-
エクセルで連番をマクロで
-
エクセル2003でマクロをおこな...
おすすめ情報