{"id":24885,"date":"2026-06-06T19:52:28","date_gmt":"2026-06-06T11:52:28","guid":{"rendered":"https:\/\/blog.iyatt.com\/?p=24885"},"modified":"2026-06-09T14:24:59","modified_gmt":"2026-06-09T06:24:59","slug":"pc-dmis-%e4%bd%bf%e7%94%a8-basic-%e5%bc%80%e5%8f%91%e8%af%bb%e5%8f%96%e6%95%b0%e6%8d%ae","status":"publish","type":"post","link":"https:\/\/blog.iyatt.com\/?p=24885","title":{"rendered":"PC-DMIS \u57fa\u4e8e BASIC \u7684\u4e8c\u6b21\u5f00\u53d1"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E5%89%8D%E8%A8%80\" >\u524d\u8a00<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E6%B5%8B%E8%AF%95%E8%BD%AF%E4%BB%B6%E7%89%88%E6%9C%AC\" >\u6d4b\u8bd5\u8f6f\u4ef6\u7248\u672c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E5%AE%9E%E8%B7%B5%E8%AE%B0%E5%BD%95\" >\u5b9e\u8df5\u8bb0\u5f55<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E6%8F%92%E5%85%A5%E8%84%9A%E6%9C%AC\" >\u63d2\u5165\u811a\u672c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#BASIC_%E8%84%9A%E6%9C%AC%E6%96%87%E4%BB%B6%E7%BC%96%E7%A0%81\" >BASIC \u811a\u672c\u6587\u4ef6\u7f16\u7801<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E8%8E%B7%E5%8F%96%E8%BD%AF%E4%BB%B6%E7%89%88%E6%9C%AC\" >\u83b7\u53d6\u8f6f\u4ef6\u7248\u672c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0_%E2%80%93_%E6%97%A0%E8%BF%94%E5%9B%9E%E5%80%BC\" >\u81ea\u5b9a\u4e49\u51fd\u6570 &#8211; \u65e0\u8fd4\u56de\u503c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0_%E2%80%93_%E6%9C%89%E8%BF%94%E5%9B%9E%E5%80%BC%E5%92%8C%E5%8F%82%E6%95%B0%E4%BC%A0%E5%87%BA\" >\u81ea\u5b9a\u4e49\u51fd\u6570 &#8211; \u6709\u8fd4\u56de\u503c\u548c\u53c2\u6570\u4f20\u51fa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E5%86%99%E6%96%87%E4%BB%B6\" >\u5199\u6587\u4ef6<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E8%AF%BB%E5%86%99%E6%B5%8B%E9%87%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E7%9A%84%E5%8F%98%E9%87%8F_%E2%80%93_%E5%AE%98%E6%96%B9%E6%A1%88%E4%BE%8B\" >\u8bfb\u5199\u6d4b\u91cf\u7a0b\u5e8f\u4e2d\u7684\u53d8\u91cf &#8211; \u5b98\u65b9\u6848\u4f8b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E5%9C%A8%E6%B5%8B%E9%87%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E6%8F%92%E5%85%A5%E6%B3%A8%E9%87%8A%E5%91%BD%E4%BB%A4_%E2%80%93_%E5%AE%98%E6%96%B9%E6%A1%88%E4%BE%8B\" >\u5728\u6d4b\u91cf\u7a0b\u5e8f\u4e2d\u63d2\u5165\u6ce8\u91ca\u547d\u4ee4 &#8211; \u5b98\u65b9\u6848\u4f8b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E5%86%99_CSV_%E6%96%87%E4%BB%B6\" >\u5199 CSV \u6587\u4ef6<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E8%AF%BB%E5%8F%96%E7%89%B9%E5%BE%81%E5%9D%90%E6%A0%87\" >\u8bfb\u53d6\u7279\u5f81\u5750\u6807<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E8%AF%BB%E5%8F%96%E5%B0%BA%E5%AF%B8\" >\u8bfb\u53d6\u5c3a\u5bf8<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E8%AF%BB%E5%8F%96%E5%BD%A2%E4%BD%8D%E5%85%AC%E5%B7%AE%EF%BC%882021_%E7%89%88%E5%8F%8A%E4%BB%A5%E5%89%8D%EF%BC%89\" >\u8bfb\u53d6\u5f62\u4f4d\u516c\u5dee\uff082021 \u7248\u53ca\u4ee5\u524d\uff09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/blog.iyatt.com\/?p=24885\/#%E8%AF%BB%E5%8F%96%E5%87%A0%E4%BD%95%E5%85%AC%E5%B7%AE%EF%BC%882022_%E7%89%88%E5%8F%8A%E4%BB%A5%E5%90%8E%EF%BC%89\" >\u8bfb\u53d6\u51e0\u4f55\u516c\u5dee\uff082022 \u7248\u53ca\u4ee5\u540e\uff09<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E5%89%8D%E8%A8%80\"><\/span>\u524d\u8a00<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2026\/6\/6<br \/>\n\u53bb\u5e74\u542f\u52a8\u4e86\u4e00\u4e2a\u9879\u76ee\uff0c\u7528\u7eaf Python \u5b9e\u73b0\u7684\uff0c\u7528\u4e8e\u81ea\u52a8\u5bfc\u51fa\u6d4b\u91cf\u6570\u636e\u5230 Excel\uff0c\u9879\u76ee\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/IYATT-yx\/pcdmis-export-data\">https:\/\/github.com\/IYATT-yx\/pcdmis-export-data<\/a><br \/>\n\u8fd1\u671f\u5c1d\u8bd5\u4f18\u5316\uff0c\u4f46\u662f\u6548\u679c\u751a\u5fae\u3002\u6211\u7528\u5185\u7f6e\u7684 BASIC \u6d4b\u8bd5\u53d1\u73b0\u540c\u6837\u7684\u6570\u636e\u5bfc\u51fa\uff0cBASIC \u53ef\u4ee5\u505a\u5230 0.0078s\uff0c\u800c Python \u8981 3s\uff0c\u8fd9\u6027\u80fd\u5dee\u5f02\u4e0d\u662f\u4e00\u822c\u7684\u5927\u3002\u4e3b\u8981\u95ee\u9898\u662f Python \u662f\u5916\u90e8\u8fdb\u7a0b\u6267\u884c\uff0c\u901a\u8fc7 COM \u8de8\u8fdb\u7a0b\u4ea4\u4e92\u7684\u4ee3\u4ef7\u975e\u5e38\u9ad8\uff0c\u800c BASIC \u662f PC-DMIS \u5185\u7f6e\u6267\u884c\uff0c\u540c\u8fdb\u7a0b\u5185\u7684\u8c03\u7528\u6548\u7387\u975e\u5e38\u9ad8\u3002\u56e0\u6b64\u6211\u51c6\u5907\u91cd\u6784\u8fd9\u4e2a\u9879\u76ee\uff0c\u5c06\u6570\u636e\u8bfb\u53d6\u90e8\u5206\u6539\u4e3a BASIC \u5b9e\u73b0\uff0c\u5176\u5b83\u529f\u80fd\u7528 Python \u5b9e\u73b0\uff0c\u8fd9\u6837\u5e94\u8be5\u53ef\u4ee5\u5927\u5927\u6539\u5584\u5bfc\u51fa\u6548\u7387\u3002\u73b0\u5728\u7eaf Python \u65b9\u6848\u786e\u5b9e\u6027\u80fd\u592a\u62c9\u8de8\u4e86\uff0c\u6709\u4e00\u4e2a\u7bb1\u4f53\u96f6\u4ef6\uff0c\u68c0\u6d4b\u62a5\u544a 13 \u9875\u7684\u6837\u5b50\uff0c\u5bfc\u51fa\u8981 28s \u5de6\u53f3\uff08\u90a3\u53f0\u4e09\u5750\u6807\u7535\u8111\u8fd8\u662f\u673a\u68b0\u786c\u76d8\u7684\uff09\uff0c\u65f6\u95f4\u5f00\u9500\u592a\u5927\u3002<br \/>\n\u8fd9\u91cc\u5c31\u8bb0\u5f55 BASIC \u65b9\u6848\u7684\u5b9e\u8df5\u3002<\/p>\n<p>PC-DMIS \u7684 BASIC \u8fd8\u662f\u4e00\u4e2a\u975e\u5e38\u8001\u7684\u5f15\u64ce\uff0c\u800c\u4e14\u6781\u5ea6\u9609\u5272\uff0c\u5f88\u591a\u8bed\u6cd5\u529f\u80fd\u90fd\u4e0d\u652f\u6301\uff0c\u5199\u8d77\u6765\u633a\u7d2f\u7684\u3002\u6211\u4e5f\u662f\u73b0\u5b66\u73b0\u63a2\u7d22\uff0c\u901a\u8fc7 Google Gemini \u8f85\u52a9\u6211\u7814\u7a76\uff0c\u5e76\u628a\u9a8c\u8bc1\u7684\u76f8\u5173\u4ee3\u7801\u548c\u7ed3\u679c\u8bb0\u5f55\u5728\u672c\u6587\uff0c\u4e3a\u91cd\u6784\u6211\u7684\u9879\u76ee\u505a\u51c6\u5907\u3002<\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E6%B5%8B%E8%AF%95%E8%BD%AF%E4%BB%B6%E7%89%88%E6%9C%AC\"><\/span>\u6d4b\u8bd5\u8f6f\u4ef6\u7248\u672c<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<ul>\n<li>PC-DMIS 2019 R2<\/li>\n<li>PC-DMIS 2023.1\uff08\u9ed8\u8ba4\u6d4b\u8bd5\u73af\u5883\uff09<\/li>\n<\/ul>\n<h1><span class=\"ez-toc-section\" id=\"%E5%AE%9E%E8%B7%B5%E8%AE%B0%E5%BD%95\"><\/span>\u5b9e\u8df5\u8bb0\u5f55<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E6%8F%92%E5%85%A5%E8%84%9A%E6%9C%AC\"><\/span>\u63d2\u5165\u811a\u672c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u8fd9\u73a9\u610f\u6298\u817e\u4e86\u6211\u665a\u4e0a\u4e00\u4e24\u4e2a\u5c0f\u65f6\uff0c\u6211\u4e0d\u662f\u5f88\u719f\u6089 PC-DMIS \u6709\u4e2a\u6807\u8bb0\u64cd\u4f5c\uff0c\u4e0d\u77e5\u9053\u9ed8\u8ba4\u63d2\u5165\u7684 BASIC \u662f\u4e0d\u6267\u884c\u72b6\u6001\u7684\uff0c\u7136\u540e\u53cd\u590d\u7814\u7a76\u5230\u5e95\u600e\u4e48\u56de\u4e8b\u3002\u6700\u540e\u624d\u53d1\u73b0\u8981\u5207\u6362\u6807\u8bb0\u624d\u80fd\u6267\u884c\u3002<\/p>\n<p>\u63d2\u5165 &#8211; BASIC \u811a\u672c<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780764518386.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 343px; --smush-placeholder-aspect-ratio: 343\/489;\" \/><\/p>\n<p>\u5982\u679c\u6709\u73b0\u6210\u7684\u811a\u672c\u53ef\u4ee5\u76f4\u63a5\u9009\u62e9\uff0c\u6ca1\u6709\u5c31\u81ea\u5df1\u53d6\u4e00\u4e2a\u6587\u4ef6\u540d<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780764580422.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1054px; --smush-placeholder-aspect-ratio: 1054\/700;\" \/><\/p>\n<p>\u63d2\u5165\u540e\u53ef\u4ee5\u770b\u5230\u8272\u6709\u80cc\u666f\u8272\u7684\uff0c\u73b0\u5728\u8fd0\u884c\u6d4b\u91cf\u7a0b\u5e8f\u65f6\u662f\u4e0d\u4f1a\u6267\u884c\u5b83\u7684<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780764626101.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1251px; --smush-placeholder-aspect-ratio: 1251\/276;\" \/><\/p>\n<p>\u5149\u6807\u70b9\u5230\u8fd9\u4e2a\u547d\u4ee4\u4e0a\uff0c\u6309\u4e00\u4e0b<code class=\"kb-btn\">F3<\/code>\uff0c\u8fd9\u6837\u5c31\u5207\u6362\u5230\u53ef\u6267\u884c\u72b6\u6001\u4e86<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780764785620.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1255px; --smush-placeholder-aspect-ratio: 1255\/204;\" \/><\/p>\n<p>\u5149\u6807\u5728\u547d\u4ee4\u4e0a\uff0c\u6309<code class=\"kb-btn\">F9<\/code>\u53ef\u4ee5\u6253\u5f00\u811a\u672c\u7f16\u8f91\u5668<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780765638168.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 923px; --smush-placeholder-aspect-ratio: 923\/835;\" \/><\/p>\n<p>\u9009\u4e2d\u6574\u4e2a\u547d\u4ee4\uff0c\u6309<code class=\"kb-btn\">Ctrl<\/code>+<code class=\"kb-btn\">L<\/code>\u6267\u884c\u5f53\u524d\u547d\u4ee4\uff0c\u6210\u529f\u6267\u884c\u4ee5\u540e\u4f1a\u663e\u793a\u51fa<strong>\u7ec8\u6b62\u811a\u672c\/<\/strong>\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780766488410.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 922px; --smush-placeholder-aspect-ratio: 922\/175;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780766602258.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1059px; --smush-placeholder-aspect-ratio: 1059\/265;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780766610612.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 939px; --smush-placeholder-aspect-ratio: 939\/160;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"BASIC_%E8%84%9A%E6%9C%AC%E6%96%87%E4%BB%B6%E7%BC%96%E7%A0%81\"><\/span>BASIC \u811a\u672c\u6587\u4ef6\u7f16\u7801<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4e2d\u6587\u8bed\u8a00\u4e0b\u901a\u8fc7 PC-DMIS \u63d2\u5165\u521b\u5efa\u9ed8\u8ba4\u7528\u7684 <strong>GB2312<\/strong>\uff0c\u5982\u679c\u81ea\u5df1\u521b\u5efa\u811a\u672c\u7684\u8bdd\u5c31\u8981\u7279\u522b\u9009\u62e9\u3002<br \/>\n\u6bd4\u5982\u6211\u7528 VScode \u5199\u4ee3\u7801\uff0c\u4fdd\u5b58\u5c31\u624b\u52a8\u9009\u7f16\u7801 <strong>GB2312<\/strong>\u3002\u5982\u679c\u8981\u56fd\u9645\u5316\uff0c\u5efa\u8bae\u811a\u672c\u91cc\u5199\u7eaf\u82f1\u6587\uff0c\u4e0d\u8981\u51fa\u73b0\u4e2d\u6587\u5b57\u7b26\uff0c\u8fd9\u65f6\u5019 GB2312 \u53ef\u4ee5\u7b49\u6548\u4e3a ANSI\u3002\u5728\u975e\u4e2d\u6587\u8bed\u8a00\u7684\u7535\u8111\u4e0a\u4e5f\u80fd\u6b63\u5e38\u663e\u793a\u5b57\u7b26\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780766136815.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1240px; --smush-placeholder-aspect-ratio: 1240\/602;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%8E%B7%E5%8F%96%E8%BD%AF%E4%BB%B6%E7%89%88%E6%9C%AC\"><\/span>\u83b7\u53d6\u8f6f\u4ef6\u7248\u672c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code class=\"language-basic\">Sub Main()\n    Dim app As Object\n    Set app = CreateObject(&quot;PCDLRN.Application&quot;)\n    If app Is Nothing Then\n        MsgBox &quot;\u65e0\u6cd5\u8fde\u63a5\u5230 PC-DMIS \u5b9e\u4f8b\uff01&quot;, 16, &quot;\u9519\u8bef&quot;\n        Exit Sub\n    End If\n\n    MsgBox &quot;\u5f53\u524d PC-DMIS \u7248\u672c\u4e3a\uff1a&quot; &amp; app.VersionString, 64, &quot;PC-DMIS \u7248\u672c\u4fe1\u606f&quot;\n    Set app = Nothing\nEnd Sub<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780797030955.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 267px; --smush-placeholder-aspect-ratio: 267\/186;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0_%E2%80%93_%E6%97%A0%E8%BF%94%E5%9B%9E%E5%80%BC\"><\/span>\u81ea\u5b9a\u4e49\u51fd\u6570 &#8211; \u65e0\u8fd4\u56de\u503c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code class=\"language-basic\">&#039; \u4e3b\u5165\u53e3 Main \u5fc5\u987b\u5199\u5728\u6700\u9876\u4e0a\nSub Main()\n    &#039; \u52a8\u6001\u6570\u7ec4\n    Dim myArgs() As String\n    ReDim myArgs(3)\n    myArgs(0) = &quot;\u53c2\u65701&quot;\n    myArgs(1) = &quot;\u53c2\u65702&quot;\n    myArgs(2) = &quot;\u53c2\u65703&quot;\n    myArgs(3) = &quot;\u64cd\u4f5c\u5458: IYATT-yx&quot;\n\n    processArray myArgs\nEnd Sub\n\nSub processArray(ByRef targetArray() As String)\n    Dim boundString As String\n    boundString = &quot;&quot;\n\n    Dim i As Long\n    For i = LBound(targetArray) To UBound(targetArray)\n        boundString = boundString &amp; &quot;\u63a5\u6536\u5230\u7d22\u5f15 [&quot; &amp; i &amp; &quot;]\uff1a&quot; &amp; targetArray(i) &amp; Chr(13) &amp; Chr(10)\n    Next i\n\n    MsgBox boundString, 64, &quot;\u5b50\u7a0b\u5e8f\u6536\u5230\u6570\u7ec4&quot;\nEnd Sub<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780808354734.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 284px; --smush-placeholder-aspect-ratio: 284\/216;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0_%E2%80%93_%E6%9C%89%E8%BF%94%E5%9B%9E%E5%80%BC%E5%92%8C%E5%8F%82%E6%95%B0%E4%BC%A0%E5%87%BA\"><\/span>\u81ea\u5b9a\u4e49\u51fd\u6570 &#8211; \u6709\u8fd4\u56de\u503c\u548c\u53c2\u6570\u4f20\u51fa<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code class=\"language-basic\">&#039; ==============================================================================\n&#039; \u4e3b\u5165\u53e3\uff1a\u5fc5\u987b\u5199\u5728\u6700\u9876\u4e0a\n&#039; ==============================================================================\nSub Main()\n    Dim myArgs() As String\n    ReDim myArgs(3)\n    myArgs(0) = &quot;\u53c2\u65701&quot;\n    myArgs(1) = &quot;\u53c2\u65702&quot;\n    myArgs(2) = &quot;\u53c2\u65703&quot;\n    myArgs(3) = &quot;\u64cd\u4f5c\u5458: IYATT-yx&quot;\n\n    &#039; \u58f0\u660e\u4e00\u4e2a\u53d8\u91cf\u7528\u6765\u63a5\u6536\u51fd\u6570\u7684\u8fd4\u56de\u503c\n    Dim resultStatus As String\n\n    &#039; --------------------------------------------------------------------------\n    &#039; \u8c03\u7528\u51fd\u6570\uff1amyArgs \u65e2\u662f\u8f93\u5165\u53c2\u6570\uff0c\u4e5f\u4f1a\u5728\u6267\u884c\u540e\u88ab\u51fd\u6570\u5185\u90e8\u201c\u6d17\u8231\u201d\u7269\u7406\u4f20\u51fa\n    &#039; --------------------------------------------------------------------------\n    resultStatus = processArrayAndModify(myArgs)\n\n    &#039; --------------------------------------------------------------------------\n    &#039; \u9a8c\u8bc1\u53c2\u6570\u4f20\u51fa\uff1a\u904d\u5386\u5df2\u88ab\u51fd\u6570\u7269\u7406\u4fee\u6539\u540e\u7684 myArgs \u6570\u7ec4\n    &#039; --------------------------------------------------------------------------\n    Dim afterString As String\n    afterString = &quot;\u3010Main \u51fd\u6570\u9a8c\u8bc1\u539f\u6570\u7ec4\u5df2\u88ab\u7269\u7406\u4fee\u6539\u3011&quot; &amp; Chr(13) &amp; Chr(10)\n\n    Dim i As Long\n    For i = LBound(myArgs) To UBound(myArgs)\n        afterString = afterString &amp; &quot;\u69fd\u4f4d [&quot; &amp; i &amp; &quot;] \u73b0\u5728\u7684\u503c\uff1a&quot; &amp; myArgs(i) &amp; Chr(13) &amp; Chr(10)\n    Next i\n\n    &#039; \u5f39\u51fa\u63d0\u793a\uff1a\u5148\u663e\u793a\u51fd\u6570\u8fd4\u56de\u503c\uff0c\u518d\u663e\u793a\u4fee\u6539\u540e\u7684\u6570\u7ec4\u5185\u5bb9\n    MsgBox &quot;\u51fd\u6570\u663e\u5f0f\u8fd4\u56de\u503c -&gt; &quot; &amp; resultStatus &amp; Chr(13) &amp; Chr(10) &amp; Chr(13) &amp; Chr(10) &amp; afterString, 64, &quot;\u6267\u884c\u5b8c\u6bd5&quot;\nEnd Sub\n\n&#039; ==============================================================================\n&#039; \u81ea\u5b9a\u4e49\u51fd\u6570\uff1a\u63a5\u6536\u6570\u7ec4\uff08ByRef \u4f20\u51fa\uff09\uff0c\u5e76\u901a\u8fc7 Function \u663e\u5f0f\u8fd4\u56de String \u72b6\u6001\n&#039; ==============================================================================\nFunction processArrayAndModify(ByRef targetArray() As String) As String\n    Dim i As Long\n    Dim count As Long\n    count = 0\n\n    &#039; --------------------------------------------------------------------------\n    &#039; \u7269\u7406\u4fee\u6539\u6570\u7ec4\u5185\u5bb9\uff08\u53c2\u6570\u4f20\u51fa\u6838\u5fc3\u52a8\u4f5c\uff09\n    &#039; \u7531\u4e8e\u662f ByRef \u4f20\u9012\uff0c\u8fd9\u91cc\u5bf9 targetArray \u7684\u4fee\u6539\u4f1a\u76f4\u63a5\u6620\u5c04\u5230 Main \u7684 myArgs \u4e2d\n    &#039; --------------------------------------------------------------------------\n    For i = LBound(targetArray) To UBound(targetArray)\n        &#039; \u7ed9\u539f\u6709\u7684\u5b57\u7b26\u4e32\u7269\u7406\u8ffd\u52a0\u4e00\u4e2a\u540e\u7f00\n        targetArray(i) = targetArray(i) &amp; &quot; [\u5df2\u88ab\u51fd\u6570\u7269\u7406\u4fee\u6539]&quot;\n        count = count + 1\n    Next i\n\n    &#039; --------------------------------------------------------------------------\n    &#039; \u663e\u5f0f\u8bbe\u7f6e\u51fd\u6570\u8fd4\u56de\u503c\uff1a\u5728 VBA \u4e2d\uff0c\u901a\u8fc7\u5c06\u7ed3\u679c\u8d4b\u503c\u7ed9\u201c\u51fd\u6570\u540d\u201d\u6765\u8fd4\u56de\u6570\u636e\n    &#039; --------------------------------------------------------------------------\n    processArrayAndModify = &quot;SUCCESS: \u6210\u529f\u5904\u7406\u5e76\u7269\u7406\u4f20\u51fa &quot; &amp; count &amp; &quot; \u4e2a\u5143\u7d20&quot;\nEnd Function<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780811538271.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 415px; --smush-placeholder-aspect-ratio: 415\/268;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%86%99%E6%96%87%E4%BB%B6\"><\/span>\u5199\u6587\u4ef6<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code class=\"language-basic\">Sub Main\n    Dim filePath As String\n    filePath = &quot;C:\\Temp\\TestLog_UTF8.txt&quot;\n\n    &#039; \u521d\u59cb\u5316\u5305\u542b\u4e2d\u6587\u7684\u6570\u636e\n    Dim dataLines(2) As String\n    dataLines(0) = &quot;Header: \u65e5\u5fd7\u5f00\u59cb&quot;\n    dataLines(1) = &quot;Status: \u5904\u7406\u4e2d&quot;\n    dataLines(2) = &quot;Status: \u5df2\u5b8c\u6210&quot;\n\n    &#039; \u521b\u5efa ADODB.Stream \u5bf9\u8c61\n    Dim stream As Object\n    Set stream = CreateObject(&quot;ADODB.Stream&quot;)\n\n    &#039; \u51c6\u5907\u5199\u5165\u7684\u4e8c\u8fdb\u5236\u6d41\n    stream.Type = 2             &#039; 2 = adTypeText (\u5904\u7406\u6587\u672c)\n    stream.Charset = &quot;utf-8&quot;    &#039; \u5173\u952e\uff1a\u5f3a\u5236\u6307\u5b9a\u7f16\u7801\u4e3a UTF-8 with BOM\n    stream.Open\n\n    &#039; \u904d\u5386\u6570\u7ec4\u5e76\u5199\u5165\u5185\u5bb9\n    Dim i As Integer\n    For i = 0 To UBound(dataLines)\n        &#039; \u4f7f\u7528 WriteText \u5199\u5165\u5b57\u7b26\u4e32\uff0c\u540e\u7eed\u8ffd\u52a0\u6362\u884c\n        stream.WriteText dataLines(i) &amp; Chr(13) &amp; Chr(10)\n    Next i\n\n    &#039; \u5c06\u6d41\u4fdd\u5b58\u5230\u6587\u4ef6\n    &#039; 2 = adSaveCreateOverWrite (\u82e5\u6587\u4ef6\u5b58\u5728\u5219\u8986\u76d6)\n    stream.SaveToFile filePath, 2\n\n    &#039; \u4e25\u683c\u7684\u8d44\u6e90\u6e05\u7406\n    stream.Close\n    Set stream = Nothing\nEnd Sub<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780813717547.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 756px; --smush-placeholder-aspect-ratio: 756\/461;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%AF%BB%E5%86%99%E6%B5%8B%E9%87%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E7%9A%84%E5%8F%98%E9%87%8F_%E2%80%93_%E5%AE%98%E6%96%B9%E6%A1%88%E4%BE%8B\"><\/span>\u8bfb\u5199\u6d4b\u91cf\u7a0b\u5e8f\u4e2d\u7684\u53d8\u91cf &#8211; \u5b98\u65b9\u6848\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u6b64\u6848\u4f8b\u5730\u5740\uff1a<a href=\"https:\/\/docs.hexagonmi.com\/pcdmis\/2023.2\/en\/helpcenter\/mergedprojects\/automationobjects\/webframe.html#Sample_Automation_Script_1.html\">https:\/\/docs.hexagonmi.com\/pcdmis\/2023.2\/en\/helpcenter\/mergedprojects\/automationobjects\/webframe.html#Sample_Automation_Script_1.html<\/a><\/p>\n<p>\u6d4b\u91cf\u7a0b\u5e8f\u53c2\u8003\uff1a<br \/>\n\u6ce8\u610f\u7528\u6ce8\u91ca\u663e\u793a\u53d8\u91cf\u503c\u5185\u5bb9\u7684\u90a3\u6bb5\u4e0d\u8981\u5728\u5bf9\u8bdd\u6846\u91cc\u586b\uff0c\u800c\u662f\u8981\u5728\u547d\u4ee4\u6a21\u5f0f\u4e0b\u4e4b\u8f93\u5165\u8fdb\u53bb\uff0c\u5426\u5219\u4f1a\u76f4\u63a5\u539f\u6837\u663e\u793a\uff1a<strong>&quot;V1 \u6700\u7ec8\u503c\uff1a&quot; + V1<\/strong><\/p>\n<pre><code class=\"language-bash\">C1         =\u6ce8\u91ca\/\u8f93\u5165,\u5426,\u5168\u5c4f=\u5426,\n            \u8f93\u5165\u4e00\u4e2a\u6574\u6570\uff1a\n            \u8d4b\u503c\/V1=INT(C1.INPUT)\nCS1        =\u811a\u672c\/\u6587\u4ef6\u540d= C:\\WORK\\DEVELOPMENT\\PCDMIS-EXPORT-DATA\\\u6d4b\u8bd5.BAS\n            \u51fd\u6570\/Main,\u663e\u793a=\u662f,,\n            \u5f00\u59cb\u811a\u672c\/\n            \u7ec8\u6b62\u811a\u672c\/\n            \u6ce8\u91ca\/\u64cd\u4f5c\u8005,\u5426,\u5168\u5c4f=\u5426,\u81ea\u52a8\u7ee7\u7eed=\u5426,OVC=\u5426,\n            &quot;V1 \u6700\u7ec8\u503c\uff1a&quot; + V1<\/code><\/pre>\n<p>\u811a\u672c\uff1a<\/p>\n<pre><code class=\"language-basic\">Sub Main\n    &#039; \u83b7\u53d6 PC-DMIS \u5e94\u7528\u7a0b\u5e8f\u5bf9\u8c61\n    Dim app As Object\n    Set app = CreateObject(&quot;PCDLRN.Application&quot;)\n\n    &#039; \u83b7\u53d6\u5f53\u524d\u6253\u5f00\u7684\u6d4b\u91cf\u7a0b\u5e8f\u5bf9\u8c61\n    Dim part As Object\n    Set part = app.ActivePartProgram\n\n    &#039; \u83b7\u53d6\u6d4b\u91cf\u7a0b\u5e8f\u4e2d V1 \u53d8\u91cf\u5bf9\u8c61\n    Dim var As Object\n    Set var = part.GetVariableValue(&quot;V1&quot;)\n\n    If Not var Is Nothing Then\n        MsgBox &quot;V1 \u521d\u59cb\u503c\uff1a&quot; &amp; var.LongValue, 0, &quot;\u63d0\u793a&quot;\n        var.LongValue = var.LongValue + 1\n        &#039; \u4fee\u6539\u6d4b\u91cf\u7a0b\u5e8f\u4e2d V1 \u53d8\u91cf\u7684\u503c\n        part.SetVariableValue &quot;V1&quot;, var\n        MsgBox &quot;V1 \u4fee\u6539\u540e\u503c\uff1a&quot; &amp; var.LongValue, 0, &quot;\u63d0\u793a&quot;\n    Else\n        MsgBox &quot;\u672a\u627e\u5230 V1 \u53d8\u91cf&quot;, 0, &quot;\u63d0\u793a&quot;\n    End If\nEnd Sub<\/code><\/pre>\n<p>\u6211\u8f93\u5165\u4e00\u4e2a V1 \u521d\u59cb\u503c 100<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780822969132.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 929px; --smush-placeholder-aspect-ratio: 929\/578;\" \/><\/p>\n<p>\u811a\u672c\u8bfb\u53d6\u5230\u503c<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780822983978.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 206px; --smush-placeholder-aspect-ratio: 206\/199;\" \/><\/p>\n<p>\u811a\u672c\u63d0\u793a\u4fee\u6539\u540e\u7684\u503c<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780823001011.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 215px; --smush-placeholder-aspect-ratio: 215\/187;\" \/><\/p>\n<p>\u6d4b\u91cf\u7a0b\u5e8f\u4e2d\u901a\u8fc7\u6ce8\u91ca\u547d\u4ee4\u663e\u793a V1 \u53d8\u91cf\u503c<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780823023777.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 907px; --smush-placeholder-aspect-ratio: 907\/332;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%9C%A8%E6%B5%8B%E9%87%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E6%8F%92%E5%85%A5%E6%B3%A8%E9%87%8A%E5%91%BD%E4%BB%A4_%E2%80%93_%E5%AE%98%E6%96%B9%E6%A1%88%E4%BE%8B\"><\/span>\u5728\u6d4b\u91cf\u7a0b\u5e8f\u4e2d\u63d2\u5165\u6ce8\u91ca\u547d\u4ee4 &#8211; \u5b98\u65b9\u6848\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5b98\u65b9\u6848\u4f8b\u5730\u5740\uff1a<a href=\"https:\/\/docs.hexagonmi.com\/pcdmis\/2023.2\/en\/helpcenter\/mergedprojects\/automationobjects\/webframe.html#Sample_Automation_Script_2.html\">https:\/\/docs.hexagonmi.com\/pcdmis\/2023.2\/en\/helpcenter\/mergedprojects\/automationobjects\/webframe.html#Sample_Automation_Script_2.html<\/a><\/p>\n<p>\u6ce8\u610f PC-DMIS \u79cd\u7684\u547d\u4ee4\u6587\u672c\u662f\u5173\u8054\u8f6f\u4ef6\u8bed\u8a00\u7684\uff0c\u5982\u679c\u662f\u4e2d\u6587\u7248\uff0c\u63d2\u5165\u547d\u4ee4\u5c31\u8981\u5199\u4e2d\u6587\u5173\u952e\u5b57\uff0c\u662f\u82f1\u8bed\u7248\u5c31\u8981\u5199\u82f1\u8bed\u5173\u952e\u5b57\u3002<\/p>\n<pre><code class=\"language-basic\">Sub Main\n    Dim app As Object\n    Set app = CreateObject(&quot;PCDLRN.Application&quot;)\n\n    Dim part As Object\n    Set part = app.ActivePartProgram\n\n    &#039; \u83b7\u53d6\u6d4b\u91cf\u7a0b\u5e8f\u4e2d\u7684\u547d\u4ee4\u6570\u7ec4\uff0c\u91cc\u9762\u6bcf\u6761\u5143\u7d20\u662f\u4e00\u4e2a\u6d4b\u91cf\u7a0b\u5e8f\u7684\u547d\u4ee4\n    Dim cmds As Object\n    Set cmds = part.Commands\n\n    &#039; \u63d0\u793a\u7528\u6237\u8f93\u5165\n    Dim yourName As String\n    yourName = InputBox(&quot;\u8bf7\u8f93\u5165\u4f60\u7684\u540d\u5b57\uff1a&quot;, &quot;\u64cd\u4f5c\u8005&quot;, &quot;IYATT-yx&quot;)\n\n    &#039; \u5c06\u63d2\u5165\u70b9\u8bbe\u7f6e\u5230\u6d4b\u91cf\u7a0b\u5e8f\u672b\u5c3e\n    &#039; \u6ce8\u610f\uff1a\u5982\u679c\u662f\u901a\u8fc7\u6d4b\u91cf\u7a0b\u5e8f\u8fd0\u884c\u8c03\u7528\uff0c\u7531\u4e8e PC-DMIS \u7684\u4fdd\u62a4\u673a\u5236\uff0c\u5b9e\u9645\u65e0\u6548\n    &#039;      \u4f1a\u56fa\u5b9a\u63d2\u5165\u5230\u201c\u5f00\u59cb\u811a\u672c\u201d\u548c\u201c\u7ec8\u6b62\u811a\u672c\u201d\u4e4b\u95f4\n    &#039;      \u901a\u8fc7 PC-DMIS \u7684 BASIC \u7f16\u8f91\u5668\u6267\u884c\u6216\u8005\u5916\u90e8 BASIC \u6267\u884c\u65f6\u6709\u6548\n    Dim endCmd As Object\n    Set endCmd = cmds(1)\n    Dim isSet As Boolean\n    isSet = cmds.InsertionPointAfter(cmds(cmds.Count))\n    If isSet = False Then\n        MsgBox &quot;\u9519\u8bef\uff1a\u8bbe\u7f6e\u63d2\u5165\u70b9\u5931\u8d25\uff01&quot;\n        Exit Sub\n    End If\n\n    &#039; \u63d2\u5165\u6ce8\u91ca\u547d\u4ee4\n    Dim cmd As Object\n    Set cmd = cmds.Add(SET_COMMENT, True)\n    retvaltype = cmd.PutText(&quot;\u62a5\u544a&quot;, COMMENT_TYPE, 0)\n    retvaltext = cmd.PutText(yourName, COMMENT_FIELD, 1)\n    If (retvaltype = False) Or (retvaltext = False) Then\n        MsgBox &quot;\u9519\u8bef\uff1a\u63d2\u5165\u6ce8\u91ca\u5931\u8d25\uff01\u7c7b\u578b\u4ee3\u7801\uff1a&quot; &amp; retvaltype &amp; &quot; \u6587\u672c\u4ee3\u7801\uff1a&quot; &amp; retvaltext\n        Exit Sub\n    End If\n    &#039; \u91cd\u7ed8\n    cmd.ReDraw\nEnd Sub<\/code><\/pre>\n<p>\u6211\u5bf9\u5b98\u65b9\u6848\u4f8b\u505a\u4e86\u4fee\u6539\uff0c\u5c06\u63d2\u5165\u70b9\u8bbe\u7f6e\u4e3a\u6d4b\u91cf\u7a0b\u5e8f\u7684\u672b\u5c3e\u3002\u53ea\u662f\u6ce8\u610f\u5982\u679c\u901a\u8fc7\u6d4b\u91cf\u7a0b\u5e8f\u8fd0\u884c\u65f6\u4e0d\u4f1a\u751f\u6548\uff0c\u4f1a\u76f4\u63a5\u63d2\u5165\u5230\u201c\u5f00\u59cb\u811a\u672c\u201d\u548c\u201c\u7ec8\u6b62\u811a\u672c\u201d\u4e4b\u95f4\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780830843339.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 901px; --smush-placeholder-aspect-ratio: 901\/175;\" \/><\/p>\n<p>\u8981\u901a\u8fc7\u5916\u90e8 BASIC \u6216\u8005 PC-DMIS \u811a\u672c\u7f16\u8f91\u5668\u6267\u884c\u624d\u6709\u6548\uff0c\u8fd9\u5e94\u8be5\u662f PC-DMIS \u7684\u4fdd\u62a4\u673a\u5236\uff0c\u9632\u6b62\u6d4b\u91cf\u7a0b\u5e8f\u8fd0\u884c\u4e2d\u81ea\u52a8\u8c03\u7528\u811a\u672c\u53cd\u8fc7\u6765\u4fee\u6539\u6d4b\u91cf\u7a0b\u5e8f\u9020\u6210\u5f02\u5e38\u60c5\u51b5\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780830948766.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 598px; --smush-placeholder-aspect-ratio: 598\/379;\" \/><\/p>\n<p>\u8fd9\u6837\u5c31\u662f\u6b63\u5e38\u63d2\u5165\u5230\u7a0b\u5e8f\u7684\u672b\u5c3e\u4e86\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780830980809.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 907px; --smush-placeholder-aspect-ratio: 907\/474;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%86%99_CSV_%E6%96%87%E4%BB%B6\"><\/span>\u5199 CSV \u6587\u4ef6<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u76ee\u524d\u91cd\u6784\u6570\u636e\u5bfc\u51fa\u9879\u76ee\u7684\u8bbe\u60f3\u5c31\u662f\uff0cBASIC \u8bfb\u53d6\u68c0\u6d4b\u6570\u636e\u7136\u540e\u5199\u5230 CSV\uff0c\u901a\u8fc7\u5185\u7f6e BASIC \u6267\u884c\u6570\u636e\u8bfb\u53d6\u6548\u7387\u6781\u9ad8\uff0c\u548c\u5916\u90e8\u8bfb\u53d6\u53ef\u4ee5\u76f8\u5dee\u767e\u500d\u53ca\u4ee5\u4e0a\u7684\u65f6\u95f4\u3002\u7136\u540e\u5269\u4e0b\u7684\u5de5\u4f5c\u4ea4\u7ed9 Python \u5904\u7406\uff0cPython \u5b9e\u73b0\u8bfb\u53d6 CSV \u7136\u540e\u91cd\u5199\u5230 Excel \u6587\u4ef6\uff0c\u5b8c\u6210\u5236\u8868\u3001\u8868\u5934\u53d8\u66f4\uff08\u68c0\u6d4b\u9879\u53d8\u66f4\uff09\u8ffd\u8e2a\u3001\u8d85\u5dee\u6807\u8bc6\u7b49\u5de5\u4f5c\u3002<br \/>\n\u4e0b\u9762\u662f\u4e00\u6bb5\u5199 CSV \u7684\u5b9e\u73b0\u53ca\u6d4b\u8bd5\u6848\u4f8b<\/p>\n<pre><code class=\"language-basic\">Sub Main\n    &#039; ==========================================================================\n    &#039; \u6838\u5fc3\u96c6\u6210\u6d4b\u8bd5\uff1a\u9a8c\u8bc1 CSV \u62fc\u63a5\u3001\u8f6c\u4e49\u3001\u76ee\u5f55\u4e00\u952e\u521b\u5efa\u53ca\u6301\u4e45\u5316\u529f\u80fd\n    &#039; ==========================================================================\n\n    Dim targetPath As String\n    &#039; \u6d4b\u8bd5\u6df1\u5c42\u672a\u77e5\u76ee\u5f55\u81ea\u52a8\u521b\u5efa\uff08\u5047\u8bbe SubDir1 \u548c SubDir2 \u5728\u7269\u7406\u786c\u76d8\u4e0a\u90fd\u4e0d\u5b58\u5728\uff09\n    targetPath = &quot;C:\\Temp\\SubDir1\\SubDir2\\PC_DMIS_TestReport.csv&quot;\n\n    Dim rowFields() As String\n    Dim dataLines(3) As String\n    Dim resultLine As String\n    Dim isOk As Boolean\n\n    &#039; --------------------------------------------------------------------------\n    &#039; \u6d4b\u8bd5\u7528\u4f8b 1\uff1a\u5e38\u89c4\u6807\u51c6\u6570\u636e\uff08\u6d4b\u8bd5\u9ed8\u8ba4\u82f1\u6587\u9017\u53f7\u62fc\u63a5\uff09\n    &#039; --------------------------------------------------------------------------\n    ReDim rowFields(5)\n    rowFields(0) = &quot;1&quot;\n    rowFields(1) = &quot;\u5706\u7279\u5f811&quot;\n    rowFields(2) = &quot;THEO&quot;\n    rowFields(3) = &quot;10.024&quot;\n    rowFields(4) = &quot;0.000&quot;\n    rowFields(5) = &quot;-5.112&quot;\n\n    &#039; \u4f20\u5165\u7a7a\u5b57\u7b26\u4e32 &quot;&quot;\uff0c\u89e6\u53d1\u5185\u90e8\u9ed8\u8ba4\u8f6c\u4e3a\u82f1\u6587\u9017\u53f7\u7684\u9632\u5fa1\u673a\u5236\n    dataLines(0) = joinCsvRowFields(rowFields, &quot;&quot;)\n\n    &#039; --------------------------------------------------------------------------\n    &#039; \u6d4b\u8bd5\u7528\u4f8b 2\uff1a\u5b57\u6bb5\u5305\u542b\u201c\u5206\u9694\u7b26\u201d\uff08\u6d4b\u8bd5 CSV \u81ea\u52a8\u8865\u5168\u53cc\u5f15\u53f7\u5305\u88f9\u673a\u5236\uff09\n    &#039; --------------------------------------------------------------------------\n    ReDim rowFields(5)\n    rowFields(0) = &quot;2&quot;\n    rowFields(1) = &quot;\u5b54,\u5e26\u9017\u53f7\u7684\u540d\u5b57&quot; &#039; \u5b57\u6bb5\u4e2d\u5b58\u5728\u82f1\u6587\u9017\u53f7\n    rowFields(2) = &quot;MEAS&quot;\n    rowFields(3) = &quot;10.025&quot;\n    rowFields(4) = &quot;0.002&quot;\n    rowFields(5) = &quot;-5.110&quot;\n\n    dataLines(1) = joinCsvRowFields(rowFields, &quot;&quot;)\n\n    &#039; --------------------------------------------------------------------------\n    &#039; \u6d4b\u8bd5\u7528\u4f8b 3\uff1a\u5b57\u6bb5\u5305\u542b\u201c\u53cc\u5f15\u53f7\u548c\u6362\u884c\u7b26\u201d\uff08\u6d4b\u8bd5 myReplace \u4e25\u8c28\u8f6c\u4e49\u4e0e CRLF \u5bb9\u9519\uff09\n    &#039; --------------------------------------------------------------------------\n    ReDim rowFields(5)\n    rowFields(0) = &quot;3&quot;\n    rowFields(1) = &quot;\u6784\u5efa&quot;&quot;\u9762&quot;&quot;\u7279\u5f81&quot; &#039; \u5305\u542b\u539f\u59cb\u53cc\u5f15\u53f7\n    rowFields(2) = &quot;TARG&quot; &amp; Chr(13) &amp; Chr(10) &amp; &quot;\u5907\u6ce8\u5185\u5bb9&quot; &#039; \u5305\u542b\u590d\u6742\u56de\u8f66\u6362\u884c\u7b26\n    rowFields(3) = &quot;0.000&quot;\n    rowFields(4) = &quot;0.000&quot;\n    rowFields(5) = &quot;100.000&quot;\n\n    dataLines(2) = joinCsvRowFields(rowFields, &quot;&quot;)\n\n    &#039; --------------------------------------------------------------------------\n    &#039; \u6d4b\u8bd5\u7528\u4f8b 4\uff1a\u72ec\u7acb\u9a8c\u8bc1\u81ea\u5b9a\u4e49\u5206\u9694\u7b26\u6a21\u5f0f\uff08\u4f8b\u5982\u5236\u8868\u7b26 Tab \u6216 \u5206\u53f7\uff09\n    &#039; --------------------------------------------------------------------------\n    ReDim rowFields(2)\n    rowFields(0) = &quot;\u989d\u5916\u6d4b\u8bd5&quot;\n    rowFields(1) = &quot;\u5206\u53f7\u6d4b\u8bd51&quot;\n    rowFields(2) = &quot;\u5206\u53f7\u6d4b\u8bd52&quot;\n\n    &#039; \u4f7f\u7528\u5206\u53f7\u5206\u6d41\uff0c\u4e14\u6545\u610f\u5728\u5185\u5bb9\u91cc\u585e\u5165\u5206\u53f7\u89e6\u53d1\u5305\u88c5\u673a\u5236\n    rowFields(1) = &quot;\u6570\u636e;\u542b\u6709\u5206\u53f7&quot;\n    dataLines(3) = joinCsvRowFields(rowFields, &quot;;&quot;)\n\n    &#039; --------------------------------------------------------------------------\n    &#039; \u6301\u4e45\u5316\u6d4b\u8bd5\u9636\u6bb5 1\uff1a\u8986\u5199\u6a21\u5f0f\uff08Overwrite\uff09\n    &#039; --------------------------------------------------------------------------\n    &#039; \u671f\u671b\u884c\u4e3a\uff1a\n    &#039; 1. Windows \u81ea\u52a8\u9759\u9ed8\u5efa\u7acb C:\\Temp\\SubDir1\\SubDir2\\ \u591a\u5c42\u8def\u5f84\n    &#039; 2. \u521b\u5efa\u5168\u65b0\u7684\u6587\u4ef6\u5e76\u5199\u5165 4 \u884c\u6570\u636e\n    isOk = SaveCsv(targetPath, dataLines, False)\n\n    If isOk Then\n        MsgBox &quot;\u6d4b\u8bd5\u9636\u6bb5 1 \u5b8c\u6210\uff1a\u5168\u65b0\u591a\u5c42\u76ee\u5f55\u5df2\u5efa\u7acb\uff0c\u6587\u4ef6\u9996\u6b21\u8986\u5199\u4fdd\u5b58\u6210\u529f\uff01&quot; &amp; vbCrLf &amp; _\n               &quot;\u8bf7\u81f3\u8def\u5f84\u4e0b\u7528\u8bb0\u4e8b\u672c\u6216 Excel \u786e\u8ba4\u8f6c\u4e49\u683c\u5f0f\u3002&quot;, 64, &quot;\u96c6\u6210\u6d4b\u8bd5\u6210\u529f&quot;\n    End If\n\n    &#039; --------------------------------------------------------------------------\n    &#039; \u6301\u4e45\u5316\u6d4b\u8bd5\u9636\u6bb5 2\uff1a\u8ffd\u52a0\u6a21\u5f0f\uff08Append\uff09\n    &#039; --------------------------------------------------------------------------\n    &#039; \u51c6\u5907\u4e00\u6761\u8ffd\u52a0\u7684\u5355\u884c\u6d4b\u8bd5\u6570\u636e\n    Dim appendLines(0) As String\n    ReDim rowFields(5)\n    rowFields(0) = &quot;4&quot;\n    rowFields(1) = &quot;\u8ffd\u52a0\u7279\u5f81_\u5e73\u97624&quot;\n    rowFields(2) = &quot;THEO&quot;\n    rowFields(3) = &quot;0.000&quot;\n    rowFields(4) = &quot;50.000&quot;\n    rowFields(5) = &quot;0.000&quot;\n    appendLines(0) = joinCsvRowFields(rowFields, &quot;&quot;)\n\n    &#039; \u671f\u671b\u884c\u4e3a\uff1a\u4fdd\u7559\u539f\u6709 4 \u884c\u5185\u5bb9\uff0c\u5728\u6587\u4ef6\u672b\u5c3e\u9759\u9ed8\u8ffd\u52a0\u7b2c 5 \u884c\n    isOk = SaveCsv(targetPath, appendLines, True)\n\n    If isOk Then\n        MsgBox &quot;\u6d4b\u8bd5\u9636\u6bb5 2 \u5b8c\u6210\uff1a\u6210\u529f\u5728\u5df2\u6709\u6587\u4ef6\u672b\u5c3e\u8ffd\u52a0\u65b0\u884c\uff01&quot;, 64, &quot;\u96c6\u6210\u6d4b\u8bd5\u6210\u529f&quot;\n    End If\n\nEnd Sub\n\n&#039; \u4fdd\u5b58 CSV \u6587\u4ef6\n&#039; \u53c2\u6570\uff1a\n&#039; filePath\uff1a\u76ee\u6807\u6587\u4ef6\u8def\u5f84\n&#039; dataLines\uff1a\u5f85\u4fdd\u5b58\u7684 CSV \u6570\u636e\u884c\u6570\u7ec4\n&#039; isAppendMode\uff1a\u662f\u5426\u8ffd\u52a0\u6a21\u5f0f\uff08\u9ed8\u8ba4\u8986\u5199\u6a21\u5f0f\uff09\n&#039; \u8fd4\u56de\u503c\uff1a\u5e03\u5c14\u503c\uff0c\u8868\u793a\u4fdd\u5b58\u662f\u5426\u6210\u529f\nFunction SaveCsv(ByVal filePath As String, ByRef dataLines() As String, ByVal isAppendMode As Boolean) As Boolean\n    On Error GoTo ErrorHandler\n    SaveCsv = False\n\n    &#039; \u521d\u59cb\u5316 FSO \u7528\u4e8e\u63d0\u53d6\u7236\u76ee\u5f55\u8def\u5f84\n    Dim fso As Object\n    Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)\n    Dim parentFolder As String\n    parentFolder = fso.GetParentFolderName(filePath)\n\n    &#039; \u4f7f\u7528 Windows \u7cfb\u7edf\u547d\u4ee4\u9759\u9ed8\u3001\u540c\u6b65\u521b\u5efa\u591a\u7ea7\u6587\u4ef6\u5939\n    If Not fso.FolderExists(parentFolder) Then\n        Dim wsh As Object\n        Set wsh = CreateObject(&quot;WScript.Shell&quot;)\n\n        If Not wsh Is Nothing Then\n            Dim cmdString As String\n            cmdString = &quot;cmd.exe \/c mkdir &quot;&quot;&quot; &amp; parentFolder &amp; &quot;&quot;&quot;&quot;\n            wsh.Run cmdString, 0, True\n        End If\n\n        Set wsh = Nothing\n    End If\n\n    &#039; \u6d41\u5199\u5165\n    Dim stream As Object\n    Set stream = CreateObject(&quot;ADODB.Stream&quot;)\n    stream.Type = 2\n    stream.Charset = &quot;utf-8&quot;\n    stream.Open\n\n    &#039; \u8ffd\u52a0\u6a21\u5f0f\n    If isAppendMode And fso.FileExists(filePath) Then\n        stream.LoadFromFile filePath\n        stream.Position = stream.Size\n    End If\n\n    &#039; \u76f4\u63a5\u5199\u5165\u6574\u884c\u6570\u636e\n    Dim i As Long\n    For i = LBound(dataLines) To UBound(dataLines)\n        stream.WriteText dataLines(i) &amp; Chr(13) &amp; Chr(10)\n    Next i\n\n    &#039; \u8986\u76d6\u5199\u5165\u6700\u7ec8\u6301\u4e45\u5316\n    stream.SaveToFile filePath, 2\n\n    &#039; \u8d44\u6e90\u6e05\u7406\n    stream.Close\n    Set stream = Nothing\n    Set fso = Nothing\n    SaveCsv = True\n    Exit Function\n\nErrorHandler:\n    MsgBox &quot;\u6587\u4ef6\u6301\u4e45\u5316\u53d1\u751f\u5f02\u5e38: &quot; &amp; Err.Description, 16, &quot;I\/O \u6a21\u5757\u9519\u8bef&quot;\n    If Not stream Is Nothing Then\n        &#039; \u786e\u4fdd\u6d41\u5904\u4e8e\u6253\u5f00\u72b6\u6001\u65f6\u624d\u6267\u884c\u5173\u95ed\uff0c\u9632\u6b62\u4e8c\u6b21\u5d29\u6e83\n        On Error Resume Next\n        stream.Close\n        Set stream = Nothing\n    End If\n    Set fso = Nothing\nEnd Function\n\n&#039; \u7528\u4e8e CSV \u7684\u5355\u884c\u5b57\u6bb5\u62fc\u63a5\n&#039; \u53c2\u6570\uff1a\n&#039;   fields: \u5b57\u6bb5\u6570\u7ec4\n&#039;   delimiter: \u5206\u9694\u7b26\uff0c\u4f20\u7a7a\u5b57\u7b26\u4e32\u65f6\u9ed8\u8ba4\u4e3a\u9017\u53f7\n&#039; \u8fd4\u56de\u503c\uff1a\u62fc\u63a5\u540e\u7684\u5b57\u7b26\u4e32\n&#039; \u7528\u4e8e CSV \u7684\u5355\u884c\u5b57\u6bb5\u62fc\u63a5\uff08\u4e25\u8c28\u5b57\u7b26\u8f6c\u4e49\u7248\uff09\nFunction joinCsvRowFields(ByRef fields() As String, ByVal delimiter As String) As String\n    If delimiter = &quot;&quot; Then\n        delimiter = &quot;,&quot;\n    ElseIf InStr(1, delimiter, &quot;&quot;&quot;&quot;) &gt; 0 Then\n        joinCsvRowFields = &quot;&quot;\n        Exit Function\n    End If\n\n    On Error Resume Next\n    Dim lowerBound As Long\n    Dim upperBound As Long\n    lowerBound = LBound(fields)\n    upperBound = UBound(fields)\n\n    If Err.Number &lt;&gt; 0 Or upperBound &lt; lowerBound Then\n        Err.Clear\n        joinCsvRowFields = &quot;&quot;\n        Exit Function\n    End If\n    On Error GoTo 0 \n\n    Dim i As Long\n    Dim resultBuffer As String\n    Dim field As String\n\n    Dim strCr As String\n    Dim strLf As String\n    strCr = Chr(13)\n    strLf = Chr(10)\n\n    For i = lowerBound To upperBound\n        field = fields(i)\n\n        If InStr(1, field, delimiter) &gt; 0 Or _\n           InStr(1, field, &quot;&quot;&quot;&quot;) &gt; 0 Or _\n           InStr(1, field, strCr) &gt; 0 Or _\n           InStr(1, field, strLf) &gt; 0 Then\n\n            field = myReplace(field, &quot;&quot;&quot;&quot;, &quot;&quot;&quot;&quot;&quot;&quot;)\n            field = &quot;&quot;&quot;&quot; &amp; field &amp; &quot;&quot;&quot;&quot;\n        End If\n\n        &#039; 4. \u5b57\u7b26\u4e32\u62fc\u63a5\n        If i = lowerBound Then\n            resultBuffer = field\n        Else\n            resultBuffer = resultBuffer &amp; delimiter &amp; field\n        End If\n    Next i\n\n    joinCsvRowFields = resultBuffer\nEnd Function\n\n&#039; BASIC \u5b57\u7b26\u4e32\u6bd4\u8f83\u6a21\u5f0f\u5e38\u91cf\u5b9a\u4e49\n&#039; ==============================================================================\nPublic Const vbBinaryCompare          = 0 &#039; \u4e8c\u8fdb\u5236\u6bd4\u8f83\uff08\u533a\u5206\u5927\u5c0f\u5199\uff09\nPublic Const vbTextCompare            = 1 &#039; \u6587\u672c\u6bd4\u8f83\uff08\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff09\n&#039; ==============================================================================\n\n&#039; \u5b57\u7b26\u4e32\u66ff\u6362\u51fd\u6570\n&#039; \u53c2\u6570\uff1a\n&#039;   sourceStr: \u539f\u5b57\u7b26\u4e32\n&#039;   findStr: \u8981\u67e5\u627e\u7684\u5b50\u5b57\u7b26\u4e32\n&#039;   replaceStr: \u66ff\u6362\u5b57\u7b26\u4e32\n&#039; \u8fd4\u56de\u503c\uff1a\u66ff\u6362\u540e\u7684\u5b57\u7b26\u4e32\nFunction myReplace(ByVal sourceStr As String, ByVal findStr As String, ByVal replaceStr As String) As String\n    If findStr = &quot;&quot; Then\n        MyReplace = sourceStr\n        Exit Function\n    End If\n\n    &#039; \u5faa\u73af\u67e5\u627e\u5b50\u5b57\u7b26\u4e32\n    Dim pos As Long\n    Dim startPos As Long\n    Dim result As String\n    startPos = 1\n    result = &quot;&quot; \n    Do\n        pos = InStr(startPos, sourceStr, findStr, vbBinaryCompare)\n        If pos = 0 Then\n            &#039; \u6ca1\u627e\u5230\uff0c\u62fc\u63a5\u5269\u4e0b\u7684\u90e8\u5206\n            result = result &amp; Mid(sourceStr, startPos)\n            Exit Do\n        Else\n            &#039; \u62fc\u63a5\u627e\u5230\u5b50\u4e32\u524d\u7684\u90e8\u5206 + \u66ff\u6362\u5b57\u7b26\u4e32\n            result = result &amp; Mid(sourceStr, startPos, pos - startPos) &amp; replaceStr\n            &#039; \u79fb\u52a8\u8d77\u59cb\u4f4d\u7f6e\u5230\u627e\u5230\u5b50\u4e32\u7684\u540e\u9762\n            startPos = pos + Len(findStr)\n        End If\n    Loop\n\n    myReplace = result\nEnd Function<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780840698153.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 849px; --smush-placeholder-aspect-ratio: 849\/187;\" \/><\/p>\n<p>\u5982\u679c\u51fa\u73b0\uff1a<strong>application defined or object defined error<\/strong> \u9519\u8bef\uff0c\u5148\u68c0\u67e5\u8981\u5199\u7684\u6587\u4ef6\u662f\u4e0d\u662f\u5904\u4e8e\u6253\u5f00\u72b6\u6001\uff0c\u8fd9\u662f\u6587\u4ef6\u88ab\u5360\u7528\u4e86\uff0c\u5bfc\u81f4\u5199\u5165\u5931\u8d25\u3002\u6211\u5076\u5c14\u90fd\u6ca1\u53cd\u5e94\u8fc7\u6765\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780929659922.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 447px; --smush-placeholder-aspect-ratio: 447\/185;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%AF%BB%E5%8F%96%E7%89%B9%E5%BE%81%E5%9D%90%E6%A0%87\"><\/span>\u8bfb\u53d6\u7279\u5f81\u5750\u6807<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u6ce8\u610f\u9700\u8981\u4f7f\u7528<strong>\u201c\u5199 CSV \u6587\u4ef6\u201d<\/strong>\u7ae0\u8282\u7684\u4ee3\u7801\u7528\u4e8e\u8f93\u51fa\u7ed3\u679c\u3002<\/p>\n<pre><code class=\"language-basic\">Sub Main\n    Dim app As Object\n    Set app = CreateObject(&quot;PCDLRN.Application&quot;)\n\n    Dim part As Object\n    Set part = app.ActivePartProgram\n\n    Dim cmds As Object\n    Set cmds = part.Commands\n\n    Dim i As Long\n    Dim cmd As Object\n    Dim featCmd As Object\n\n    &#039; \u58f0\u660e\u63a5\u6536\u5750\u6807\u7684\u53d8\u91cf\n    Dim x As Double, y As Double, z As Double\n\n    &#039; CSV \u6570\u636e\u7f13\u5b58\u6570\u7ec4\u4e0e\u8ba1\u6570\u5668\n    Dim dataLines() As String\n    Dim lineCount As Long\n    lineCount = 0\n\n    &#039; \u58f0\u660e\u5355\u884c\u5b57\u6bb5\u7f13\u5b58\u6570\u7ec4\n    Dim fields(0 To 6) As String\n\n    &#039; \u521d\u59cb\u5316 CSV \u8868\u5934 (\u7279\u5f81\u540d, \u6570\u636e\u7c7b\u578b, X, Y, Z)\n    ReDim Preserve dataLines(0 To lineCount) &#039; \u52a8\u6001\u8c03\u6574\u6570\u7ec4\u5927\u5c0f\u4e14\u4fdd\u7559\u6570\u636e\n    fields(0) = &quot;\u6807\u8bc6\u7b26&quot;\n    fields(1) = &quot;\u6570\u636e\u7c7b\u578b&quot;\n    fields(2) = &quot;X&quot;\n    fields(3) = &quot;Y&quot;\n    fields(4) = &quot;Z&quot;\n    dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n\n    &#039; \u5f00\u59cb\u904d\u5386\u5f53\u524d\u7a0b\u5e8f\u4e2d\u7684\u547d\u4ee4\n    For i = 1 To cmds.Count\n        Set cmd = cmds(i)\n        If cmd.IsFeature Then\n            fields(0) = cmd.ID\n\n            &#039; \u6293\u53d6\u7406\u8bba\u503c\n            fields(1) = &quot;THEO(\u7406\u8bba)&quot;\n            fields(2) = cmd.GetFieldValue(THEO_X, 0)\n            fields(3) = cmd.GetFieldValue(THEO_Y, 0)\n            fields(4) = cmd.GetFieldValue(THEO_Z, 0)\n            lineCount = lineCount + 1\n            ReDim Preserve dataLines(0 To lineCount)\n            dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n\n            &#039; \u6293\u53d6\u5b9e\u9645\u503c\n            fields(1) = &quot;MEAS(\u5b9e\u9645)&quot;\n            fields(2) = cmd.GetFieldValue(MEAS_X, 0)\n            fields(3) = cmd.GetFieldValue(MEAS_Y, 0)\n            fields(4) = cmd.GetFieldValue(MEAS_Z, 0)\n            lineCount = lineCount + 1\n            ReDim Preserve dataLines(0 To lineCount)\n            dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n\n            &#039; \u6293\u53d6\u76ee\u6807\u503c\n            fields(1) = &quot;TARG(\u76ee\u6807)&quot;\n            fields(2) = cmd.GetFieldValue(TARG_X, 0)\n            fields(3) = cmd.GetFieldValue(TARG_Y, 0)\n            fields(4) = cmd.GetFieldValue(TARG_Z, 0)\n            lineCount = lineCount + 1\n            ReDim Preserve dataLines(0 To lineCount)\n            dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n        End If\n    Next i\n\n    &#039; \u68c0\u67e5\u662f\u5426\u6709\u6709\u6548\u7279\u5f81\u6570\u636e\u88ab\u5f55\u5165\uff0c\u82e5\u6709\u5219\u4fdd\u5b58\u6587\u4ef6\n    If lineCount &gt; 0 Then\n        Dim isSuccess As Boolean\n        isSuccess = SaveCsv(&quot;C:\\Temp\\test.csv&quot;, dataLines, False)\n\n        If isSuccess Then\n            MsgBox &quot;\u6570\u636e\u5df2\u6210\u529f\u4fdd\u5b58\u81f3 C:\\Temp\\test.csv&quot;, 64, &quot;\u4fdd\u5b58\u6210\u529f&quot;\n        End If\n    Else\n        MsgBox &quot;\u672a\u5728\u5f53\u524d\u6d4b\u91cf\u7a0b\u5e8f\u4e2d\u627e\u5230\u4efb\u4f55\u7279\u5f81\u547d\u4ee4\u3002&quot;, 48, &quot;\u63d0\u793a&quot;\n    End If\n\n    &#039; \u8d44\u6e90\u91ca\u653e\n    Set cmd = Nothing\n    Set cmds = Nothing\n    Set part = Nothing\n    Set app = Nothing\nEnd Sub<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780844280595.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1393px; --smush-placeholder-aspect-ratio: 1393\/988;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%AF%BB%E5%8F%96%E5%B0%BA%E5%AF%B8\"><\/span>\u8bfb\u53d6\u5c3a\u5bf8<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5982\u679c\u52fe\u9009\u4e86<strong>\u4f7f\u7528\u4f20\u7edf\u8bc4\u4ef7\u65b9\u5f0f<\/strong>\uff0c\u8fd9\u79cd\u65b9\u5f0f\u7684\u5f62\u4f4d\u516c\u5dee\u8bc4\u4ef7\u4e5f\u88ab\u5f52\u7c7b\u5230\u5c3a\u5bf8\u91cc\uff0c\u53ef\u4ee5\u901a\u8fc7\u8fd9\u91cc\u8bfb\u53d6\u51fa\u6765\u3002<\/p>\n<p>\u6ce8\u610f\u9700\u8981\u4f7f\u7528<strong>\u201c\u5199 CSV \u6587\u4ef6\u201d<\/strong>\u7ae0\u8282\u7684\u4ee3\u7801\u7528\u4e8e\u8f93\u51fa\u7ed3\u679c\u3002<\/p>\n<pre><code class=\"language-basic\">Sub Main\n    Dim app As Object\n    Set app = CreateObject(&quot;PCDLRN.Application&quot;)\n\n    Dim part As Object\n    Set part = app.ActivePartProgram\n\n    Dim cmds As Object\n    Set cmds = part.Commands\n\n    Dim i As Long\n    Dim cmd As Object\n\n    &#039; CSV \u6570\u636e\u7f13\u5b58\u6570\u7ec4\u4e0e\u8ba1\u6570\u5668\n    Dim dataLines() As String\n    Dim lineCount As Long\n    lineCount = 0\n\n    &#039; \u68c0\u6d4b\u6570\u636e\u5b57\u6bb5\u7f13\u5b58\u6570\u7ec4\n    Dim fields(0 To 14) As String\n\n    &#039; \u521d\u59cb\u5316 CSV \u8868\u5934\uff08\u5b8c\u6574\u5448\u73b0\u6240\u6709\u68c0\u6d4b\u8981\u7d20\uff09\n    ReDim Preserve dataLines(0 To lineCount)\n    fields(0) = &quot;\u5e8f\u53f7&quot;\n    fields(1) = &quot;\u6807\u8bc6\u7b26&quot;\n    fields(2) = &quot;\u7279\u5f811&quot;\n    fields(3) = &quot;\u7279\u5f812&quot;\n    fields(4) = &quot;\u7279\u5f813&quot;\n    fields(5) = &quot;\u5934\u90e8\u4fe1\u606f&quot;\n    fields(6) = &quot;\u5355\u4f4d&quot;\n    fields(7) = &quot;\u8f74&quot;\n    fields(8) = &quot;\u7406\u8bba\u503c&quot;\n    fields(9) = &quot;\u4e0a\u6781\u9650\u504f\u5dee&quot;\n    fields(10) = &quot;\u4e0b\u6781\u9650\u504f\u5dee&quot;\n    fields(11) = &quot;\u5b9e\u6d4b\u503c&quot;\n    fields(12) = &quot;\u504f\u5dee\u503c&quot;\n    fields(13) = &quot;\u8d85\u5dee\u503c&quot;\n    fields(14) = &quot;\u5b9e\u4f53\u8865\u507f&quot;\n    dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n\n    &#039; \u5f00\u59cb\u904d\u5386\u5f53\u524d\u7a0b\u5e8f\u4e2d\u7684\u547d\u4ee4\n    For i = 1 To cmds.Count\n        Set cmd = cmds(i)\n\n        &#039; \u5224\u65ad\u5f53\u524d\u547d\u4ee4\u662f\u5426\u4e3a \u5c3a\u5bf8\u8bc4\u4ef7 (Dimension)\n        If cmd.IsDimension Then\n\n            &#039; \u6838\u5fc3\u4fee\u65392\uff1a\u83b7\u53d6\u5e95\u5c42 DimensionCommand \u5bf9\u8c61\u4ee5\u63d0\u53d6\u5173\u8054\u7279\u5f81\n            Dim dimObj As Object\n            Set dimObj = cmd.DimensionCommand\n\n            &#039; \u586b\u5145\u57fa\u7840\u6570\u636e\n            fields(0) = CStr(i)\n            fields(1) = cmd.ID\n\n            &#039; \u6838\u5fc3\u4fee\u65393\uff1a\u539f\u6c41\u539f\u5473\u540c\u6b65 Python \u4e2d\u7684\u7279\u5f81\u4e0e\u5934\u90e8\u6587\u672c\u6293\u53d6\uff08\u4e0d\u505a\u4efb\u4f55\u8fc7\u6ee4\u4e0e\u683c\u5f0f\u5316\uff09\n            fields(2) = dimObj.Feat1\n            fields(3) = dimObj.Feat2\n            fields(4) = dimObj.Feat3\n            fields(5) = CStr(cmd.GetFieldValue(DIM_HEADING, 0))\n\n            &#039; \u4fdd\u6301\u539f\u6709\u7684 GetFieldValue \u7eaf\u539f\u59cb\u6570\u636e\u63d0\u53d6\uff0c\u4e0d\u52a0\u4efb\u4f55 Format\n            fields(6) = CStr(cmd.GetFieldValue(UNIT_TYPE, 0))\n            fields(7) = CStr(cmd.GetFieldValue(AXIS, 0)) \n            fields(8) = CStr(cmd.GetFieldValue(NOMINAL, 0))\n            fields(9) = CStr(cmd.GetFieldValue(F_PLUS_TOL, 0))\n            fields(10) = CStr(cmd.GetFieldValue(F_MINUS_TOL, 0))\n            fields(11) = CStr(cmd.GetFieldValue(DIM_MEASURED, 0))\n            fields(12) = CStr(cmd.GetFieldValue(DIM_DEVIATION, 0))\n            fields(13) = CStr(cmd.GetFieldValue(DIM_OUTTOL, 0))\n            fields(14) = CStr(cmd.GetFieldValue(DIM_BONUS, 0))\n\n            &#039; \u538b\u5165\u52a8\u6001\u6570\u7ec4\n            lineCount = lineCount + 1\n            ReDim Preserve dataLines(0 To lineCount)\n            dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n\n            Set dimObj = Nothing\n        End If\n    Next i\n\n    &#039; \u68c0\u67e5\u5e76\u4fdd\u5b58\u6587\u4ef6\n    If lineCount &gt; 0 Then\n        Dim isSuccess As Boolean\n        &#039; \u5199\u5165\u76ee\u6807 CSV \u6587\u4ef6\n        isSuccess = SaveCsv(&quot;C:\\Temp\\test.csv&quot;, dataLines, False)\n\n        If isSuccess Then\n            MsgBox &quot;\u5c3a\u5bf8\u6570\u636e\u5df2\u6210\u529f\u4fdd\u5b58\u81f3 C:\\Temp\\test.csv&quot;, 64, &quot;\u4fdd\u5b58\u6210\u529f&quot;\n        End If\n    Else\n        MsgBox &quot;\u672a\u5728\u5f53\u524d\u6d4b\u91cf\u7a0b\u5e8f\u4e2d\u627e\u5230\u4efb\u4f55\u5c3a\u5bf8\u8bc4\u4ef7\u547d\u4ee4\u3002&quot;, 48, &quot;\u63d0\u793a&quot;\n    End If\n\n    &#039; \u8d44\u6e90\u91ca\u653e\n    Set cmd = Nothing\n    Set cmds = Nothing\n    Set part = Nothing\n    Set app = Nothing\nEnd Sub<\/code><\/pre>\n<p>\u53ef\u4ee5\u6ce8\u610f\u5230\u90e8\u5206\u662f\u65e0\u6548\u503c\uff0c\u5982\u7b2c 5 \u884c\uff0c\u8f74\u8bfb\u53d6\u7ed3\u679c\u4e3a FALSE\uff0c\u540e\u7eed\u7684\u6570\u636e\u5168\u4e3a 0\uff0c\u8fd9\u4e2a\u547d\u4ee4\u5e94\u8be5\u662f\u7528\u6765\u5305\u88f9\u201c\u4f4d\u7f6e\u201d\u7684\uff0c\u672c\u8eab\u65e0\u6709\u6548\u6570\u636e\uff0c\u540e\u7eed\u53ef\u4ee5\u6839\u636e\u8f74\u4e3a FALSE \u5176\u5b83\u503c\u4e3a 0 \u7684\u7279\u70b9\u6e05\u6d17\u6389\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780893284359.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1854px; --smush-placeholder-aspect-ratio: 1854\/374;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%AF%BB%E5%8F%96%E5%BD%A2%E4%BD%8D%E5%85%AC%E5%B7%AE%EF%BC%882021_%E7%89%88%E5%8F%8A%E4%BB%A5%E5%89%8D%EF%BC%89\"><\/span>\u8bfb\u53d6\u5f62\u4f4d\u516c\u5dee\uff082021 \u7248\u53ca\u4ee5\u524d\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5728 PC-DMIS 2021 \u53ca\u4ee5\u524d\uff0c\u8bfb\u53d6\u51e0\u4f55\u516c\u5dee\u4e5f\u662f\u7528 GetFieldValue \u6216 GetText\uff0c\u4e4b\u540e\u65b0\u589e\u4e86\u4e13\u95e8\u7684\u5bf9\u8c61\u6765\u8bbf\u95ee\u3002<br \/>\n\u6ce8\u610f\u9700\u8981\u4f7f\u7528<strong>\u201c\u5199 CSV \u6587\u4ef6\u201d<\/strong>\u7ae0\u8282\u7684\u4ee3\u7801\u7528\u4e8e\u8f93\u51fa\u7ed3\u679c\u3002<\/p>\n<pre><code class=\"language-basic\">Sub Main\n    Dim app As Object\n    Set app = CreateObject(&quot;PCDLRN.Application&quot;)\n\n    Dim part As Object\n    Set part = app.ActivePartProgram\n\n    Dim cmds As Object\n    Set cmds = part.Commands\n\n    Dim i As Long, j As Long\n    Dim cmd As Object\n\n    &#039; CSV \u6570\u636e\u7f13\u5b58\u6570\u7ec4\u4e0e\u8ba1\u6570\u5668\n    Dim dataLines() As String\n    Dim lineCount As Long\n    lineCount = 0\n\n    &#039; \u5bf9\u5e94 Python \u5b57\u5178\u7684 17 \u4e2a\u5b57\u6bb5 (0 To 16)\n    Dim fields(0 To 16) As String\n\n    &#039; \u521d\u59cb\u5316 CSV \u8868\u5934\n    ReDim Preserve dataLines(0 To lineCount)\n    fields(0) = &quot;\u5e8f\u53f7&quot;\n    fields(1) = &quot;\u6807\u8bc6\u7b26&quot;\n    fields(2) = &quot;\u5b50\u5e8f\u53f7&quot;\n    fields(3) = &quot;\u5b50\u6807\u8bc6\u7b26&quot;\n    fields(4) = &quot;\u76f8\u5173\u7279\u5f81&quot;\n    fields(5) = &quot;\u5355\u4f4d&quot;\n    fields(6) = &quot;\u5f62\u4f4d\u516c\u5dee\u7c7b\u578b&quot;\n    fields(7) = &quot;\u5f62\u4f4d\u516c\u5dee\u503c&quot;\n    fields(8) = &quot;\u8df3\u52a8\u7c7b\u578b&quot;\n    fields(9) = &quot;\u8f74&quot;\n    fields(10) = &quot;\u7406\u8bba\u503c&quot;\n    fields(11) = &quot;\u4e0a\u6781\u9650\u504f\u5dee&quot;\n    fields(12) = &quot;\u4e0b\u6781\u9650\u504f\u5dee&quot;\n    fields(13) = &quot;\u5b9e\u6d4b\u503c&quot;\n    fields(14) = &quot;\u504f\u5dee\u503c&quot;\n    fields(15) = &quot;\u8d85\u5dee\u503c&quot;\n    fields(16) = &quot;\u5b9e\u4f53\u8865\u507f&quot;\n    dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n\n    &#039; \u8bfb\u53d6\u8bbe\u7f6e\uff1a\u662f\u5426\u542f\u7528\u4e86\u8d1f\u516c\u5dee\u663e\u793a\u8d1f\u53f7\n    Dim showNegative As Boolean\n    showNegative = part.PartProgramSettings.MinusTolerancesShowNegative\n\n    &#039; \u58f0\u660e\u6bcf\u4e00\u5c42\u5faa\u73af\u7684\u884c\u6570\u8ba1\u6570\u5668\n    Dim countLine1 As Long, countLine2 As Long, countLine3 As Long\n    Dim tempMinus As Variant\n\n    &#039; \u5f00\u59cb\u904d\u5386\u5f53\u524d\u7a0b\u5e8f\u4e2d\u7684\u547d\u4ee4\n    For i = 1 To cmds.Count\n        Set cmd = cmds(i)\n\n        &#039; \u5224\u65ad\u5f53\u524d\u547d\u4ee4\u662f\u5426\u4e3a \u5f62\u4f4d\u516c\u5dee (FCF)\n        If cmd.IsFcfCommand Then\n            &#039; \u63d0\u53d6\u516c\u5171\u5b57\u6bb5\n            Dim cmdId As String, cmdUnit As String\n            cmdId = cmd.ID\n            cmdUnit = CStr(cmd.GetFieldValue(UNIT_TYPE, 0))\n\n            &#039; =================================================================\n            &#039; 1. LINE1 \u5faa\u73af\uff1a\u5f62\u4f4d\u516c\u5dee\u8bc4\u4ef7\u5bf9\u8c61\u81ea\u8eab\u7684\u5c3a\u5bf8\u4fe1\u606f\n            &#039; =================================================================\n            countLine1 = cmd.GetDataTypeCount(LINE1_MEAS)\n            For j = 1 To countLine1\n                fields(0) = CStr(i)\n                fields(1) = cmdId\n                fields(2) = CStr(j)\n                fields(3) = CStr(cmd.GetFieldValue(LINE1_TBLHDR, j))\n                fields(4) = CStr(cmd.GetFieldValue(LINE1_FEATNAME, j))\n                fields(5) = cmdUnit\n                fields(6) = &quot;&quot;\n                fields(7) = &quot;&quot;\n                fields(8) = &quot;&quot;\n                fields(9) = &quot;&quot;\n                fields(10) = CStr(cmd.GetFieldValue(LINE1_NOMINAL, j))\n                fields(11) = CStr(cmd.GetFieldValue(LINE1_PLUSTOL, j))\n\n                &#039; \u4e0b\u6781\u9650\u504f\u5dee\u5904\u7406\uff08\u8d1f\u516c\u5dee\u663e\u793a\u8d1f\u53f7\uff09\n                tempMinus = cmd.GetFieldValue(LINE1_MINUSTOL, j)\n                If IsNumeric(tempMinus) And Not showNegative Then\n                    fields(12) = CStr(-CDbl(tempMinus))\n                Else\n                    fields(12) = CStr(tempMinus)\n                End If\n\n                fields(13) = CStr(cmd.GetFieldValue(LINE1_MEAS, j))\n                fields(14) = CStr(cmd.GetFieldValue(LINE1_DEV, j))\n                fields(15) = CStr(cmd.GetFieldValue(LINE1_OUTTOL, j))\n                fields(16) = CStr(cmd.GetFieldValue(LINE1_BONUS, j))\n\n                &#039; \u538b\u5165\u6570\u7ec4\n                lineCount = lineCount + 1\n                ReDim Preserve dataLines(0 To lineCount)\n                dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n            Next j\n\n            &#039; =================================================================\n            &#039; 2. LINE2 \u5faa\u73af\uff1a\u6838\u5fc3\u51e0\u4f55\u516c\u5dee\u6570\u636e\n            &#039; =================================================================\n            countLine2 = cmd.GetDataTypeCount(LINE2_MEAS)\n            For j = 1 To countLine2\n                fields(0) = CStr(i)\n                fields(1) = cmdId\n                fields(2) = CStr(j)\n                fields(3) = CStr(cmd.GetFieldValue(LINE2_TBLHDR, j))\n                fields(4) = CStr(cmd.GetFieldValue(LINE2_FEATNAME, j))\n                fields(5) = cmdUnit\n                fields(6) = CStr(cmd.GetFieldValue(GDT_SYMBOL, 0))\n                fields(7) = CStr(cmd.GetFieldValue(LINE2_TOL, 0))\n                fields(8) = CStr(cmd.GetFieldValue(FCF_RUNOUT_TYPE, 0))\n                fields(9) = CStr(cmd.GetFieldValue(LINE2_AXIS, j))\n                fields(10) = CStr(cmd.GetFieldValue(LINE2_NOMINAL, j))\n                fields(11) = CStr(cmd.GetFieldValue(LINE2_PLUSTOL, j))\n                fields(12) = CStr(cmd.GetFieldValue(LINE2_MINUSTOL, j))\n                fields(13) = CStr(cmd.GetFieldValue(LINE2_MEAS, j))\n                fields(14) = CStr(cmd.GetFieldValue(LINE2_DEV, j))\n                fields(15) = CStr(cmd.GetFieldValue(LINE2_OUTTOL, j))\n                fields(16) = CStr(cmd.GetFieldValue(LINE2_BONUS, j))\n\n                &#039; \u538b\u5165\u6570\u7ec4\n                lineCount = lineCount + 1\n                ReDim Preserve dataLines(0 To lineCount)\n                dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n            Next j\n\n            &#039; =================================================================\n            &#039; 3. LINE3 \u5faa\u73af\uff1a\u590d\u5408\u5f62\u4f4d\u516c\u5dee\u6b21\u8981\u5206\u91cf\u6570\u636e\n            &#039; =================================================================\n            countLine3 = cmd.GetDataTypeCount(LINE3_MEAS)\n            For j = 1 To countLine3\n                fields(0) = CStr(i)\n                fields(1) = cmdId\n                fields(2) = CStr(j)\n                fields(3) = CStr(cmd.GetFieldValue(LINE3_TBLHDR, j))\n                fields(4) = CStr(cmd.GetFieldValue(LINE3_FEATNAME, j))\n                fields(5) = cmdUnit\n                fields(6) = &quot;&quot;\n                fields(7) = CStr(cmd.GetFieldValue(LINE3_TOL, 0))\n                fields(8) = &quot;&quot;\n                fields(9) = &quot;&quot;\n                fields(10) = CStr(cmd.GetFieldValue(LINE3_NOMINAL, j))\n                fields(11) = CStr(cmd.GetFieldValue(LINE3_PLUSTOL, j))\n                fields(12) = CStr(cmd.GetFieldValue(LINE3_MINUSTOL, j))\n                fields(13) = CStr(cmd.GetFieldValue(LINE3_MEAS, j))\n                fields(14) = CStr(cmd.GetFieldValue(LINE3_DEV, j))\n                fields(15) = CStr(cmd.GetFieldValue(LINE3_OUTTOL, j))\n                fields(16) = CStr(cmd.GetFieldValue(LINE3_BONUS, j))\n\n                &#039; \u538b\u5165\u6570\u7ec4\n                lineCount = lineCount + 1\n                ReDim Preserve dataLines(0 To lineCount)\n                dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n            Next j\n\n        End If\n    Next i\n\n    &#039; \u68c0\u67e5\u5e76\u4fdd\u5b58\u6587\u4ef6\n    If lineCount &gt; 0 Then\n        Dim isSuccess As Boolean\n        isSuccess = SaveCsv(&quot;C:\\Temp\\test.csv&quot;, dataLines, False)\n        If isSuccess Then\n            MsgBox &quot;\u5f62\u4f4d\u516c\u5dee\u6570\u636e\u5df2\u6210\u529f\u4fdd\u5b58\u81f3 C:\\Temp\\test.csv&quot;, 64, &quot;\u4fdd\u5b58\u6210\u529f&quot;\n        End If\n    Else\n        MsgBox &quot;\u672a\u5728\u5f53\u524d\u6d4b\u91cf\u7a0b\u5e8f\u4e2d\u627e\u5230\u4efb\u4f55\u5f62\u4f4d\u516c\u5dee(FCF)\u547d\u4ee4\u3002&quot;, 48, &quot;\u63d0\u793a&quot;\n    End If\n\n    &#039; \u8d44\u6e90\u91ca\u653e\n    Set cmd = Nothing\n    Set cmds = Nothing\n    Set part = Nothing\n    Set app = Nothing\nEnd Sub<\/code><\/pre>\n<p>\u6ce8\u610f\u8981\u50cf\u56fe\u4e2d\u62a5\u544a\u91cc\u6709\u5f62\u4f4d\u516c\u5dee\u7b26\u53f7\u7684\u8fd9\u79cd\u8bc4\u4ef7\u624d\u80fd\u7528\u8fd9\u91cc\u7684\u65b9\u6cd5\u8bfb\u53d6\uff0c\u5426\u5219\u4f7f\u7528\u4e0a\u9762\u7ae0\u8282\u8bfb\u53d6\u5c3a\u5bf8\u7684\u65b9\u6cd5\u8bfb\u53d6\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780926850056.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1447px; --smush-placeholder-aspect-ratio: 1447\/857;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%AF%BB%E5%8F%96%E5%87%A0%E4%BD%95%E5%85%AC%E5%B7%AE%EF%BC%882022_%E7%89%88%E5%8F%8A%E4%BB%A5%E5%90%8E%EF%BC%89\"><\/span>\u8bfb\u53d6\u51e0\u4f55\u516c\u5dee\uff082022 \u7248\u53ca\u4ee5\u540e\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4ece PC-DMIS 2022 \u7248\u5f00\u59cb\u5f15\u5165\u4e86 <strong>ToleranceCommand<\/strong> \u5bf9\u8c61\uff0c\u53ef\u4ee5\u901a\u8fc7\u5b83\u6765\u8bbf\u95ee\u51e0\u4f55\u516c\u5dee\u3002<br \/>\n\u6ce8\u610f\u9700\u8981\u4f7f\u7528<strong>\u201c\u5199 CSV \u6587\u4ef6\u201d<\/strong>\u7ae0\u8282\u7684\u4ee3\u7801\u7528\u4e8e\u8f93\u51fa\u7ed3\u679c\u3002<\/p>\n<p>\u6ce8\u610f\u8981\u50cf\u56fe\u4e2d\u62a5\u544a\u91cc\u6709\u5f62\u4f4d\u516c\u5dee\u7b26\u53f7\u7684\u8fd9\u79cd\u8bc4\u4ef7\u624d\u80fd\u7528\u8fd9\u91cc\u7684\u65b9\u6cd5\u8bfb\u53d6\uff0c\u5426\u5219\u4f7f\u7528\u4e0a\u9762\u7ae0\u8282\u8bfb\u53d6\u5c3a\u5bf8\u7684\u65b9\u6cd5\u8bfb\u53d6\u3002<\/p>\n<pre><code class=\"language-basic\">Sub Main\n    Dim app As Object\n    Set app = CreateObject(&quot;PCDLRN.Application&quot;)\n\n    Dim part As Object\n    Set part = app.ActivePartProgram\n\n    Dim cmds As Object\n    Set cmds = part.Commands\n\n    Dim i As Long, j As Long, k As Long\n    Dim cmd As Object\n\n    &#039; CSV \u6570\u636e\u7f13\u5b58\u6570\u7ec4\u4e0e\u8ba1\u6570\u5668\n    Dim dataLines() As String\n    Dim lineCount As Long\n    lineCount = 0\n\n    &#039; \u5b9a\u4e49 18 \u4e2a\u5b57\u6bb5\u7684\u62bd\u5c49 (0 To 17)\n    Dim fields(0 To 17) As String\n\n    &#039; \u521d\u59cb\u5316 CSV \u8868\u5934\uff0c\u660e\u786e\u533a\u5206\u6570\u636e\u7c7b\u578b\n    ReDim Preserve dataLines(0 To lineCount)\n    fields(0) = &quot;\u5e8f\u53f7&quot;\n    fields(1) = &quot;\u6807\u8bc6\u7b26&quot;\n    fields(2) = &quot;\u6570\u636e\u5f52\u7c7b&quot;\n    fields(3) = &quot;\u5b50\u5e8f\u53f7&quot;\n    fields(4) = &quot;\u533a\u6bb5\u53f7&quot;\n    fields(5) = &quot;\u7279\u5f81&quot;\n    fields(6) = &quot;\u8f74&quot;\n    fields(7) = &quot;\u5355\u4f4d&quot;\n    fields(8) = &quot;\u5f62\u4f4d\u7c7b\u578b&quot;\n    fields(9) = &quot;\u7406\u8bba\u503c&quot;\n    fields(10) = &quot;\u4e0a\u6781\u9650\u504f\u5dee&quot;\n    fields(11) = &quot;\u4e0b\u6781\u9650\u504f\u5dee&quot;\n    fields(12) = &quot;\u5b9e\u6d4b\u503c&quot;\n    fields(13) = &quot;\u504f\u5dee\u503c&quot;\n    fields(14) = &quot;\u8d85\u5dee\u503c&quot;\n    fields(15) = &quot;\u5b9e\u4f53\u8865\u507f&quot;\n    fields(16) = &quot;\u547d\u4ee4\u8be6\u60c5&quot;\n    dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n\n    &#039; \u8bfb\u53d6\u8bbe\u7f6e\uff1a\u662f\u5426\u542f\u7528\u4e86\u8d1f\u516c\u5dee\u663e\u793a\u8d1f\u53f7\n    Dim showNegative As Boolean\n    showNegative = part.PartProgramSettings.MinusTolerancesShowNegative\n\n    &#039; \u58f0\u660e\u65b0\u6a21\u578b\u4e13\u5c5e\u5bf9\u8c61\u4e0e\u4e34\u65f6\u53d8\u91cf\n    Dim tolCmd As Object\n    Dim cmdId As String, rUnits As String, gdtSym As String\n    Dim tempSizeMinus As Variant\n    Dim infoStr As String\n\n    &#039; \u5f00\u59cb\u904d\u5386\u5f53\u524d\u7a0b\u5e8f\u4e2d\u7684\u547d\u4ee4\n    For i = 1 To cmds.Count\n        Set cmd = cmds(i)\n\n        &#039; \u5224\u65ad\u662f\u5426\u5305\u542b\u5f3a\u7c7b\u578b\u51e0\u4f55\u516c\u5dee\u547d\u4ee4\n        If cmd.IsToleranceCommand Then\n            &#039; \u63d0\u53d6\u6838\u5fc3\u516c\u5dee\u63a7\u5236\u5bf9\u8c61\n            Set tolCmd = cmd.ToleranceCommand\n\n            cmdId = tolCmd.ID\n            rUnits = CStr(tolCmd.ReportUnits)\n            gdtSym = CStr(tolCmd.gdtSymbol)\n\n            &#039; \u5143\u6570\u636e\u770b\u677f\u5b58\u5165 CSV \u672b\u5c3e\u5217\n            infoStr = &quot;\u7279\u5f81\u6570:&quot; &amp; tolCmd.FeatureCount &amp; &quot; \u5c3a\u5bf8\u6570:&quot; &amp; tolCmd.sizeCountCombined &amp; &quot; \u533a\u6bb5\u6570:&quot; &amp; tolCmd.SegmentCount\n\n            &#039; =================================================================\n            &#039; 1. \u5c3a\u5bf8\u7ec4\u5408\u6570\u636e\u6bb5 \n            &#039; =================================================================\n            For j = 1 To tolCmd.sizeCountCombined\n                fields(0) = CStr(i)\n                fields(1) = cmdId\n                fields(2) = &quot;\u5c3a\u5bf8&quot;\n                fields(3) = CStr(j)\n                fields(4) = &quot;1&quot; &#039; \u5c3a\u5bf8\u5c5e\u4e8e\u57fa\u7840\u5c42\uff0c\u9ed8\u8ba4\u533a\u6bb5 1\n                fields(5) = CStr(tolCmd.sizeText(j))\n                fields(6) = CStr(tolCmd.SizeAxis(j))\n                fields(7) = rUnits\n                fields(8) = gdtSym\n                fields(9) = CStr(tolCmd.sizeNominal(j))\n                fields(10) = CStr(tolCmd.sizePlusTol(j))\n\n                &#039; \u5e94\u7528\u8d1f\u516c\u5dee\u663e\u793a\u8d1f\u53f7\u5f00\u5173\n                tempSizeMinus = tolCmd.sizeMinusTol(j)\n                If IsNumeric(tempSizeMinus) And Not showNegative Then\n                    fields(11) = CStr(-CDbl(tempSizeMinus))\n                Else\n                    fields(11) = CStr(tempSizeMinus)\n                End If\n\n                fields(12) = CStr(tolCmd.sizeMeasured(j))\n                fields(13) = CStr(tolCmd.sizeDeviation(j))\n                fields(14) = CStr(tolCmd.sizeOutOfTol(j))\n                fields(15) = &quot;&quot; &#039; \u5c3a\u5bf8\u5c42\u901a\u5e38\u65e0\u5b9e\u4f53\u8865\u507f\n                fields(16) = infoStr\n\n                &#039; \u538b\u5165\u6570\u7ec4\n                lineCount = lineCount + 1\n                ReDim Preserve dataLines(0 To lineCount)\n                dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n            Next j\n\n            &#039; =================================================================\n            &#039; 2. \u5916\u5c42\u5d4c\u5957\uff1a\u533a\u6bb5\u6570\u636e\u6bb5\n            &#039; =================================================================\n            For k = 1 To tolCmd.SegmentCount\n\n                &#039; 2a. \u57fa\u51c6\u5c3a\u5bf8\u6570\u636e\u6bb5\n                For j = 1 To tolCmd.datumSizeCount\n                    fields(0) = CStr(i)\n                    fields(1) = cmdId\n                    fields(2) = &quot;\u57fa\u51c6&quot;\n                    fields(3) = CStr(j)\n                    fields(4) = CStr(k)\n                    fields(5) = CStr(tolCmd.datumFosId(j))\n                    fields(6) = &quot;&quot;\n                    fields(7) = rUnits\n                    fields(8) = gdtSym\n                    fields(9) = CStr(tolCmd.datumFosNominal(j))\n                    fields(10) = CStr(tolCmd.datumFosPlusTol(j))\n                    fields(11) = CStr(tolCmd.datumFosMinusTol(j))\n                    fields(12) = CStr(tolCmd.datumFosMeasured(j))\n                    fields(13) = CStr(tolCmd.datumFosDeviation(j))\n                    fields(14) = CStr(tolCmd.datumFosOutTol(j))\n                    fields(15) = &quot;&quot;\n                    fields(16) = infoStr\n\n                    lineCount = lineCount + 1\n                    ReDim Preserve dataLines(0 To lineCount)\n                    dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n                Next j\n\n                &#039; 2b. \u4f4d\u7f6e\u51e0\u4f55\u516c\u5dee\u6570\u636e\u6bb5\n                For j = 1 To tolCmd.FeatureCount\n                    fields(0) = CStr(i)\n                    fields(1) = cmdId\n                    fields(2) = &quot;\u4f4d\u7f6e&quot;\n                    fields(3) = CStr(j)\n                    fields(4) = CStr(k)\n                    fields(5) = CStr(tolCmd.FeatureID(j))\n                    fields(6) = CStr(tolCmd.SegmentAxis(j))\n                    fields(7) = rUnits\n                    fields(8) = gdtSym\n\n                    &#039; \u53cc\u53c2\u6570 (k, j) \u591a\u533a\u6bb5\u4e8c\u7ef4\u5c5e\u6027\u8bfb\u53d6\n                    fields(9) = CStr(tolCmd.SegmentDimNominal(k, j))\n                    fields(10) = CStr(tolCmd.SegmentDimPlusTol(k, j))\n                    fields(11) = CStr(tolCmd.segmentDimMinusTol(k, j))\n                    fields(12) = CStr(tolCmd.SegmentDimMeasured(k, j))\n                    fields(13) = CStr(tolCmd.SegmentDimDeviation(k, j))\n                    fields(14) = CStr(tolCmd.SegmentDimOutTol(k, j))\n                    fields(15) = CStr(tolCmd.SegmentDimBonus(k, j))\n                    fields(16) = infoStr\n\n                    lineCount = lineCount + 1\n                    ReDim Preserve dataLines(0 To lineCount)\n                    dataLines(lineCount) = joinCsvRowFields(fields, &quot;,&quot;)\n                Next j\n\n            Next k\n\n            Set tolCmd = Nothing\n        End If\n    Next i\n\n    &#039; \u68c0\u67e5\u5e76\u4fdd\u5b58\u6587\u4ef6\n    If lineCount &gt; 0 Then\n        Dim isSuccess As Boolean\n        isSuccess = SaveCsv(&quot;C:\\Temp\\test.csv&quot;, dataLines, False)\n        If isSuccess Then\n            MsgBox &quot;2022\u65b0\u578b\u51e0\u4f55\u516c\u5dee\u6570\u636e\u5df2\u6210\u529f\u4fdd\u5b58\u81f3 C:\\Temp\\test.csv&quot;, 64, &quot;\u4fdd\u5b58\u6210\u529f&quot;\n        End If\n    Else\n        MsgBox &quot;\u672a\u5728\u5f53\u524d\u6d4b\u91cf\u7a0b\u5e8f\u4e2d\u627e\u5230\u4efb\u4f55\u65b0\u578b\u51e0\u4f55\u516c\u5dee(ToleranceCommand)\u547d\u4ee4\u3002&quot;, 48, &quot;\u63d0\u793a&quot;\n    End If\n\n    &#039; \u8d44\u6e90\u91ca\u653e\n    Set cmd = Nothing\n    Set cmds = Nothing\n    Set part = Nothing\n    Set app = Nothing\nEnd Sub<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2026\/06\/image-1780931173089.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1547px; --smush-placeholder-aspect-ratio: 1547\/1073;\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a00 2026\/6\/6 \u53bb\u5e74\u542f\u52a8\u4e86\u4e00\u4e2a\u9879\u76ee\uff0c\u7528\u7eaf Python \u5b9e\u73b0\u7684\uff0c\u7528\u4e8e\u81ea\u52a8\u5bfc\u51fa\u6d4b\u91cf\u6570\u636e\u5230 Excel\uff0c\u9879 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"zakra_page_container_layout":"customizer","zakra_page_sidebar_layout":"customizer","zakra_remove_content_margin":false,"zakra_sidebar":"customizer","zakra_transparent_header":"customizer","zakra_logo":0,"zakra_main_header_style":"default","zakra_menu_item_color":"","zakra_menu_item_hover_color":null,"zakra_menu_item_active_color":null,"zakra_menu_active_style":"","zakra_page_header":true,"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[1,2181,618,625],"tags":[2182,2185,1748,2186,2178,2187,1843,2184,2183],"class_list":["post-24885","post","type-post","status-publish","format-standard","hentry","category-all","category-basic","category-cad-cam","category-hexagon-pc-dmis","tag-basic","tag-csv","tag-pc-dmis","tag-2186","tag-2178","tag-2187","tag-1843","tag-2184","tag-2183"],"modified_by":"IYATT-yx","_links":{"self":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/24885","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=24885"}],"version-history":[{"count":35,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/24885\/revisions"}],"predecessor-version":[{"id":24963,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/24885\/revisions\/24963"}],"wp:attachment":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=24885"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24885"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24885"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}