1s 8.3 から Excel ファイルを開く方法。 1C と Excel のどちらが優れていますか? 起こり得るエラーについて一言
この方法は簡単です。 その本質は、オブジェクトが 表形式のドキュメントメソッドがあります:
- 書き留める (< ИмяФайла>, < ТипФайлаТаблицы >) データをファイルにアップロードします。
- 読む (< ИмяФайла>, < СпособЧтенияЗначений >) ファイルからデータをロードします。
注意!
Write() メソッドはクライアントとサーバーの両方で使用できます。 Read() メソッドはサーバー側でのみ使用できます。 これを覚えておく必要があります
クライアントとサーバーの対話を計画するとき。
スプレッドシート文書をファイルに保存する例を見てみましょう。 何らかの方法で TabularDocument オブジェクトを作成して入力する必要があります。 荷降ろしファイルへの書き込みは 1 行で完了します。
タブドキュメント 。 Write(FilePath, TabularDocumentFileType.XLSX);
ここ タブドキュメント- 生成されたスプレッドシートドキュメント、 ファイルへのパス— アップロードするファイルの名前、 TabularDocumentFileType.XLSX— 作成されたファイルの形式。 次の Excel 形式がサポートされています。
- XLS95 - Excel 95 形式。
- XLS97 - Excel 97 形式。
- XLSX は Excel 2007 形式です。
TabDoc = 新しい表形式ドキュメント;
タブドキュメント 。 Read(PathToFile, ReadingTabularDocumentValues.Value のメソッド);
ここ ファイルへのパス— ダウンロードされた Excel ファイルへのパス。 表形式ドキュメントの値を読み取る方法.Valueソースドキュメントから読み取られたデータがどのように解釈されるべきかを決定します。 利用可能なオプション:
- 意味;
- 文章。
OLE経由で交換
OLE 自動化テクノロジを使用した Exchange は、おそらく Excel ファイルをプログラムで操作するための最も一般的なオプションです。 Excel が提供するすべての機能を使用できますが、他の方法と比較すると速度が遅くなります。 OLE 経由で交換するには、MS Excel のインストールが必要です。
- 交換がクライアント側で行われる場合、エンド ユーザーのコンピュータ上。
- 1C:Enterprise サーバー コンピューター上で、交換がサーバー側で発生する場合。
例 荷降ろし:
// COM オブジェクトを作成します
Excel = New COMObject("Excel.Application");
// 警告と質問を無効にする
エクセル 。 DisplayAlerts = False;
// 新しいブックを作成する
本 =エクセル。 ワークブック。 追加();
// 最初のシートの位置
シート =本。 ワークシート(1);// セルに値を書き込みます
シート 。 セル(行番号、列番号)。 値 = セル値;// ファイルを保存します
本 。 名前を付けて保存(ファイル名);
エクセル 。 やめる();
Excel = 0;
例 読む:
// - オプション1 -
// COM オブジェクトを作成します
Excel = New COMObject("Excel.Application");
// 本を開く
本 =エクセル。 ワークブック。 開ける( ファイルへのパス);
シート =本。 ワークシート(1);// 本を閉じる
本 。 閉じる(0);// Excel を閉じてメモリを解放します
エクセル 。 やめる();
Excel = 0;// —— オプション 2 ——
// 本を開く
本 = GetCOMObject( ファイルへのパス);
// 目的のシートに配置します
シート =本。 ワークシート(1);// セル値を読み取ります。通常、セル走査ループはここにあります
CellValue = シート。 セル(行番号、列番号)。 価値;// 本を閉じる
本 。 応用。 クイ t();
のために バイパス Excel ワークシートの完了したすべての行に対して、次の手法を使用できます。
// - オプション1 -
行数 = シート。 セル(1 , 1 )。 スペシャルセル(11)。 行;
RowNumber = 1 の場合、行数によるサイクル
CellValue = シート。 セル(行番号、列番号)。 価値;
エンドサイクル;// —— オプション 2 ——
行番号 = 0 ;
真実のサイクル中
行番号 = 行番号 + 1 ;
CellValue = シート。 セル(行番号、列番号)。 価値;
ValueFilled(CellValueでない場合)) それから
アボート;
endIf;
エンドサイクル;
シートのすべての行を順番に走査する代わりに、次のことができます。 すべてのデータを配列にダンプしますそして彼と一緒に働きましょう。 このアプローチは、大量のデータを読み取る場合に高速になります。
TotalColumns = シート。 セル(1 , 1 )。 スペシャルセル(11)。 カラム;
合計行数 = 葉。 セル(1 , 1 )。 スペシャルセル(11)。 行;地域 = 葉。 Range(Sheet.Cells(1, 1), Sheet.Cells(TotalRows,TotalColumns));
データ = 地域。 価値。 アンロード();
以下の表は、OLE 経由で Excel を操作するための最も一般的なプロパティとメソッドを示しています。
アクション | コード | コメント |
アプリケーションの操作 | ||
アプリケーションウィンドウの可視性の設定 | エクセル 。 見える= 偽; | |
警報出力モード(表示/非表示)の設定 | エクセル 。 アラートの表示= 偽; | |
アプリケーションを閉じる | エクセル 。 やめる(); | |
本を使った作業 | ||
新しい本の作成 | 本 =エクセル。 ワークブック。 追加(); | |
既存のワークブックを開く | 本 =エクセル。 ワークブック。 開く(ファイル名); | |
本を保存する | 本 。 名前を付けて保存(ファイル名); | |
本を閉じる | 本 。 閉じる(0); | |
シートの操作 | ||
現在のシートの設定 | シート =本。 ワークシート(シート番号)); | |
名前の設定 | シート 。 名前 = 名前; | |
保護の設定 | シート 。 守る(); | |
保護を解除する | シート 。 保護を解除する(); | |
ページの向きを設定する | シート 。 ページ設定。 方向 = 2; | 1 - 縦向き、2 - 横向き |
左枠の設定 | シート 。 ページ設定。 左マージン = Excel。 センチメートルからポイント(センチメートル)); | |
上限値の設定 | シート 。 ページ設定。 トップマージン = Excel。 センチメートルからポイント(センチメートル)); | |
右枠の設定 | シート 。 ページ設定。 RightMargin = Excel。 センチメートルからポイント(センチメートル)); | |
下限値の設定 | シート 。 ページ設定。 ボトムマージン = Excel。 センチメートルからポイント(センチメートル)); | |
行、列、セルの操作 | ||
列幅の設定 | シート 。 列(列番号)。 列幅 = 幅; | |
行を削除する | シート 。 行(行番号)。 消去(); | |
列の削除 | シート 。 列(列番号)。 消去(); | |
セルを削除する | シート 。 セル(行番号、列番号)。 消去(); | |
値の設定 | シート 。 セル(行番号、列番号)。 値 = 値; | |
セルの結合 | シート 。 Range(Sheet.Cells(RowNumber, ColumnNumber), Sheet.Cells(RowNumber1, ColumnNumber1))。 マージ(); | |
フォントの設定 | シート 。 セル(行番号、列番号)。 フォント。 名前 = フォント名; | |
フォントサイズの設定 | シート 。 セル(行番号、列番号)。 フォント。 サイズ = フォント サイズ; | |
太字フォントの設定 | シート 。 セル(行番号、列番号)。 フォント。 大胆な = 1 ; | 1 - 太字、0 - 通常 |
イタリック体の設定 | シート 。 セル(行番号、列番号)。 フォント。 イタリック = 1 ; | 1 - 斜体、0 - 通常 |
下線付きフォントの設定 | シート 。 セル(行番号、列番号)。 フォント。 下線 = 2 ; | 2 - 下線付き、1 - 下線なし |
どのプロパティを変更する必要があるか、またはどのメソッドを呼び出す必要があるかを確認するには、次を使用できます。 マクロエクセル。 必要なアクションを含むマクロを記録すると、記録されたマクロの VBA コードを確認できます。
COMSafeArray の使用
大量のデータを 1C から Excel にダウンロードする場合、オブジェクトを使用して高速化できます。 COMセーフアレイ。 構文アシスタントの定義によれば、COMSafeArray は多次元配列のオブジェクト ラッパーです。 セーフアレイ COMから。 COM オブジェクト間でデータを交換するために SafeArray を作成して使用できるようにします。 簡単に言うと、OLE テクノロジを使用してアプリケーション間で交換するために使用できる値の配列です。
// COMSafeArray を作成する
ArrayCom = New COMSafeArray("VT_Variant" , TotalColumns, TotalRows);
// COMSafeArray を埋める
のために ページ = 0 (TotalLines 別) - 1 サイクル
のために 数値 = 0 合計列数 - 1 サイクル
アレイコム 。 SetValue(カウント、ページ、値);
エンドサイクル;
エンドサイクル;
// Excel ワークシート領域を COMSafeArray の値に割り当てる
シート 。 Range(Sheet.Cells(1, 1), Sheet.Cells(TotalRows,TotalColumns))。 値 = ArrayCom;
ADO経由で交換
ADO 経由で交換される Excel ファイルは、SQL クエリを使用してアクセスできるデータベースです。 MS Excel のインストールは必要ありませんが、アクセスを実行するための ODBC ドライバーの存在が必要です。 使用される ODBC ドライバーは、ファイルへの接続文字列を指定することによって決定されます。 通常、必要なドライバーはコンピューターにすでにインストールされています。
ADO 経由の交換は OLE 経由の交換よりも著しく高速ですが、アップロードする際、セルのデザイン、ページのレイアウト、数式の設定などに Excel の機能を使用することはできません。
例 荷降ろし:
接続 = 新しい COMObject("ADODB.Connection");
コンパウンド 。 接続文字列 = "
|データソース= + ファイル名 + ";
;
コンパウンド 。 開ける(); // 接続を開きます// コマンドの COM オブジェクトを作成します
コマンド = 新しい COMObject("ADODB.Command");
チーム// テーブルを作成するためのコマンド テキストを割り当てます。
チーム 。 コマンドテキスト = 「CREATE TABLE [シート1] (列1 char(255)、列2 日付、列3 int、列4 float)」;
チーム 。 実行する(); // コマンドを実行します// コマンドテキストを割り当ててテーブル行を追加します
チーム 。 コマンドテキスト = 「INSERT INTO [Sheet1] (Column1, Column2, Column3, Column4) 値 ('abvwhere', '8/11/2017', '12345', '12345,6789')」;
Command.Execute(); // コマンドを実行します// コマンドを削除して接続を閉じます
コマンド = 未定義;
コンパウンド 。 近い();
接続 = 未定義;
新しいシートを作成してその構造を形成するには、オブジェクトを使用できます。 ADOX.カタログそして ADOX.テーブル。 この場合、コードは次のようになります。
// 本を操作するための COM オブジェクトを作成します
本 = 新しい COMObject("ADOX.Catalog");
本 。 ActiveConnection = 接続;// シート上のデータ構造を操作するための COM オブジェクトを作成します
テーブル = 新しい COMObject("ADOX.Table");
テーブル 。 名前 = "シート 1" ;
テーブル 。 コラム。 Append("列1", 202);
テーブル 。 コラム。 Append("列2", 7);
テーブル 。 コラム。 Append("列3", 5);
テーブル 。 コラム。 Append("列4", 5);// 記述された構造を持つシートをワークブックに作成します
本 。 テーブル。 追加(テーブル);
テーブル = 未定義;
本 = 未定義;
上記の例では、メソッド内で
テーブル 。 コラム。 追加(「コラム1」、202);
2 番目のパラメータは列のタイプを指定します。 パラメータはオプションです。列タイプの値をいくつか次に示します。
- 5 - adDouble;
- 6 - 広告通貨。
- 7 - adDate;
- 11 - adBoolean;
- 202 - adVarWChar;
- 203 - adLongVarWChar。
例 読む:
// 接続用の COM オブジェクトを作成します
接続 = 新しい COMObject("ADODB.Connection");// 接続文字列を設定します
コンパウンド 。 接続文字列 = "
|プロバイダー=Microsoft.ACE.OLEDB.12.0;
|データソース= + ファイル名 + ";
|拡張プロパティ=""Excel 12.0 XML;HDR=YES"";";
コンパウンド 。 開ける(); // 接続を開きます// 選択内容を受け取る COM オブジェクトを作成します
Select = New COMObject("ADODB.Recordset");
リクエストテキスト = 「SELECT * FROM [Sheet1$]」;// リクエストを実行します
サンプル 。 Open(クエリテキスト, 接続);// サンプル結果をバイパスします
まだ選択ではありません。 EOF() ループ
列 1 の値 = 選択。 田畑。 項目("列1")。 価値 ; // カラム名でアクセス
列 2 の値 = 選択。 田畑。 アイテム(0)。 価値; // カラムインデックスによるアクセス
サンプル 。 MoveNext();
エンドサイクル;サンプル 。 近い();
サンプル = 未定義;
コンパウンド 。 近い();
接続 = 未定義;
接続文字列内のパラメータ HDRシートの最初の行がどのように認識されるかを決定します。 考えられるオプション:
- YES - 最初の行は列名として扱われます。 値には名前と列インデックスによってアクセスできます。
- NO - 最初の行はデータとして扱われます。 値には列インデックスによってのみアクセスできます。
これらの例では、いくつかの ADO オブジェクトのみを取り上げています。 ADO オブジェクト モデルは次のオブジェクトで構成されます。
- 繋がり;
- 指示;
- レコードセット;
- 記録;
- 田畑;
- ストリーム;
- エラー;
- パラメーター;
- プロパティ。
プログラミングなしでアップロード
1C から Excel にデータを保存するには、プログラミングに頼ることが常に推奨されるわけではありません。 エンタープライズ モードでダウンロードに必要なデータを表示できる場合は、プログラミングなしでデータを Excel に保存できます。
スプレッドシート ドキュメント (レポートの結果など) を保存するには、次のコマンドを呼び出します。 保存または 名前を付けて保存…メインメニュー。
開いたウィンドウで、保存するファイルのディレクトリ、名前、形式を選択する必要があります。
動的リスト (アイテムのリストなど) からデータを保存するには、次のことを行う必要があります。
- コマンドを使用してデータをスプレッドシート ドキュメントに出力する もっと見る ⇒ 一覧...;
- スプレッドシートドキュメントを必要な形式で保存します。
潜在的なクライアントとコミュニケーションをとるときに、Office パッケージのテーブル機能で十分であり、1C プログラムの意味が分からないという話をよく聞きます。 これは、このソリューションを会計士向けのプログラムとしか関連付けていない人がまだいるためですが、それは真実ではありません。
Excel が普遍的な大量生産製品であることに異論はありません。 狭い専門家を対象とした 1C 開発とは異なり、このプログラムはほぼ誰でも使用できます。 「グリーン」テーブルを使用すると、必要な機能を自由に実装でき、便利です。これは、すべての相互決済、管理会計、さらには規制された会計、豊富なデータ視覚化、独立した機能を備えた組織の財務モデルです。さまざまなアドオンを使用してプログラムの機能を拡張します - すべてがあなたの手の中にあり、すべてが最初から可能です...
ビジネスを始めたばかりの場合は、クライアント、サプライヤー、規制当局との関係に関する表に必要なデータを徐々に考慮し、独自の任意の構造を構築するのは良いことですが、データベースが膨大になり、スタッフの数が増えた場合、次に何をすべきか数十で? まだ独自のパラメータに従ってカウントしますか? 私は、利便性と習慣を混同しないようにしたいと考えています。習慣は、ビジネスの体系化、ひいてはビジネスの最適化を妨げることがよくあります。
わかりやすくするために、たとえば貿易などの会計自動化に対してどのようなニーズが生じるかを想像してみましょう。
1. 一定期間内の売上の分析。
営業部門の責任者は、販売データを分析できます。 計画が実行されているかどうか、戦略がどれほど効果的であるかを理解し、効果がない場合にタイムリーに作業を調整できるようにすることが彼にとって重要です。
2. 倉庫会計。
販売においては、商品の在庫状況、予約可能な商品と在庫切れの商品、および注文が必要なものを把握することも重要であることを説明する必要がありますか? ここですべてが明らかだと思います。
3. 取引相手のデータベースを維持する。
たとえオーナーが、今ここで買えるものだけを販売しているとしても(B2C セクターでは典型的ですが)、その場合、オーナーはサプライヤー ベースとの関係が少し異なります(契約、主な関係など)。すべてがネットワークに接続されていると、どれほど便利になるか想像してみてください。サプライヤーは自動的に単一のデータベースに即時に表示されますか? 倉庫の責任者は、倉庫内の商品の可用性を即座に確認し、文書を担当する別の従業員が、契約関係に基づくすべての義務が履行されているかどうか、誰が誰にいくら借りているかなど、商品の可用性に関する情報を監視します。 また、不一致がある場合は、一定期間のデータを調整して、1 分以内に結果を生成できます。
4. 組織の利益。
支出と収入に関するすべてのデータがデータベースにすでに存在しているため、利益レポートの作成は難しくありません。 ただし、情報は少なくとも必要な日付までに適時に入力されることが条件となります。 ここでの基本的な要素は、ユーザーの個人的な責任です。
クライアントやサプライヤーの数がそれほど多くない場合は、テーブル内に独自の図を設計して記入し、その後、文書をコンピューター上のさまざまなフォルダー (契約書、サプライヤー、フォルダー) に配布する時間が十分にあるため、Excel が最適です。クライアント、近隣のクライアント、開発中のクライアント、削除されるクライアント – フォルダー内にフォルダーを作成する終わりのない魅力的なプロセス。 また、情報が多い場合、データベースを追跡すると便利でしょうか? もちろん例外は常にあり、売上高が大きく、財務データが Excel のみで管理されている組織が存在する場合もあります。 部門間でデータを交換し、結合するのにどのくらいの時間がかかりますか? 私は答えます:たくさんあります。
任意のシステムで整理された多数の Excel ドキュメントから必要なドキュメントをすばやく見つける方法は想像できません。 たとえば、税務署からの要求に書類を提出するときなどです。 情報がすべて分散している場合、会計士はどのようにして規制当局に報告書を提出するのでしょうか? もちろん、会計業務はアウトソーシングすることができ、残念ながら一部の経営者は、バランスをとっている限り、特定の専門家がどのようなプロセスを持っていても気にしないかもしれません。 しかし、たとえそうだとしても、文書交換のプロセスはどのように組織されるのでしょうか? 社外従業員は即席の情報構造をどれくらい早く理解できるでしょうか?
1C については同じことは言えません。そこにある情報はすべて構造化され、相互に接続されているからです。
- リモート従業員とフルタイム従業員の両方が使用できる単一のデータベース。すべての標準化されたドキュメントとカスタム ドキュメントを操作できます。
規制当局へのレポートは、プログラムにすでに反映されているデータに基づいて生成されるため、最終結果を得るために多くのファイルを開いたり、複数の値を 1 つのテーブルに結合したりする必要はありません。
Excelを擁護するために
おそらくあなたには、私が「グリーン」テーブルにデータを構築することに反対しているように思われたでしょう。 全くない。 実際、私自身も Excel でいくつかの業務を行うことがよくあります。任意の計算が必要な場合、クライアントごとにデータをセグメント化する必要がある場合、1C にないパラメーターに基づいて分析を実行する必要がある場合、はい、これは起こります - 私は「Excel」に行きます。 簡単に言えば、表で計算や非標準的な分析を行いますが、とにかくすべてを 1C で体系化します。
そして、1C のデータはスプレッドシートに保存されているため、1C からダウンロードしたファイルを表示するには Excel が必要になります。 これが悪循環だと思いませんか? 別の言い方をします。「1C」と「Excel」は 2 つのパートナーのように並んでいますが、それぞれに独自の目的があり、お互いをうまく補完しますが、互いに置き換えることはありません。
州の法制度を考慮し、ビジネスの詳細と焦点を考慮して、特に大量の情報に関して業務を体系化する必要がある場合は、1C が必要です。 任意の計算、ゼロからの戦略の構築、非標準の分析データの視覚化が必要な場合は、Excel が役に立ちます。 ただし、これらのソリューションを同時に使用する方がはるかに便利です。
最終的な結果は何ですか – 「1C」または「Excel」ですか?
一番最初に、自動化のための資金に関する質問であれば、基本的な 1C プログラムにはそれほどお金はかかりませんが、私は Excel を使用すると思います。 大きな利点は、「グリーン」テーブルのデータを損失することなく 1C にロードできることです。 ただし、規模を拡大するにつれて、ビジネス プロセスを自動化するプログラムに注意を払うことをお勧めします。 たくさんありますし、必ずしも1Cとは限らないかもしれません…。
「1C」への移行は、クライアントやサプライヤー、監督当局との関係に関連する問題の自動化など、リソースを最適化する必要があると理解した場合に実行できます。 一般に、情報の処理に時間がかかり、Excel ファイルが入力データの量に対応できなくなる場合は、作業プロセスを調整して業務効率を高めます。
ただし、すべての「1C」が自分に適しているわけではなく、ビジネスの詳細と範囲、規模、日常業務の必要性、最小限に抑える必要があるルーチンなど、さまざまな要素を考慮する必要があります。 すべては個性的です。 すでに述べたように、真実は「1C」と「Excel」の間のどこかにあり、相互に補完し合っています。
おそらくそれだけです。 ご質問がございましたら、お気軽にお問い合わせください。お手伝いさせていただきます。 成功したビジネスプロセス、同僚の皆さん!
Excel ファイルを 1C で開く方法、またはその逆の方法はさまざまです。 初心者ユーザーは、ドキュメントを別の形式で保存するか、特別なプログラムを使用して、より簡単な操作を好むでしょう。 しかし、少しの努力を費やして、ソフトウェア ツールを使用して、あるプログラムから別のプログラムにデータを表示および処理する方法を学ぶ価値はあります。 これらの基本的なプログラミング スキルは、将来、日常的なタスクを回避するのに役立ちます。
Excel ドキュメントを 1C で開く方法、またはその逆の方法
Microsoft Excel スプレッドシート エディタは、1C 会計ソフトウェア製品よりも機能的に優れています。 したがって、1C ユーザーはスプレッドシート エディタでいくつかの操作を実行してから、データを会計プログラムに返すことを好みます。 これまで多くの企業の会計処理はマイクロソフトのプログラムのみを使用して行われていたため、これは驚くべきことではありません。 しかし、現在の企業のビジネス プロセスの自動化レベルでは、特殊なプログラムを放棄することはできません。 異なるアプリケーション間の対話を確立するには、次の簡単な方法があります。
現在のコンピュータにインストールされていないソフトウェア製品のファイルを扱う必要がある場合、最も簡単な方法は、Excel テーブルを 1C フォーマットに、またはその逆に変換するための特別なアプリケーションを使用することです。 1C 製品 Web サイトで見つけることができます。
コンピュータに 1C と Excel の両方がインストールされている場合は、「ネイティブ」アプリケーションでファイルを手動で開き、別のプログラムの形式で保存できます。 通常、このオプションは印刷可能ファイルまたはレイアウトを保存するときに使用できます。
1C 7.7 のユーザーは、テーブル エディタが改良されたバージョン 1C 8 にアップグレードできます。
1C と Excel がプログラムでどのように対話できるか
1C と Excel 間の対話は、Microsoft が開発した OLE オートメーション テクノロジを使用してプログラム レベルで実行できます。 これにより、さまざまなプログラムのスクリプト インタープリタから COM オブジェクトに直接アクセスできるようになります。 簡単に言うと、OLE を使用すると、あるプログラムから別のプログラムに作業を転送し、その作業を元のアプリケーションに戻すことができます。 これはまさに会計士が Microsoft のスプレッドシート エディタに求めているものです。
OLE ツールを使用するのにプログラマーである必要はありません。 初めてコード行に触れるときはエラーが発生しますが、チェックすることでエラーを特定し、得られた経験は将来エラーを回避するのに役立ちます。 以下は、会計プログラムで Excel データを操作するための、またはその逆の最も一般的なコマンド (リストと呼ばれます) です。
1C で Excel ファイルをプログラム的に開く方法
したがって、両方のプログラムがコンピュータにインストールされており、それらの間でデータを交換したい場合は、プログラムによって対話を整理できます。 これを行うには、両方のアプリケーションを起動し、OLE を使用して 1C から Excel へのアクセスを確立する必要があります。
例外
Report(ErrorDescription() + "このコンピューターには Excel がインストールされていません!");
試みの終了。
テーブル エディターへのアクセスがインストールされます。アクセスするには次のコマンドを使用します。
ブック = Excel.WorkBooks.Open(ファイルパス)
Sheet = Book.WorkSheets(SheetNumber);
Sheet = Book.WorkSheets(SheetName);
値 = Sheet.Cells(RowNumber, ColumnNumber).Value;
特定の文書:
特定のシート番号を含む:
特定のシート名を含む:
ファイルの最初のページからデータを読み取るには、次のリストを使用します。
列 = 1 (TotalColumns サイクルによる) の場合
値 = Abbr(Sheet.Cells(Row,Column).Value);
エンドサイクル;
Excel = CreateObject("Excel.Application");
Book = Excel.WorkBooks.Open(FilePath);
シート = Book.WorkSheets(1);
TotalColumns = Sheet.Cells(1,1).SpecialCells(11).Column;
TotalRows = Sheet.Cells(1,1).SpecialCells(11).Row;
TotalRows ループによる For Row = 1
エンドサイクル;
ファイルへのパスは完全に指定する必要があることに注意してください。 文書名を保存する場合、\、/、:、*、?、"、>、などの文字を含めることはできません。< и |.
Excel を使用してプログラムで 1C ファイルを開く方法
Excel にデータを記録するには、次のことを行う必要があります。
Book = Excel.WorkBooks.Open(Path to File) - 1C から Excel ファイルを読み取る場合と同様に、
ワークブック = Excel.WorkBooks.Add();
Sheet = Book.Sheets.Add();
Sheet.Cells(RowNumber, ColumnNumber).Value = 値; (OLEを使用して値を書き込む方法はインターネット上に詳しく説明されています)。
または既存のドキュメントを開きます。
または新しいものを追加します。
新しいドキュメント内に新しいシートを作成できます。
新しい値をセルに追加します。
Book.SaveAs(ファイルパス);
例外
Report(ErrorDescription()+"ファイルは保存されません!");
試みの終了。
スプレッドシート エディタでの作業が終了したら、特別なコマンド (Excel.Application.Quit();) を使用して終了します。 この方法は、今後の作業中にコンピュータ リソースを節約するのに役立ちます。
1C と Excel の間でデータを交換する場合の危険性
1C と Excel は異なる会社によって開発され、使用するデータの処理方法も異なります。 したがって、テーブルをあるプログラムから別のプログラムに転送するときは、次の落とし穴に注意してください。
小数部のさまざまな区切り文字。 Microsoft では、10 進数をカンマで区切ります。 したがって、会計プログラムからテーブルを転送する場合、日付の多さやその他の混乱に驚かないでください。 ただ、会計プログラムでは分数を書く際にピリオドが使用されることがありますが、Microsoft スプレッドシート エディタではこれが日付区切り文字として解釈され、15.5 は 5 月 15 日になります。 スプレッドシート エディタで会計データを処理するには、区切り文字をカンマに置き換える必要があります。
Excel から 1C にデータを転送すると、会計プログラムにない Excel 定数が正しく表示されない場合があります。 これらを解読するには、スプレッドシート エディタのヘルプに移動するか、デバッグ モードに切り替えて、さまざまな定数の数値表現を確認する必要があります。
大量のデータを交換する必要がある場合、またはエラーを取り除くことができない場合は、Setby 社の専門家に問い合わせてください。 プログラム レベルで問題を解決し、作業に必要なコマンドを理解できるようお手伝いします。
1C アプリケーションは、会計士、プランナー、経済学者、マネージャーの間で長い間最も人気のあるプログラムです。 さまざまな種類のアクティビティに対応する多様な構成が用意されているだけでなく、世界数カ国の会計基準にローカライズされています。 このプログラムの会計に切り替える企業が増えています。 しかし、他の会計プログラムから 1C にデータを手動で転送する手順は、かなり長くて退屈な作業であり、多くの時間がかかります。 企業が Excel を使用して記録を保存していれば、転送プロセスを大幅に自動化し、高速化できます。
Excel から 1C へのデータの転送は、このプログラムを使用する最初の期間だけでなく必要になります。 活動の過程で、スプレッドシート ブックに保存されているリストを入力する必要がある場合、このようなものが必要になることがあります。 たとえば、オンライン ストアからの価格表や注文を転送する必要がある場合です。 リストが小さい場合は手動で入力できますが、リストに数百もの項目が含まれている場合はどうなるでしょうか? 手順を高速化するために、いくつかの追加オプションに頼ることができます。
ほぼすべての種類のドキュメントが自動ダウンロードに適しています。
- 命名規則のリスト。
- 取引相手のリスト。
- 価格リスト;
- 注文リスト;
- 購入や販売に関する情報など。
1C には Excel からデータを転送できる組み込みツールがないことにすぐに注意してください。 これらの目的のために、次の形式のファイルである外部ブートローダーを接続する必要があります。 epf.
データの準備
Excel テーブル自体にデータを準備する必要があります。
Excel ブックのデータを準備するためのこれらの汎用アクションに加えて、使用する特定のローダーの要件にドキュメントを準拠させる必要もありますが、これについてはもう少し下で説明します。
外部ブートローダーの接続
拡張機能を備えた外部ブートローダーを接続する epfアプリケーション 1C は、Excel ファイルを準備する前と後の両方で実行できます。 重要なことは、これらの準備問題が両方とも読み込みプロセスの開始前に解決されていることです。
1C には、さまざまな開発者によって作成された外部 Excel テーブル ローダーがいくつかあります。 情報処理ツールを使った例を考えていきます 「スプレッドシートドキュメントからのデータのロード」バージョン 1C 8.3 の場合。
1C が使用する主なデータベースの 1 つは、製品とサービスのリストです。 したがって、Excel からのロード手順を説明するために、この特定の種類のデータを転送する例に焦点を当てます。
- 処理ウィンドウに戻ります。 製品範囲をロードするため、パラメータのスイッチは次の位置にある必要があります。 "ディレクトリ"。 ただし、デフォルトではこの方法でインストールされます。 別のタイプのデータ (表形式セクションまたは情報レジスター) を転送する場合にのみ、これを切り替える必要があります。 次はフィールドで 「ディレクトリビュー」省略記号の付いたボタンをクリックします。 ドロップダウン リストが開きます。 その中で項目を選択する必要があります 「命名法」.
- この後、ハンドラーは、プログラムが使用するフィールドをこのタイプの参考書に自動的に配置します。 すべてのフィールドに入力する必要はまったくないことにすぐに注意してください。
- 次に、ポータブル Excel ドキュメントを再度開きます。 その列の名前が、対応するフィールドを含む 1C ディレクトリ フィールドの名前と異なる場合は、名前が完全に一致するように Excel でこれらの列の名前を変更する必要があります。 テーブルに、ディレクトリ内に類似する列が存在しない列が含まれている場合は、それらの列を削除する必要があります。 私たちの場合、これらの列は次のとおりです。 "量"そして "価格"。 また、ドキュメント内の列の順序は、処理中に表示される順序と厳密に一致する必要があることも付け加えておきます。 ローダーに表示される列の一部にデータがない場合、これらの列は空のままにすることができますが、データがある列の番号付けは一致する必要があります。 編集の利便性と速度を高めるために、Excel の特別な機能を使用して、列を所定の場所にすばやく移動できます。
これらの手順が完了したら、アイコンをクリックします。 "保存"これは、ウィンドウの左上隅にあるフロッピー ディスクを描いたアイコンで表されます。 次に、標準の閉じるボタンをクリックしてファイルを閉じます。
- 1C 処理ウィンドウに戻ります。 ボタンをクリックしてください "開ける"、黄色のフォルダーとして表示されます。
- ファイルを開くウィンドウが開きます。 必要な Excel ドキュメントが存在するディレクトリに移動しましょう。 デフォルトのファイル表示スイッチは拡張子に設定されています MXL。 必要なファイルを表示するには、ファイルを次の位置に移動する必要があります。 「エクセルシート」。 その後、転送する文書を選択してボタンをクリックします "開ける".
- その後、コンテンツがハンドラーで開かれます。 データが正しく入力されていることを確認するには、 ボタンをクリックします。 「充填制御」.
- ご覧のとおり、フィル コントロール ツールはエラーが見つからなかったことを示しています。
- タブに移動しましょう "設定"。 で 「検索フィールド」命名ディレクトリに入力されたすべての名前に対して一意になる行にチェックを入れます。 これに最もよく使用されるフィールドは次のとおりです。 "ベンダーコード"または "名前"。 これは、リストに新しい項目を追加するときにデータが重複しないようにするために行う必要があります。
- すべてのデータを入力して設定が完了したら、ディレクトリへの情報の直接ロードに進むことができます。 これを行うには、碑文をクリックします "データを読み込む".
- ダウンロードプロセスが進行中です。 完了したら、アイテム リファレンス ブックに移動して、必要なデータがすべてそこに追加されていることを確認できます。
1C 8.3 プログラムの命名ディレクトリにデータを追加する手順に従いました。 他のディレクトリやドキュメントの場合も、ダウンロードは同じ原則に従って実行されますが、ユーザーが自分で理解できるいくつかのニュアンスが異なります。 サードパーティ製ローダーによって手順が異なる場合があることにも注意してください。ただし、一般的なアプローチはすべて同じです。まず、プロセッサがファイルから情報を編集中のウィンドウにロードし、その後でファイルが追加されます。 1C データベースに直接送信します。
1C では、MS Excel ファイルを操作する方法が 2 つあります。COM オブジェクトを使用する方法と、スプレッドシート ドキュメント オブジェクトを使用する組み込み 1C ツールを使用する方法です。 これら両方の方法を詳しく見てみましょう。
1. COM オブジェクトを操作します。
この方法では、MS Excel がインストールされている必要があります。サーバー上のファイルを操作する場合は、サーバーに MS Excel がインストールされている必要があります。クライアントにある場合は、クライアント側にも MS Excel がインストールされている必要があります。
例 (記事の最後にテキスト形式で表示されます):
COM オブジェクト「Excel.Application」によって提供されるすべてのオブジェクト、メソッド、およびプロパティは、MS Office プログラミング言語である VBA のオブジェクト、メソッド、およびプロパティであることに注意してください。
注記:
場合によっては、既存のテンプレートを使用して作業する必要があります。 次に、必要なすべてのユーザーがアクセスできるように、このテンプレートをどこかに保存する必要があります。 ただし、テンプレートをバイナリ レイアウトとして保存するという、より簡単な解決策があります。
2. 表形式の文書 1C に取り組みます。
1C スプレッドシート ドキュメントは、プラットフォーム 8 以降の記録では MS Excel 形式をサポートしますが、開く場合はプラットフォーム 8.3.6 以降のみサポートします。 さらに、開くと、すべてのシートが 1 つのスプレッドシート ドキュメントにロードされます。 バージョン 8.3.10 以降、ロード時に異なるシートが異なる領域としてロードされるようになりました。
エントリの例は非常に単純なので、特別な注意は必要ありません。
しかし、ここで問題が発生します。 Excel ワークブックに 1C から記録する場合、シート名の表示はデフォルトで無効になっています。
この問題は 2 つの方法で解決できます。1 - ブック自体で、設定でシートの表示を有効にする (すべてのユーザーがこれに同意するわけではありません)、2 - COM オブジェクトを通じてこれを実行します (ここでも MS Excel をインストールする必要があります) )。
この小さな追加により、シート ラベルが MS Excel ファイルに表示されるようになります。
MS Excel を読み取ることは、それほど簡単な作業ではありません。読み取りメソッドはサーバーまたはシック クライアントでのみ使用できるからです。 これを行うには、MS Excel ファイルをサーバーに転送する必要があります。
&OnClient
プロシージャ CreateDocument()
例外
試行の終了;
Book = Excel.WorkBooks.Add(); //新しい MS Excel ワークブックを作成する
Sheet = Book.WorkSheets.Add(); //シートを追加
Sheet.Name = "1C の例"; //シート名を設定する
Sheet.Cells(1,1).Value = "数式を作成しましょう";!}
Sheet.Cells(2,1).Value = 1;
Sheet.Cells(2,2).Value = 2;
Sheet.Cells(2,3).Formula = "=A2+B2";
Sheet.Cells(3,1).Value = CurrentDate();
Book.SaveAs("C:\1\Test.xlsx");
Book.Close();
手順の終了
サーバー上(&O)
関数 GetLayoutServer()
戻り FormAttributesValue("オブジェクト").GetLayout("TemplateForUpload"); //このようにして、外部処理レイアウトを取得します。
エンドファンクション
&OnClient
手続き作業()
Excel = New COMObject("Excel.Application");
例外
Report("Excel コンポーネントに接続しようとしましたが失敗しました。このコンピューターには Excel がインストールされていない可能性があります!");
試行の終了;
レイアウト = GetLayoutServer();
Layout.Write(一時ファイル名);
ご質問がありますか、またはコンサルタントの助けが必要ですか?
Book = Excel.WorkBooks.Open(TemporaryFileName);
SheetTemplate = Book.WorkSheets(1);
SheetTemplate.Cells(6,1).Value = "Date:";!}
SheetTemplate.Cells(6,2).Value = CurrentDate();
SheetTemplate.NumberFormat = "dd/mm/yy;@"; // 日付形式を指定します。この形式は MS Excel でマクロを記録することによって取得されました。
SheetTemplate.Columns("B:B").EntireColumn.AutoFit; // 日付が正確に収まるように列を引き伸ばします
Book.SaveAs(ファイル名);
Book.Close();
手順の終了
&OnClient
手順の終了
&OnClient
プロシージャ WriteTabularDocument()
TabularDocument = New TabularDocument();
TabularDocument.Area("R1C1").Text = "1C の MS Excel のレコードの例";
TabularDocument.Write("C:\1\Test2.xls",TabularDocumentFileType.XLSX);
Excel = New COMObject("Excel.Application");
Excel.WorkBooks.Open("C:\1\Test2.xls");
Excel.Visible = 0;
Excel.ActiveWindow.DisplayWorkbookTabs = 1;
Excel.ActiveWindow.TabRatio = 0.6;
Excel.ActiveWorkbook.Save();
Excel.Application.Quit()
手順の終了
BinaryData = New BinaryData("C:\1\test2.xlsx");
Address=PlaceInTemporaryStorage(BinaryData,ThisForm.UniqueIdentifier) ;
TabularDocument = UploadOnServer(アドレス);
TabularDocument.Show();
手順の終了
サーバー上(&O)
関数 UploadOnServer(アドレス)
TemporaryFileName = GetTemporaryFileName("xlsx");
FileData = GetFromTemporaryStorage(アドレス);
FileData.Write(一時ファイル名);
TabularDocument = New TabularDocument();
TabularDocument を返します。